当前位置:首页 » 操作系统 » linux删除函数

linux删除函数

发布时间: 2024-07-01 00:27:24

A. linux下remove删除函数删除文件,文件存在,调用后返回为0,文件却没有删除,求解

如果文件正在被使用的话,文件的真正删除是在你解除引用之后进行,但是不需要用户进行操作来干预了,文件一定会删除.
如果你想调用remove之后马上看到文件被删除,建议你判断是否被占用。或者使用system("rm -rf filename").

B. 鍒犻櫎鏂囦欢镄勬柟娉曟湁鍝浜

鍒犻櫎鏂囦欢镄勬柟娉曚富瑕佹湁浠ヤ笅鍑犵嶏细


1. 浣跨敤鏂囦欢绠$悊鍣ㄦ垨璧勬簮绠$悊鍣锛氩ぇ澶氭暟镎崭綔绯荤粺閮芥彁渚涗简鏂囦欢绠$悊鍣ㄦ垨璧勬簮绠$悊鍣ㄦ潵璁块梾鏂囦欢绯荤粺銆傚湪鏂囦欢绠$悊鍣ㄦ垨璧勬簮绠$悊鍣ㄧ殑鏂囦欢鍒楄〃涓锛屾垒鍒拌佸垹闄ょ殑鏂囦欢骞跺彸阌鍗曞嚮锛岄夋嫨“鍒犻櫎”鎴栦娇鐢ㄩ敭鐩桦揩鎹烽敭锛堥氩父鏄疌trl+D锛夋潵鍒犻櫎鏂囦欢銆


2. 浣跨敤锻戒护琛屽伐鍏凤细璁稿氭搷浣灭郴缁熸彁渚涗简锻戒护琛屽伐鍏锋潵绠$悊鏂囦欢銆傞氲繃鍦ㄥ懡浠ゆ彁绀虹︽垨缁堢绐楀彛涓杈揿叆阃傚綋镄勫懡浠わ纴鍙浠ュ垹闄ゆ枃浠躲备緥濡傦纴鍦╓indows涓婏纴鍙浠ヤ娇鐢“del”锻戒护锛涘湪Linux鍜宫acOS涓婏纴鍙浠ヤ娇鐢“rm”锻戒护銆


3. 浣跨敤缂栫▼璇瑷锛氱紪绋嬭瑷鎻愪緵浜嗗垹闄ゆ枃浠剁殑鍑芥暟鎴栨柟娉曘备緥濡傦纴鍦≒ython涓锛屽彲浠ヤ娇鐢╫s妯″潡镄剅emove()鍑芥暟𨱒ュ垹闄ゆ枃浠躲傚湪Java涓锛屽彲浠ヤ娇鐢‵ileDeleteHelper绫绘潵鍒犻櫎鏂囦欢銆


4. 浣跨敤绗涓夋柟宸ュ叿锛氭湁涓浜涚涓夋柟宸ュ叿鍙浠ュ府锷╃敤鎴锋洿鏂逛究鍦板垹闄ゆ枃浠躲备緥濡傦纴鍦╓indows涓婏纴鍙浠ヤ娇鐢“绮夌庢満”宸ュ叿𨱒ュ畨鍏ㄥ湴鍒犻櫎鏂囦欢锛岄伩鍏嶅洜璇镎崭綔钥屾棤娉曟仮澶嶆枃浠躲


闇瑕佹敞镒忕殑鏄锛屽垹闄ゆ枃浠舵槸涓椤规晱镒熺殑镎崭綔锛岃峰姟蹇呰皑鎱庢搷浣滐纴骞剁‘淇濇偍瑕佸垹闄ょ殑鏂囦欢鏄姝g‘镄勚傚湪镓ц屽垹闄ゆ搷浣滀箣鍓嶏纴链濂藉厛澶囦唤閲嶈佺殑鏂囦欢锛屼互阒蹭竾涓銆傛ゅ栵纴瀵逛簬绯荤粺鏂囦欢鎴栬蒋浠跺畨瑁呯▼搴忥纴阃氩父涓嶅缓璁闅忔剰鍒犻櫎锛屼互鍏嶅奖鍝岖郴缁熺殑绋冲畾镐у拰杞浠剁殑姝e父杩愯屻

C. linux 好用的命令

Linux运维人员必会的120个命令
跟老男孩学Linux运维:核心系统命令实战
前言
第1章 Linux命令行简介 / 1
1.1Linux命令行概述 / 1
1.2在Linux命令行下查看命令帮助 / 4
1.3Linux shutdown reboot halt / 9
关机:
shutdown -h now
halt
init 0

第2章 文件和目录操作命令 / 13
2.1pwd:显示当前所在的位置 / 13
2.2cd:切换目录 / 16
2.3tree:以树形结构显示目录下的内容 / 18
2.4mkdir:创建目录 / 22
2.5touch:创建空文件或改变文件的时间戳属性 / 27
2.6ls:显示目录下的内容及相关属性信息 / 30
2.7cp:复制文件或目录 / 39
2.8mv:移动或重命名文件 / 42
2.9rm:删除文件或目录 / 45
2.10rmdir:删除空目录 / 48
2.11ln:硬链接与软链接 / 49
2.12readlink:查看符号链接文件的内容 / 54
2.13find:查找目录下的文件 / 55
2.14xargs:将标准输入转换成命令行参数 / 68
2.15rename:重命名文件 / 71
2.16basename:显示文件名或目录名 / 72
2.17dirname:显示文件或目录路径 / 72
2.18chattr:改变文件的扩展属性 / 73
2.19lsattr:查看文件扩展属性 / 75
2.20file:显示文件的类型 / 76
2.21md5sum:计算和校验文件的MD5值 / 77
2.22chown:改变文件或目录的用户和用户组 / 80
2.23chmod:改变文件或目录权限 / 81
2.24chgrp:更改文件用户组 / 85
2.25umask:显示或设置权限掩码 / 86
2.26老男孩从新手成为技术大牛的心法 / 90
第3章 文件过滤及内容编辑处理命令 / 91
3.1cat:合并文件或查看文件内容 / 91
3.2tac:反向显示文件内容 / 103
3.3more:分页显示文件内容 / 104
3.4less:分页显示文件内容 / 107
3.5head:显示文件内容头部 / 109
3.6tail:显示文件内容尾部 / 111
3.7tailf:跟踪日志文件 / 114
3.8cut:从文本中提取一段文字并输出 / 115
3.9split:分割文件 / 117
3.10paste:合并文件 / 118
3.11sort:文本排序 / 123
3.12join:按两个文件的相同字段合并 / 127
3.13uniq:去除重复行 / 129
3.14wc:统计文件的行数、单词数或字节数 / 131
3.15iconv:转换文件的编码格式 / 133
3.16dos2unix:将DOS格式文件转换成UNIX格式 / 134
3.17diff:比较两个文件的不同 / 135
3.18vimdiff:可视化比较工具 / 138
3.19rev:反向输出文件内容 / 139
3.20tr:替换或删除字符 / 140
3.21od:按不同进制显示文件 / 143
3.22tee:多重定向 / 145
3.23vi/vim:纯文本编辑器 / 147
3.24老男孩逆袭思想:做Linux运维的多个好处 / 152
第4章 文本处理三剑客 / 153
4.1grep:文本过滤工具 / 153
4.2sed:字符流编辑器 / 159
4.3awk基础入门 / 165
第5章 Linux信息显示与搜索文件命令 / 176
5.1uname:显示系统信息 / 176
5.2hostname:显示或设置系统的主机名 / 178

5.3dmesg:系统启动异常诊断 / 179
5.4stat:显示文件或文件系统状态 / 181
5.5:统计磁盘空间使用情况 / 183
5.6date:显示与设置系统时间 / 186
5.7echo:显示一行文本 / 190
5.8watch:监视命令执行情况 / 193
5.9which:显示命令的全路径 / 195
5.10whereis:显示命令及其相关文件全路径 / 196
5.11locate:快速定位文件路径 / 197
5.12updatedb:更新mlocate数据库 / 199
5.13老男孩逆袭思想:新手在工作中如何问问题不会被鄙视 / 200
第6章 文件备份与压缩命令 / 201
6.1tar:打包备份 / 201
6.2gzip:压缩或解压文件 / 208
6.3zip:打包和压缩文件 / 211
6.4unzip:解压zip文件 / 212
6.5scp:远程文件复制 / 214
6.6rsync:文件同步工具 / 216
6.7老男孩逆袭思想:新手如何高效地提问 / 220
第7章 Linux用户管理及用户信息查询命令 / 222
7.1 useradd:创建用户 / 222
7.2usermod:修改用户信息 / 227
7.3userdel:删除用户 / 229
7.4groupadd:创建新的用户组 / 230
7.5groupdel:删除用户组 / 231
7.6passwd:修改用户密码 / 232
7.7chage:修改用户密码有效期 / 237
7.8chpasswd:批量更新用户密码 / 238
7.9su:切换用户 / 240
7.10visudo:编辑sudoers文件 / 242
7.11sudo:以另一个用户身份执行命令 / 244
7.12id:显示用户与用户组的信息 / 248
7.13w:显示已登录用户信息 / 249
7.14who:显示已登录用户信息 / 250
7.15users:显示已登录用户 / 252
7.16whoami:显示当前登录的用户名 / 253
7.17last:显示用户登录列表 / 253
7.18lastb:显示用户登录失败的记录 / 254
7.19lastlog:显示所有用户的最近登录记录 / 255
第8章 Linux磁盘与文件系统管理命令 / 257
8.1fdisk:磁盘分区工具 / 257
8.2partprobe:更新内核的硬盘分区表信息 / 265
8.3tune2fs:调整ext2/ext3/ext4文件系统参数 / 266
8.4parted:磁盘分区工具 / 268
8.5mkfs:创建Linux文件系统 / 272
8.6mpe2fs:导出ext2/ext3/ext4文件系统信息 / 274
8.7resize2fs:调整ext2/ext3/ext4文件系统大小 / 275
8.8fsck:检查并修复Linux文件系统 / 278
8.9dd:转换或复制文件 / 281
8.10mount:挂载文件系统 / 284
8.11umount:卸载文件系统 / 288
8.12df:报告文件系统磁盘空间的使用情况 / 289
8.13mkswap:创建交换分区 / 293
8.14swapon:激活交换分区 / 294
8.15swapoff:关闭交换分区 / 295
8.16sync:刷新文件系统缓冲区 / 296
第9章 Linux进程管理命令 / 298
9.1ps:查看进程 / 298
9.2pstree:显示进程状态树 / 305
9.3pgrep:查找匹配条件的进程 / 306
9.4kill:终止进程 / 307
9.5killall:通过进程名终止进程 / 310
9.6pkill:通过进程名终止进程 / 311
9.7top:实时显示系统中各个进程的资源占用状况 / 313
9.8nice:调整程序运行时的优先级 / 320
9.9renice:调整运行中的进程的优先级 / 323
9.10nohup:用户退出系统进程继续工作 / 324
9.11strace:跟踪进程的系统调用 / 325
9.12ltrace:跟踪进程调用库函数 / 332
9.13runlevel:输出当前运行级别 / 334
9.14init:初始化Linux进程 / 335
9.15service:管理系统服务 / 335
第10章 Linux网络管理命令 / 338
10.1ifconfig:配置或显示网络接口信息 / 338
10.2ifup:激活网络接口 / 343
ifup eth0
10.3ifdown:禁用网络接口 / 343
ifdown eth0
service network restart(/etc/init.d/network restart) 激活整个网络,所有网卡。
10.4route:显示或管理路由表 / 344
10.5arp:管理系统的arp缓存 / 350
10.6ip:网络配置工具 / 351
10.7netstat:查看网络状态 / 358
10.8ss:查看网络状态 / 362
10.9ping:测试主机之间网络的连通性 / 363
10.10traceroute:追踪数据传输路由状况 / 366
10.11arping:发送arp请求 / 367
10.12telnet:远程登录主机 / 369
10.13nc:多功能网络工具 / 370
10.14ssh:安全地远程登录主机 / 373
10.15wget:命令行下载工具 / 376
10.16mailq:显示邮件传输队列 / 379
10.17mail:发送和接收邮件 / 381
10.18nslookup:域名查询工具 / 386
10.19dig:域名查询工具 / 389
10.20host:域名查询工具 / 393
10.21nmap:网络探测工具和安全/端口扫描器 / 394
10.22tcpmp:监听网络流量 / 398
第11章 Linux系统管理命令 / 407
11.1lsof:查看进程打开的文件 / 407
11.2uptime:显示系统的运行时间及负载 / 411
11.3free:查看系统内存信息 / 411
11.4iftop:动态显示网络接口流量信息 / 413
11.5vmstat:虚拟内存统计 / 415
11.6mpstat:CPU信息统计 / 419
11.7iostat:I/O信息统计 / 420
11.8iotop:动态显示磁盘I/O统计信息 / 423
11.9sar:收集系统信息 / 425
11.10chkconfig:管理开机服务 / 430
11.11ntsysv:管理开机服务 / 433
11.12 setup:系统管理工具 / 434
11.13ethtool:查询网卡参数 / 436
11.14mii-tool:管理网络接口的状态 / 437
11.19rpm:RPM包管理器 / 443
11.20yum:自动化RPM包管理工具 / 446
top命令
第12章 Linux系统常用内置命令 / 450
12.1Linux内置命令概述 / 450
12.2Linux内置命令简介 / 450
12.3Linux常用内置命令实例 / 452

D. 嵌入式Linux上的C语言编程实践的目录

第一部分 基础知识
第1章 Linux环境下C语言的开发 2
1.1 Linux下的C语言开发环境 2
1.2 在Linux中使用C语言开发 3
1.2.1 开发流程和开发工具 3
1.2.2 Linux中程序的运行原理 4
第2章 嵌入式环境中的C语言开发 7
2.1 嵌入式C语言的开发环境 7
2.2 嵌入式开发中C语言编程要点 9
第二部分 Linux环境中
C语言的开发环境和工具
第3章 Linux的文本编辑工具VI 12
3.1 VI编辑器概述 12
3.1.1 VI简介 12
3.1.2 VI的工作模式和使用
3.1.2 之前的准备 12
3.1.3 进入和退出VI 13
3.2 VI的增强版VIM 16
3.3 VI编辑器的基本使用方法 17
3.3.1 在屏幕上移动光标 17
3.3.2 插入文本 20
3.3.3 删除文本 22
3.3.4 修改文本内容 25
3.3.5 替换文本内容 27
3.3.6 合并文本内容 30
3.3.7 移动文本内容 30
3.4 VI编辑器的命令和高级操作 32
3.4.1 VI常用命令的列表 32
3.4.2 VI的一些高级的操作和
3.1.2 使用技巧 35
第4章 GCC程序开发工具 39
4.1 GNU工具综述 39
4.2 GCC的编译和连接 43
4.2.1 工程示例 43
4.2.2 编译、汇编和连接 46
4.2.3 动态库 48
4.3 GCC的二进制工具 49
4.3.1 ar(归档工具) 49
4.3.2 readelf(读取ELF格式
3.1.2 文件信息) 51
4.3.3 strings(查看字符串) 54
4.3.4 nm(显示符号信息) 55
4.3.5 strip(删除符号) 57
4.3.6 objmp(显示目标
3.1.2 文件信息) 58
4.3.7 obj(复制目标文件) 63
第5章 make工程管理工具 67
5.1 make和Makefile 67
5.1.1 make机制概述 67
5.1.2 make和Makefile的使用 68
5.2 Makefile使用示例 69
5.2.1 简单的Makefile 69
5.2.2 Makefile中的依赖关系 71
5.2.3 Makefile中使用隐含规则
3.1.2 来编译程序 73
5.2.4 Makefile中指定依赖关系的
3.1.2 编译 76
5.3 自动生成Makefile 78
5.3.1 自动生成Makefile的意义和
3.1.2 相关工具 78
5.3.2 自动生成Makefile的流程 79
第6章 GDB调试工具 85
6.1 GDB简介 85
6.2 使用GDB调试程序 86
6.2.1 基本操作 88
6.2.2 查看命令 90
6.2.3 高级命令 92
6.2.4 attach命令的使用 94
6.3 远程GDB调试 95
6.3.1 本地GDB调试和远程GDB
3.1.2 调试的比较 95
6.3.2 远程GDB调试流程 97
6.3.3 远程GDB调试示例 98
第三部分 库函数
第7章 C语言标准库函数 106
7.1 ISO的C语言标准库函数
7.1 分类 106
7.2 标准格式化输入/输出类函数 107
7.2.1 scanf函数:格式化输入
3.1.2 字符串 107
7.2.2 printf函数:格式化输出
3.1.2 字符串 109
7.2.3 putchar函数:输出字符到
3.1.2 标准输出 111
7.2.4 getchar函数:从标准输入
3.1.2 获取字符 111
7.2.5 putc函数:向文件输出字符 112
7.2.6 getc函数:从文件输入字符 112
7.2.7 gets函数:获得字符串 112
7.2.8 puts函数:输出指定字符串 113
7.2.9 ungetc函数:把字符
3.1.2 写回流中 113
7.3 字符处理类函数 114
7.4 字符串处理及转换函数 116
7.4.1 sprintf函数:格式化输出
3.1.2 字符串到一个缓冲区 116
7.4.2 strcat和strncat函数:
3.1.2 字符串连接 119
7.4.3 strcpy和strncpy函数:
3.1.2 字符串复制 120
7.4.4 strcmp和strncmp函数:
3.1.2 字符串比较 121
7.4.5 strlen函数:获取字符串
3.1.2 长度 122
7.4.6 strchr和strrchr函数:字符/
3.1.2 字符串定位 122
7.4.7 strstr函数:字符串查找 123
7.4.8 strrev函数:字符串逆序 124
7.4.9 strupr和strlwr函数:字母
3.1.2 形式转换 125
7.4.10 strp和strnp函数:
3.1.2 字符串复制 125
7.4.11 memset函数:内存设置 126
7.4.12 memmove函数:内存移动 126
7.4.13 memcmp函数:内存比较 127
7.4.14 memcpy函数:内存复制 128
7.5 数学计算类函数 128
7.6 数据结构和算法类函数 133
7.6.1 bsearch函数:二元搜索 133
7.6.2 lfind函数:线性搜索 134
7.6.3 lsearch函数:线性搜索 135
7.6.4 qsort函数:利用快速排序法
3.1.2 排列数组 136
7.6.5 rand函数:产生随机数 136
7.6.6 srand函数:设置随机
3.1.2 数种子 137
7.7 文件I/O操作类相关函数 137
7.7.1 fopen函数:打开文件 138
7.7.2 fclose函数:关闭文件 139
7.7.3 fgetc函数:从文件中读取
3.1.2 一个字符 139
7.7.4 fputc函数:将一指定字符
3.1.2 写入文件流中 139
7.7.5 fgets函数:从文件中读取
3.1.2 一字符串 140
7.7.6 fputs函数:将一指定的
3.1.2 字符串写入文件内 140
7.7.7 rewind函数:重设文件流的
3.1.2 读写位置为文件开头 141
7.7.8 ftell函数:取得文件流的
3.1.2 读取位置 141
7.7.9 fseek函数:移动文件流的
3.1.2 读写位置 141
7.7.10 fwrite函数:将数据写至
7.7.10 文件流 142
7.7.11 fread函数:从文件流读取
7.7.10 数据 142
7.7.12 remove函数:删除文件 143
7.7.13 rename函数:更改文件
7.7.10 名称或位置 143
7.7.14 freopen函数:重新打开
7.7.10 文件 144
7.7.15 fflush函数:同步缓冲区 144
7.7.16 fgetpos函数:获得文件
7.7.10 位置 145
7.7.17 fsetpos函数:设置文件
7.7.10 位置 145
7.7.18 mktemp函数:建立临时
7.7.10 文件 146
7.7.19 tmpfile函数:临时文件 146
7.7.20 tmpnam:得到临时文件名 147
7.8 日期时间类函数 147
7.8.1 clock函数:获得CPU时间 148
7.8.2 time函数:获得当前日历
7.8.2 时间 148
7.8.3 difftime函数:获得时间
7.8.2 差值 148
7.8.4 gmtime函数:将日历时间
7.8.2 转换成UTC时间 149
7.8.5 mktime函数:将UTC时间
7.8.2 转换成日历时间 149
7.8.6 asctime函数:将UTC时间
7.8.2 转换成字符串 149
7.8.7 ctime函数:将日历时间转换
7.8.2 成当地时间的字符串 150
7.8.8 localtime函数:将日历时间
7.8.2 转换成本地时间 150
7.8.9 strftime函数:转换日期和
7.8.2 时间格式 151
7.9 国际化和本地化函数 152
7.9.1 setlocale函数:本地化控制
7.8.2 函数 153
7.9.2 localeconv函数:本地化
7.8.2 转换 154
7.10 错误处理类函数 155
7.10.1 clearerr函数:清除流中的
7.10.1 结束指示符和错误指示符 155
7.10.2 feof函数:指示文件结束 155
7.10.3 ferror函数:指示文件出错 156
7.10.4 perror函数:输出出错信息 156
7.10.5 errno函数:错误编号记录 156
7.11 其他一些工具函数 157
7.11.1 assert函数:程序诊断 157
7.11.2 长跳转函数 157
7.11.3 可变长的参数控制函数 160
7.11.4 获取结构体成员函数
7.10.1 (宏) 161
7.12 一些标准库中有用的宏 161
第8章 Linux中C语言的扩展库
函数 163
8.1 文件I/O操作函数 163
8.1.1 open函数:打开文件 163
8.1.2 close函数:关闭文件 164
8.1.3 read函数:读文件 165
8.1.4 write函数:写文件 165
8.1.5 lseek函数:文件定位 167
8.1.6 ioctl函数:文件控制 167
8.1.7 flock函数:锁定文件 167
8.1.8 mmap函数和munmap函数:
8.1.8 内存映射 168
8.1.9 create函数:创建新文件 170
8.1.10 p函数和p2函数:
8.1.10 复制文件描述符 171
8.1.11 fcntl函数:改变已打开的
8.1.10 文件的属性 171
8.2 文件权限相关的操作函数 172
8.2.1 access函数:判断是否
8.2.1 具有存取文件的权限 172
8.2.2 chown函数和fchown函数:
8.2.1 改变文件的所有者 173
8.2.3 chmod函数和fchmod函数:
8.2.1 改变权限 173
8.2.4 unlink函数:删除文件 173
8.2.5 utime函数和utimes函数:
8.2.1 改变文件时间 174
8.2.6 umask函数:设置建立
8.2.1 新文件时的权限掩码 175
8.2.7 link函数:建立文件连接 175
8.2.8 stat函数、fstat函数和lstat
8.2.1 函数:获取文件信息 175
8.3 用户组操作函数 176
8.3.1 getgid函数和setgid函数:
8.2.1 获得/设置组识别码 176
8.3.2 getegid函数和setegid函数:
8.2.1 获得/设置有效的组识别码 177
8.3.3 getuid函数和setuid函数:
8.2.1 获得/设置真实的用户识别码 177
8.3.4 geteuid函数和seteuid函数:
8.2.1 获得/设置有效的用户识别码 178
8.3.5 getgroups函数和setgroups
8.2.1 函数:获得/设置组代码 178
8.4 信号类函数 179
8.4.1 kill函数:传送信号给指定的
8.2.1 进程 181
8.4.2 raise函数:信号发送函数 181
8.4.3 alarm函数:设置超时函数 182
8.4.4 signal函数:信号安装函数 182
8.5 进程处理函数 183
8.5.1 getpid函数和getppid函数:
8.2.1 获得进程ID和父进程ID 183
8.5.2 fork函数:建立子进程 183
8.5.3 sleep函数和usleep函数:
8.2.1 让进程暂停执行一段时间 185
8.5.4 exec函数族:找到可执行
8.2.1 文件 185
8.5.5 _ exit函数和_Exit函数:
8.2.1 结束进程执行 188
第四部分 C语言高级编程
第9章 动态内存的堆与栈 190
9.1 程序内存区域的使用 190
9.1.1 静态内存与动态内存 190
9.1.2 C语言中的动态内存 191
9.2 C程序中栈空间的使用 196
9.2.1 参数使用栈空间 196
9.2.2 自动变量使用栈空间 199
9.2.3 程序中较大的栈 201
9.2.4 栈空间的特性 202
9.3 C程序中的堆空间使用 203
9.3.1 分配和释放堆内存的库函数 203
9.3.2 库函数使用 204
9.3.3 堆内存的特性 218
9.4 堆内存和栈内存使用的比较 222
9.4.1 利用返回值传递信息 222
9.4.2 利用参数传递信息 226
9.4.3 堆与栈内存管理的区别 231
第10章 函数指针的使用 232
10.1 函数指针的概念 232
10.1.1 C语言函数的本质 232
10.1.2 函数指针在C语言中的
10.1.2 意义 234
10.2 函数指针的使用 237
10.2.1 函数指针使用初步 237
10.2.2 函数指针的类型定义 240
10.2.3 函数指针作为结构体成员 242
10.2.4 函数指针作为函数的参数 243
10.2.5 函数指针作为函数的
10.2.5 返回值 244
10.2.6 函数指针数组 246
10.3 函数指针使用示例 248
第11章 回调函数的使用 252
11.1 回调函数的概念与作用 252
11.1.1 程序调用的方式 252
11.1.2 回调函数的作用 254
11.2 回调函数的语法 254
11.2.1 简单的回调函数 254
11.2.2 完全角式的回调函数 256
11.3 回调函数的使用 259
11.3.1 qsort中的回调函数 259
11.3.2 atexit和on_exit函数的
10.2.5 注册退出函数 263
第12章 C语言实现对象编程 268
12.1 C语言实现基于对象编程的
12.1 概念与作用 268
12.2 C语言基于对象编程实现
12.1 封装 269
12.2.1 简单的程序示例 269
12.2.2 C语言基于对象编程的
10.2.5 详解 272
12.2.3 C语言基于对象编程与
10.2.5 C++面向对象编程的对比 275
12.3 C语言基于对象编程实现
12.3 部分继承功能 278
12.3.1 利用数据结构的包含实现
10.2.5 继承功能 279
12.3.2 利用私有指针实现继承
10.2.5 功能 282
12.3.3 C语言实现继承的总结 287
12.4 C语言基于对象编程实现
12.4 部分多态功能 288
12.4.1 利用操作指针组的包含
10.2.5 实现多态功能 288
12.4.2 C语言实现多态功能的总结 292
12.5 对C语言实现基于对象
12.5 编程的思考 292
12.5.1 C语言基于对象编程的
10.2.5 特性 292
12.5.2 C语言基于对象编程中接口、
10.2.5 实现和调用者的关系 293
第五部分 在嵌入式
环境下的C语言编程
第13章 C语言程序的内存布局 295
13.1 C语言程序的存储区域 295
13.2 C语言程序的段 297
13.2.1 段的分类 297
13.2.2 程序中段的使用 298
13.3 可执行程序的连接 301
13.3.1 可执行程序的组成 301
13.3.2 各个目标文件的关系 303
13.3.3 连接错误示例 304
13.4 C语言程序的运行 309
13.4.1 RAM调试运行 311
13.4.2 固化程序的XIP运行 312
13.4.3 固化程序的加载运行 313
13.4.4 C语言程序的运行总结 315
第14章 嵌入式C语言常用语法 317
14.1 内存指针操作 317
14.1.1 内存操作的意义 317
14.1.2 使用指针操作内存 319
14.1.3 volatile的使用 324
14.1.4 嵌入式系统指针的实际
10.2.5 应用 325
14.2 位操作 327
14.2.1 位操作的意义 327
14.2.2 位操作的语法 328
14.3 大小端与对齐问题 330
14.3.1 大小端问题 331
14.3.2 内存对齐问题 335
14.3.3 结构体成员的对齐问题 338
14.4 程序的跳转 344
14.4.1 嵌入式系统程序跳转的
10.2.5 类型 344
14.4.2 C语言中实现程序的跳转 345
第15章 嵌入式C语言编程的技巧 348
15.1 程序的优化技巧 348
15.1.1 循环缓冲区 348
15.1.2 查表法 350
15.1.3 针对循环执行效率的
10.2.5 优化 353
15.2 关于小数运算 355
15.3 函数参数和返回值的传递 357
15.4 变量的初始化技巧 360
15.4.1 数组的初始化 360
15.4.2 结构体的初始化 362
15.4.3 变量的初始化总结 362
15.5 程序的调试和宏使用的技巧 363
15.5.1 打印文件、函数和程序行 363
15.5.2 #:字符串化操作符 364
15.5.3 ##:连接操作符 366
15.5.4 调试宏的第一种定义方式 367
15.5.5 调试宏的第二种定义方式 368
15.5.6 对调试语句进行分级审查 369
15.5.7 条件编译调试语句 370
15.5.8 使用do…while的宏定义 372
15.6 代码剖析 373
参考文献 378

E. Linux C函数实例速查手册的目录

第1章 初级I/O函数
1.1 close函数:关闭已经打开的文件
1.2 creat函数:创建一个文件
1.3 p函数:复制文件描述符
1.4 p2函数:复制文件描述符到指定的位置
1.5 fcntl函数:改变文件的状态
1.6 fsync函数:将缓冲区数据回写到磁盘文件
1.7 Lseek函数:移动文件的读写位置
1.8 open函数:打开一个文件
1.9 read函数:读取文件的数据
1.10 sync函数:将所有打开的文件写回磁盘
1.11 write函数:输出内容到文件
第2章 文件管理操作函数
2.1 access函数:判断进程是否具有访问文件的权限
2.2 alphasort函数:按照字母顺序排序目录结构
2.3 chdir函数:改变当前的工作目录
2.4 chmod函数:改变文件的权限
2.5 chown函数:改变文件的所有者
2.6 chroot函数:改变进程的根目录
2.7 closedir函数:关闭目录文件
2.8 fchdir函数:使用文件描述符改变当前的工作目录
2.9 fchmod函数:改变一个已经打开的文件的权限
2.10 fstat函数:得到一个打开文件的状态
2.11 truncate函数:改变一个打开文件的大小
2.12 ftw函数:遍历目录树
2.13 get_current_dir_name函数:取得当前的工作目录
2.14 getcwd函数:取得进程的当前工作目录
2.15 lchown函数:改变符号链接文件的拥有者
2.16 link函数:建立一个硬链接
2.17 lstat函数:得到符号链接的文件状态
2.18 nftw函数:遍历目录树
2.19 opendir函数:打开目录文件
2.20 readdir函数:读取目录文件的内容
2.21 readlink函数:读取符号链接文件本身的内容
2.22 realpath函数:将相对目录路径转换成绝对路径
2.23 remove函数:删除文件或者目录
2.24 rename函数:更改文件的名称或位置
2.25 rewinddir函数:回卷目录文件
2.26 seekdir函数:文件定位函数
2.27 stat函数:取得文件状态
2.28 symlink函数:创建一个符号链接
2.29 telldir函数:取得目录文件的读取位置
2.30 truncate函数:改变文件大小
2.31 umask:设置创建文件时使用的权限掩码
2.32 unlink函数:删除文件的一个硬链接
第3章 标准I/O函数
3.1 clearerr函数:清除错误标志
3.2 fclose函数:关闭流文件描述符
3.3 fdopen函数:转换文件描述符到文件指针
3.4 feof函数:文件结束判断函数
3.5 fflush函数:刷新流文件读写缓存
3.6 fgetc函数:从流文件中读取一个字符
3.7 fgetpos函数:返回流文件当前读写位置
3.8 fgets函数:从流文件中读出一行数据
3.9 fileno函数:获得流文件的文件描述符
3.10 fopen函数:打开文件
3.11 fputc函数:将字符写入流文件
3.12 fputs函数:将字符串写入流文件
3.13 fread函数:从流文件中读出数据
3.14 freopen函数:打开文件
3.15 fseek函数:移动流文件的读写位置
3.16 fsetpos函数:设置流文件当前读写位置
3.17 ftell函数:得到流文件的读取位置
3.18 fwrite函数:向流文件中写入数据
3.19 getc函数:从文件中读出一个字符
3.20 getchar函数:从标准输入中读入一个字符
3.21 gets函数:从标准输入中读入一行数据
3.22 mktemp函数:产生临时文件的文件名
3.23 putc函数:将字符写入文件
3.24 putchar函数:将字符输出到标准输出中
3.25 puts函数:将字符串输出在标准输出中
3.26 rewind函数:将流文件的读写位置移动到文件的起始位置
3.27 setbuf函数:设置文件缓冲区
3.28 setbuffer函数:设置文件缓冲区
3.29 setlinebuf函数:设置行缓冲模式
3.30 setvbuf函数:设置自定义文件缓冲区
3.31 tmpfile函数:建立临时的二进制文件
3.32 ungetc函数:将字符写回文件
第4章 格式化输入输出函数
4.1 fprintf函数:格式化输出到文件
4.2 fscanf函数:格式化从文件中读出数据
4.3 printf函数:格式化输出
4.4 scanf函数:格式化输入
4.5 snprintf函数:格式化字符输入
4.6 sprintf函数:格式化字符串打印
4.7 sscanf函数:格式化字符串取值
4.8 vfprintf函数:可变参数输出函数
4.9 vfscanf函数:格式化输入
4.10 vprintf函数:格式化输出函数
4.11 vscanf函数:格式化输入函数
4.12 vsnprintf函数:格式化字符串复制
4.13 vsprintf函数:格式化字符串复制
4.14 vsscanf函数:格式化字符输入
第5章 进程控制
5.1 abort函数:进程异常终止函数
5.2 atexit函数:进程终止处理函数
5.3 execl函数:执行文件函数
5.4 execle函数:执行文件的函数
5.5 execlp函数:从PATH环境变量中查找文件并执行
5.6 execv函数:执行文件
5.7 execve函数:执行文件
5.8 execvp函数:执行文件
5.9 exit函数:结束进程运行的函数
5.10 _exit函数:结束进程运行的函数
5.11 fork函数:建立一个新的进程
5.12 getgid函数:取得实际进程组ID
5.13 getegid函数:取得有效进程组ID
5.14 getpid函数:取得有效组ID
5.15 getppid函数:取得父进程的进程识别码
5.16 getpriority函数:取得进程执行优先级
5.17 longjmp函数:跳到原先setjmp存储的堆栈环境
5.18 on_exit函数:设置程序正常结束前调用的函数
5.19 setjmp函数:存储当前堆栈环境
5.20 setgid函数:设置进程的进程组ID
5.21 setuid函数:设置进程组ID
5.22 setpriority函数:设置程序进程优先级
5.23 siglongjmp函数:跳到原先sigset jmp存储的堆栈环境
5.24 sigsetjmp函数:存储当前堆栈环境和屏蔽的信号集
5.25 system函数:执行Shell命令
5.26 vfork函数:建立一个新的进程
5.27 wait函数:等待子进程中断或结束
5.28 waitpid函数:等待子进程中断或结束
5.29 wait3函数:等待进程结束并且输出子进程统计信息
第6章 进程间通信函数
6.1 ftok函数:获得项目相关的IPC键值
6.2 msgctl函数:消息队列操作函数
6.3 msgget函数:创建或打开消息队列
6.4 msgrcv函数:读取消息队列
6.5 msgsnd函数:向消息队列中写入消息
6.6 semctl函数:信号量操作函数
6.7 semget函数:创建或打开信号量
6.8 semop函数:释放或获取信号量
6.9 shmat函数:导入共享内存
6.10 shmctl函数:共享内存操作函数
6.11 shmdt函数:将共享内存从程序中脱离
6.12 shmget函数:创建共享内存
6.13 mkfifo函数:创建fifo管道函数
6.14 pclose函数:关闭管道文件
6.15 pipe函数:创建匿名管道
6.16 popen函数:创建管道文件
第7章 信号函数
7.1 alarm函数:内核定时器函数
7.2 kill函数:信号发送函数
7.3 pause函数:进程暂停执行函数
7.4 raise函数:向进程自身发送信号函数
7.5 sigaction函数:高级信号处理方式设置函数
7.6 sigaddset函数:添加信号到信号集函数
7.7 sigdelset函数:删除信号集中对应信号函数
7.8 sigemptyset函数:清空信号集函数
7.9 sigfillset函数:填充信号集函数
7.10 sigismember函数:测试某个信号是否在信号集中
7.11 signal函数:信号处理方式设置函数
7.12 sigpause函数:暂停进程直到信号到来
7.13 sigpending函数:查询未决信号
7.14 sigprocmask函数:信号屏蔽函数
7.15 sigsuspend函数:暂停直到信号到来
7.16 sleep函数:让进程休眠一段时间
第8章 用户、组函数及环境变量函数
8.1 clearenv函数:删除所有环境变量的值
8.2 cuserid函数:获得用户名函数
8.3 endgrent函数:关闭系统组文件函数
8.4 endpwent函数:关闭系统口令函数
8.5 entent函数:关闭utmp文件
8.6 fgetgrent函数:从文件中读取组数据
8.7 fgetpwent函数:从文件中读取密码格式数据
8.8 getegid函数:获得有效(effective gid)组识别符
8.9 getenv函数:取得环境变量的值
8.10 geteuid函数:获得有效(effective uid)用户识别符
8.11 getgid函数:获得组识别符
8.12 getgrent函数:从文件/etc/group中读取组信息
8.13 getgrgid函数:从文件/etc/group中查找组信息
8.14 getgrnam函数:从文件/etc/group中查找组信息
8.15 getgroups函数:返回当前用户所属的组列表
8.16 getlogin函数:获取当前用户的账号名称
8.17 getpw函数:获取指定uid的用户信息
8.18 getpwent函数:读取/etc/passwd文件中的数据
8.19 getpwnam函数:以用户名获取用户信息
8.20 getpwuid函数:以用户ID获取用户信息
8.21 getuid函数:获取当前进程所属的用户ID
8.22 getutent函数:获取登录信息
8.23 getutid函数:获取指定用户ID的登录信息
8.24 getutline函数:查找指定的登录信息
8.25 initgroups函数:初始化组信息
8.26 logwtmp函数:添加登录记录信息
8.27 putenv函数:改变环境变量的值
8.28 pututline函数:添加登录信息
8.29 setegid函数:设置有效组ID
8.30 setenv函数:改变环境变量的值
8.31 seteuid函数:设置有效用户ID
8.32 setfsgid函数:设置进程的文件系统的组ID
8.33 setfsuid函数:设置进程的文件系统的用户ID
8.34 setgid函数:设置进程的组ID
8.35 setgrent函数:将文件etc/group的读写位置移动到起始位置
8.36 setgroups函数:设置当前进程的组识别符
8.37 setpwent函数:将文件etc/passwd的读写位置移动到起始位置
8.38 setregid函数:设置当前进程的真实以及有效组ID
8.39 setreuid函数:设置当前进程的真实以及有效用户ID
8.40 setuid函数:设置进程的用户ID
8.41 setutent函数:将文件utmp的读写位置移动到起始位置
8.42 unsetenv函数:清除环境变量的值
8.43 updwtmp函数:将登录数据记录写入utmp文件
8.44 utmpname函数:设置文件utmp的绝对位置
第9章 错误处理与内存分配函数
9.1 brk函数:改变数据段大小
9.2 calloc函数:内存分配函数
9.3 ferror函数:文件错误判断
9.4 free函数:释放动态分配内存函数
9.5 getpagesize函数:获得操作系统内存页大小函数
9.6 malloc函数:动态内存分配函数
9.7 mmap函数:文件映射函数
9.8 munmap函数:释放映射的内存地址
9.9 perror函数:错误原因输出函数
9.10 realloc函数:内存截取函数
9.11 sbrk函数:增加数据空间
9.12 strerror函数:错误代码查询
第10章 日志函数、动态函数与正则表达式函数
10.1 closelog函数:关闭信息记录
10.2 dlclose函数:关闭动态库文件
10.3 dlerror函数:动态函数出错处理
10.4 dlopen函数:打开动态库文件
10.5 dlsym函数:在动态库文件中查找函数
10.6 openlog函数:打开记录信息
10.7 regcomp函数:编译正则表达式
10.8 regerror函数:编译错误判断函数
10.9 regexec函数:执行正则匹配
10.10 regfree函数:释放正则模式串资源
10.11 syslog函数:输出记录信息
第11章 时间函数
11.1 asctime函数:字符串时间操作函数
11.2 clock函数:计算运行时间函数
11.3 ctime函数:字符串时间函数
11.4 difftime函数:计算时间差函数
11.5 ftime函数:取得系统时间
11.6 gettimeofday函数:取得系统当前时间
11.7 gmtime函数:日历时间格式函数
11.8 localtime函数:获得当前系统时间
11.9 mktime函数:系统时间转换函数
11.10 settimeofday函数:系统时间设置函数
11.11 strftime函数:时间格式化输出函数
11.12 time函数:获得系统当前时间
11.13 tzset函数:设置系统时区变量tzname
第12章 socket相关函数
12.1 accept函数:处理socket请求函数
12.2 bind函数:将socket描述符与一个套接口绑定
12.3 connect函数:与远程主机连接
12.4 endprotoent函数:结束网络协议的读取函数
12.5 endservent函数:关闭文件/etc/services
12.6 gethostbyaddr函数:由IP获得主机信息
12.7 gethostbyname函数:由主机名获得主机信息
12.8 getprotobyname函数:由协议名获取协议数据
12.9 getprotobynumber函数:由协议编号获取协议数据
12.10 getprotoent函数:读取文件/etc/rotoent中的网络协议数据
12.11 getservbyname函数:获得网络服务协议数据
12.12 getservbyport函数:获得网络服务协议数据
12.13 getservent函数:读取主机网络服务数据
12.14 getsockopt函数:获得指定socket描述符的状态
12.15 herror函数:错误原因输出函数
12.16 hstrerror函数:错误代码查询
12.17 htonl函数:地址字节顺序转换
12.18 htons函数:地址字节顺序转换
12.19 inet_addr函数:网络地址类型转换
12.20 inet_aton函数:网络地址类型转换
12.21 inet_ntoa函数:网络地址类型转换
12.22 listen函数:网络socket监听
12.23 ntohl函数:地址字节顺序转换
12.24 ntohs函数:地址字节顺序转换
12.25 recv函数:接收消息
12.26 recvfrom函数:接收消息
12.27 recvmsg函数:多缓冲读取数据
12.28 send函数:向远程主机发送数据
12.29 sendto函数:发送数据到远程主机
12.30 setprotoent函数:打开网络协议文件
12.31 setservent函数:打开网络服务文件
12.32 setsockopt函数:设置socket描述符的状态
12.33 shutdown函数:结束socket套接字
12.34 socket函数:创建网络套接字
第13章 字符测试函数
13.1 isalnum函数:判断字符是否为英文字母或数字
13.2 isalpha函数:判断字符是否为英文字母
13.3 isascii函数:判断字符是否为ASCII字符
13.4 isblank函数:判断字符是否为空白字符
13.5 iscntrl函数:判断字符是否为ASCII的控制字符
13.6 isdigit函数:判断字符是否为阿拉伯数字
13.7 isgraph函数:判断字符是否为可打印字符
13.8 islower函数:判断字符是否为小写英文字母
13.9 isprint函数:判断字符是否为可打印字符
13.10 isspace函数:判断字符是否为空格字符
13.11 ispunct函数:判断字符是否为标点符号
13.12 isupper函数:判断字符是否为大写英文字母
13.13 isxdigit函数:判断字符是否为十六进制数字
第14章 数据转换函数
14.1 atof函数:将字符串转换成浮点数
14.2 atoi函数:将字符串转换成整数
14.3 atol函数:将字符串转换成长整数
14.4 ecvt函数:将浮点数转换成字符串
14.5 fcvt函数:将浮点数转换成字符串
14.6 gcvt函数:将浮点数转换成字符串
14.7 strtod函数:将字符串转换成浮点数
14.8 strtol函数:将字符串转换成长整数
14.9 strtoul函数:将字符串转换成无符号长整数
14.10 toascii函数:将整数转换成合法的ASCII字符
14.11 tolower函数:将大写字母转换成小写字母
14.12 toupper函数:将小写字母转换成大写字母
第15章 字符串处理函数
15.1 bcmp函数:比较两块内存中的内容
15.2 b函数:复制内存中的内容
15.3 bzero函数:将一块内存内容全清零
15.4 ffs函数:在一个整数中查找第一个值为真的位
15.5 index函数:查找字符串中第一个出现的指定字符
15.6 memccpy函数:复制内存中的内容
15.7 memchr函数:在一块内存指定范围查找一个指定字符
15.8 memcmp函数:比较内存中存放的内容
15.9 memcpy函数:复制一块内存内容到另一块中
15.10 memfrob函数:对某个内存区重新编码
15.11 memmove函数:复制内存内容
15.12 memset函数:将某值填入到一块内存区域
15.13 rindex函数:查找字符串中最后一个出现的指定字符
15.14 strcasecmp函数:忽略大小写比较字符串
15.15 strcat函数:将一个字符串连接另一字符串的尾部
15.16 strchr函数:查找字符串中指定字符
15.17 strcmp函数:比较两个字符串
15.18 strcoll的函数:根据当前环境信息来比较字符串
15.19 strcpy函数:复制一个字符串的内容到另一个字符串中
15.20 strcspn函数:计算字符串中由非指定字符集字符组成的子字符串的长度
15.21 strp函数:复制字符串内容
15.22 strfry函数:随机重组一个字符串
15.23 strlen函数:返回字符串长度
15.24 strncasecmp函数:忽略大小写比较两个字符串
15.25 strncat函数:将一个字符串的前n个字符连接到另一字符串的尾部
15.26 strncmp函数:比较两个字符串
15.27 strncpy函数:复制字符串
15.28 strpbrk函数:查找字符串中第一个出现的指定字符
15.29 strrchr函数:查找字符串中最后一个出现的指定字符
15.30 strspn函数:计算字符串中由指定字符集字符组成的子字符串的长度
第16章 数学计算函数
16.1 abs函数:计算整数的绝对值
16.2 acos函数:计算反余弦的值
16.3 asin函数:计算反正弦的值
16.4 atan函数:计算反正切的值
16.5 atan2函数:计算反正切的值
16.6 ceil函数:计算大于或等于给定参数的最小整数
16.7 cos函数:计算余弦的值
16.8 cosh函数:计算双曲线的余弦值
16.9 div函数:计算两整数相除后的商和余数
16.10 exp函数:计算浮点数的指数
16.11 fabs函数:计算浮点数的绝对值
16.12 frexp函数:计算浮点数的尾数和指数
16.13 hypot函数:计算直角三角形斜边长度
16.14 labs函数:计算长整数的绝对值
16.15 ldexp函数:计算浮点数与2的exp次方的积
16.16 ldiv函数:计算两长整数相除后的商和余数
16.17 log函数:计算以e为底的对数值
16.18 log10函数:计算以10为底的对数值
16.19 modf函数:将浮点数分解为小数和整数两部分
16.20 pow函数:计算次方值
16.21 sin函数:取正弦的值
16.22 sinh函数:计算双曲线的正弦值
16.23 sqrt函数:计算浮点数的平方根
16.24 tan函数:计算角度的正切值
16.25 tanh函数:计算双曲线的正切函数值
第17章 随机数及数据加密函数
17.1 crypt函数:对字符串使用DES算法编码
17.2 drand48函数:产生一个正的随机浮点数
17.3 erand48函数:产生一个正的随机浮点数
17.4 initstate:建立随机数状态数组
17.5 jrand48函数:产生一个长整型的随机数
17.6 lcong48函数:设置48位运算的随机数种子
17.7 lrand48函数:产生一个正的长整型随机数
17.8 mrand48函数:产生一个长整型随机数
17.9 nrand48函数:产生一个正的长整数随机数
17.10 rand函数:产生伪随机数
17.11 random函数:产生随机数
17.12 seed48函数:设置48位运算的随机数种子
17.13 setstate函数:建立随机数状态数组
17.14 srand函数:设置随机数种子
17.15 srand48函数:设置48位运算的随机数种子
17.16 srandom函数:设置随机数种子
17.17 getpass函数:取得用户输入密码字符串
第18章 数据结构函数
18.1 bsearch函数:在有序数组中二分查找数据
18.2 hcreate函数:建立哈希表
18.3 hdestroy函数:删除哈希表
18.4 hsearch函数:在哈希表中查找关键数据
18.5 lfind函数:线性搜索
18.6 lsearch函数:线性搜索
18.7 qsort函数:使用快速排序法排列数组
18.8 tdelete函数:从二叉树中删除数据
18.9 tfind函数:搜索二叉树
18.10 tsearch函数:搜索二叉树
18.11 twalk函数:遍历二叉树
第19章 其他函数
19.1 getopt函数:分析命令参数
19.2 isatty函数:判断文件描述符是否为终端
19.3 pselect函数:多路转接I/O
19.4 select函数:多路I/O转接
19.5 ttyname函数:返回终端机的名称
附录A Linux函数的首字母索引
附录B Linux指令的首字母索引

F. 请教一个关于linux消息队列的问题

一般使用步骤:

1. 用ftok产生一个key。

2. 调用msgget(使用key作为参数)产生一个队列

3. 进程可以用msgsnd发送消息到这个队列,相应的别的进程用msgrcv读取。

这里需要注意msgsnd可能会失败的两个情况:

a) 可能被中断打断(包括msgsnd和msgrcv). 尤其是大流量应用中更容易出现. 比较安全的用法是判断操作是否被中断打断,如果被打断, 则需要继续尝试。

b) 消息队列满。产生这个错误,则需要考虑提高系统消息队列规格,或者查看消息接收处是否有问题

4. msgctl函数可以用来删除消息队列
消息队列产生之后,除非明确的删除(可以用),产生的队列会一直保留在系统中。linux下消息队列的个数是有限的,注意不要泄露。如果 使用已经达到上限,msgget调用会失败,产生的错误码对应的提示信息为no space left on device.

注意点:

1.消息的类型 mtype 不需为非0值。如果使用0,则msgsnd会失败,并得到”Invalid argument“错误。

2.msgflg为0表示阻塞等待,如果msgflg为IPC_NOWAIT表示非阻塞。

3.最好使用root权限执行消息队列,否则msgrcv 提示 "Permission denied"。

G. close的Linux 中的close函数

头文件:
#include <unistd.h>
int close(int fd);
返回值:成功返回0,出错返回-1并设置errno
参数fd是要关闭的文件描述符。需要说明的是,当一个进程终止时,内核对该进程所有尚未关闭的文件描述符
调用close关闭,所以即使用户程序不调用close,在终止时内核也会自动关闭它打开的所有文件。但是对于一
个长年累月运行的程序(比如网络服务器),打开的文件描述符一定要记得关闭,否则随着打开的文件越来越
多,会占用大量文件描述符和系统资源。
应用于 Visual Basic 的 Close 语句
Close 语句:关闭Open语句所打开的输入/输出 (I/O) 文件。
语法
Close[filenumberlist]
可选的filenumberlist参数为一个或多个文件号,其中filenumber为任何有效的文件号,语法如下:
[[#]filenumber] [,[#]filenumber]. . .
说明
若省略filenumberlist,则将关闭Open语句打开的所有活动文件。
当关闭Output或Append打开的文件时,将属于此文件的最终输出缓冲区写入操作系统缓冲区。所有与该文件相关联的缓冲区空间都被释放。
在执行Close语句时,文件与其文件号之间的关联将终结。

热点内容
新版uc不能缓存小说 发布:2024-07-02 22:09:55 浏览:914
linux线程函数 发布:2024-07-02 21:56:36 浏览:163
xp共享文件夹权限 发布:2024-07-02 21:43:38 浏览:476
r11忘记密码怎么办 发布:2024-07-02 21:13:25 浏览:4
大一教务网初始密码是什么 发布:2024-07-02 21:12:44 浏览:553
剧本脚本怎么写 发布:2024-07-02 21:09:06 浏览:92
加密保认证 发布:2024-07-02 21:05:12 浏览:502
win7文件加密后打不开 发布:2024-07-02 20:54:44 浏览:84
pyc文件由谁编译 发布:2024-07-02 20:53:47 浏览:950
编程偏门 发布:2024-07-02 20:40:28 浏览:600