第1章 导引 1
1.1 系统调用和库函数 1
1.2 UNIX的版本 1
1.3 错误处理 2
第2章 标准输入/输出库 4
2.1 文件指针 4
2.2 打开和建立文件 5
2.3 关闭文件 5
2.4 读和写文件 5
2.4.1 函数getc和putc 5
2.4.2 函数fgetx和fputs 7
2.4.3 函数fread和fwrite 8
2.4.4 函数fscanf和fprintf 9
2.4.5 函数sscanf和sprintf 11
2.5 在文件中移动定位 11
第3章 低级输入/输出 13
3.1 文件描述字 13
3.2 打开和建立文件 13
3.2.1 在旧的UNIX系统上打开的建立文件 14
3.2.2 关闭文件和读写文件 14
3.3 在文件中移动定位 15
3.3.1 复制文件描述字 16
3.4 转换文件描述字为文件指针 17
4.1 文件系统概念 18
4.1.1 普通文件 18
4.1.2 目录 18
4.1.3 特别文件 18
第4章 文件与目录 18
4.1.4 删去文件系统 19
4.1.5 设备号416 1标识号,1列表和I节点 19
4.2 确定文件的访问权限 20
4.3 从I节点上获取信息 20
4.4 读目录 22
4.6.1 改变目录 27
4.6.2 删除和压缩文件 27
4.5 修改文件属性 27
4.6 其他的文件系统函数 27
4.6.3 建立目录 28
4.6.4 链接和改换文件名称 28
4.6.5 符号链接 28
4.6.6 umask值 29
第5章 设备输入/输出控制 30
5.1 第7版和BSD系统函数 30
5.1.1通信线路规范 31
5.1.2 sgttyb结构 31
5.1.3 tchars结构 32
5.1.4 ltchars结构 33
5.1.5 局部模式字 33
5.1.6 winsize结构 34
5.1.7 其他的操作 34
5.2 系统V函数 37
5.2.1 c_iflag 37
5.2.2 c_oflag 38
5.2.3 c_cflag 38
5.2.4 c_lflag 38
5.2.5 c_cc 39
5.4 无阴塞的输入/输出 41
5.3 系统调用fcntl 41
5.5 系统调用select 42
第6章关于用户的信息 44
6.1 注册名 44
6.2 用户ID 44
6.3 用户组ID 45
6.3.1 BSD用户组机制 45
6.4 读口令文件 46
6.5 读用户组文件 47
6.6 读临时用户文件 48
7.1.2 时区 50
7.1.1 取得时间 50
7.1 获取时间 50
第7章 获取时间和给事件计时 50
7.1.3 转换时间为ASCII码 51
7.1.4 时间的差别 51
7.2 睡眠与闹钟 52
7.2.1 睡眠 52
7.2.2 闹钟 52
7.2.3 时间间隔计时器 52
7.3 进程计时 53
7.4 改变文件时间 54
8.1.1 重置信号 55
8.1 信号处理综述 55
第8章 处理信号 55
8.1.2 重新启动系统调用 56
8.2 信号 56
8.3 发送信号 57
8.4 捕捉信号和忽略信号 58
8.4.1 忽略信号 58
8.4.2 捕捉信号 58
8.5 使用符信号时 60
8.5.1 函数setjmp和longjmp 61
8.6.1 处理调用转换 62
8.5.2新的BSD信号机制 62
8.6.2 信号屏蔽 63
8.6.3 信号栈 63
第9章 执行程序 67
9.1 库函数system 67
9.2 直接执行程序 67
8.2.1 建立进程 67
9.2.2 执行程序 68
9.2.3 等待进程终止 69
9.3 重新定向输入/输出 70
9.4.2 直接建立管道 72
9.4.1 库函数popen 72
9.4 建立管道线 72
9.5 常驻进程 73
9.5.1 关闭所有打开的文件描述字 74
9.5.2 改变当前工作目录 75
9.5.3 重设文件取建立屏蔽码 75
9.5.4 在后台运行 75
9.5.5 脱离进程组 75
9.5.6 忽略终端I/O信号 76
9.5.7 信号,进程组和控制终端 76
9.5.8 脱离控制终端 78
9.5.9 有再重新申请一个控制终端 79
9.5.10 系统V中的文件inittab 80
9.5.11 常驻进程终止 80
9.5.12 处理SIGCLD信号 80
9.5.13 常驻进程实例 81
第10章 任务控制 84
10.1 基本概念 84
10.1.1 控制终端 84
10.1.2 进程组 84
10.1.3 系统调用 85
10.2.1 建立任务控制 86
10.2 在shell中控制任务 86
10.1.4 数据类型JOB和PRC 86
10.2.2 执行一个程序 87
10.2.3 停止一个任务 87
10.2.4 后台执行一个任务 88
10.2.5 前台执行一个任务 88
10.2.6 命令jobs 89
10.2.7 等待任务 89
10.2.8 异步进程通知 91
10.3 在shell外控制任务 91
10.4 几点说明 92
11.1.1 系统调用socket 93
11.1 BSD UNIX内部进程通信(IPC) 93
第11章 内部进程通信 93
11.1.2 系统调用bind 94
11.1.3 系统调用和 95
11.1.4 系统调用 95
11.1.5 系统调用 95
11.1.6 基座连接的软插座 96
11.1.7 没有连接的软插座 96
11.1.8 一个小的客户程序 97
11.1.9 一个小的服务器程序 98
11.2.1 消息队列 100
11.2 系统V内部进程通信(IPC) 100
11.2.2 信号灯 104
11.2.3 共享内存 106
第12章 网络系统 110
12.1 地址 110
12.2 反宿主机名称转换成网络号码 110
12.3 获取端口号码 111
12.4 网络字节次序 112
12.5 网络系统调用 112
第13章 文件系统 118
13.1 “标准”UNIX文件系统 118
13.2 BSD快速文件系统 123
13.3 从文件系统中读取数据 130
14.1 资源限制 133
14.1.1 系统调用getrlimit 133
14.1.2 系统调用setrlimit 133
第14章 其他的函数 133
14.2 获取资源使用情况 134
14.3 操作字节串 135
14.3.1 库函数bcmp和memcmp 135
14.4 环境变量与当前工作目录 136
14.5 在字符串中搜索字符 136
14.3.3 库函数bzero和memset 136
14.3.2 库函数bcopy和memcpy 136
14.6 确认一个文件是否是一个终端 137
14.6.1 库函数isatty 137
14.6.2 库函数ttyname 137
14.6.3 /dev/tty设备 137
14.7 打印错误信息 137
14.7.1 库函数 137
14.7.2 库函数 138
14.8 在内存中对数组排序 138
14.9 使用仿真终端 139
14.10 读取核心数据结构 142
参考文献 145