001
第1 章U N I X 基础知识
1.1 引言
1.2 登录
1.2.1 登录名
1.2.2 shell
1.3 文件和目录
1.3.1 文件系统
1.3.2 文件名
1.3.3 路径名
1.3.4 工作目录
1.3.5 起始目录
1.4 输入和输出
1.4.1 文件描述符
1.4.2 标准输入、标准输出和标准出错
1.4.3 不用缓存的I / O
1.4.4 标准I / O
1.5 程序和进程
1.5.1 程序
1.5.2 进程和进程I D
1.5.3 进程控制
1.6 ANSI C
1.6.1 函数原型
1.6.2 类属指针
1.6.3 原始系统数据类型
1.7 出错处理
1.8 用户标识
1.8.1 用户I D
1.8.2 组I D
1.8.3 添加组I D
1.9 信号
1.10 UNIX 时间值
1 . 11 系统调用和库函数
1.12 小结
002
第2 章U N I X 标准化及实现
2.1 引言
2.2 UNIX 标准化
2.2.1 ANSI C
2.2.2 IEEE POSIX
2.2.3 X/Open XPG3
2.2.4 FIPS
2.3 UNIX 实现
2.3.1 SVR4
2.3.2 4.3+BSD
2.4 标准和实现的关系
2.5 限制
2.5.1 ANSI C 限制
2.5.2 POSIX 限制
2.5.3 XPG3 限制
2.5.4 sysconf 、pathconf 和fpathconf 函数
2.5.5 FIPS 151-1 要求
2.5.6 限制总结
2.5.7 未确定的运行时间限制
2.6 功能测试宏
2.7 基本系统数据类型
2.8 标准之间的冲突
2.9 小结
003
第3 章文件I / O
3.1 引言
3.2 文件描述符
3.3 open 函数
3.4 creat 函数
3.5 close 函数
3.6 lseek 函数
3.7 read 函数
3.8 write 函数
3.9 I/O 的效率
3.10 文件共享
3.11 原子操作
3.11.1 添加至一个文件
3.11.2 创建一个文件
3.12 dup 和d u p 2 函数
3.13 fcntl 函数
3.14 ioctl 函数
3.15 /dev/fd
3.16 小结
004
第4 章文件和目录
4.1 引言
4.2 stat 、fstat 和lstat 函数
4.3 文件类型
4.4 设置-用户- I D 和设置-组- I D
4.5 文件存取许可权
4.6 新文件和目录的所有权
4.7 access 函数
4.8 umask 函数
4.9 chmod 和f c h m o d 函数
4.10 粘住位
4 . 11 chown, fchown 和l c h o w n 函数
4.12 文件长度
4.13 文件截短
4.14 文件系统
4.15 link,unlink,remove 和r e n a m e 函数
4.16 符号连接
4.17 symlink 和r e a d l i n k 函数
4.18 文件的时间
4.19 utime 函数
4.20 mkdir 和r m d i r 函数
4.21 读目录
4.22 chdir, fchdir 和getcwd 函数
4.23 特殊设备文件
4.24 sync 和f s y n c 函数
4.25 文件存取许可权位小结
4.26 小结
005
第5 章标准I/O 库
5.1 引言
5.2 流和F I L E 对象
5.3 标准输入、标准输出和标准出错
5.4 缓存
5.5 打开流
5.6 读和写流
5.6.1 输入函数
5.6.2 输出函数
5.7 每次一行I / O
5.8 标准I / O 的效率
5.9 二进制I / O
5.10 定位流
5.11 格式化I / O
5.11.1 格式化输出
5.11.2 格式化输入
5.12 实现细节
5.13 临时文件
5.14 标准I / O 的替代软件
5.15 小结
006
第6 章系统数据文件和信息
6.1 引言
6.2 口令文件
6.3 阴影口令
6.4 组文件
6.5 添加组I D
6.6 其他数据文件
6.7 登录会计
6.8 系统标识
6.9 时间和日期例程
6.10 小结
007
第7 章U N I X 进程的环境
7.1 引言
7.2 main 函数
7.3 进程终止
7.3.1 exit 和_ e x i t 函数
7.3.2 atexit 函数
7.4 命令行参数
7.5 环境表
7.6 C 程序的存储空间布局
7.7 共享库
7.8 存储器分配
7.9 环境变量
7.10 setjmp 和l o n g j m p 函数
7.10.1 自动、寄存器和易失变量
7.10.2 自动变量的潜在问题
7.11 getrlimit 和s e t r l i m i t �
7.12 小结
008
第8 章进程控制
8.1 引言
8.2 进程标识
8.3 fork 函数
8.4 vfork 函数
8.5 exit 函数
8.6 wait 和w a i t p i d 函数
8.7 wait3 和w a i t 4 函数
8.8 竞态条件
8.9 exec 函数
8.10 更改用户I D 和组I D
8.10.1 setreuid 和s e t r e g i d 函数
8.10.2 seteuid 和s e t e g i d 函数
8.10.3 组I D
8.11 解释器文件
8.12 system 函数
8.13 进程会计
8.14 用户标识
8.15 进程时间
8.16 小结
009
第9 章进程关系
9.1 引言
9.2 终端登录
9.2.1 4.3+BSD 终端登录
9.2.2 SVR4 终端登录
9.3 网络登录
9.3.1 4.3 +B S D 网络登录
9.3.2 SVR4 网络登录
9.4 进程组
9.5 对话期
9.6 控制终端
9.7 tcgetpgrp 和t c s e t p g r p 函数
9.8 作业控制
9.9 shell 执行程序
9.10 孤儿进程组
9.11 4.3+BSD 实现
9.12 小结
010
第1 0 章信号
10.1 引言
10.2 信号的概念
10.3 signal 函数
10.3.1 程序起动
10.3.2 进程创建
10.4 不可靠的信号
10.5 中断的系统调用
10.6 可再入函数
10.7 SIGCLD 语义
10.8 可靠信号术语和语义
10.9 kill 和r a i s e 函数
10.10 alarm 和p a u s e 函数
1 0.11 信号集
10.12 sigprocmask 函数
10.13 sigpending 函数
10.14 sigaction 函数
10.15 sigsetjmp 和s i g l o n g j m p 函数
10.16 sigsuspend 函数
10.17 abort 函数
10.18 system 函数
10.19 sleep 函数
10.20 作业控制信号
10.21 其他特征
10.21.1 信号名字
10.21.2 SVR4 信号处理程序的附加参数
10.21.3 4.3+BSD 信号处理程序的附加参数
10.22 小结
011
第11 章终端I / O
11.1 引言
11.2 综述
11.3 特殊输入字符
11.4 获得和设置终端属性
11.5 终端选择标志
11.6 stty 命令
11.7 波特率函数
11.8 行控制函数
11.9 终端标识
11.10 规范方式
11 . 11 非规范方式
11.12 终端的窗口大小
11.13 termcap,terminfo 和c u r s e s
11.14 小结
012
第1 2 章高级I / O
12.1 引言
12.2 非阻塞I / O
12.3 记录锁
12.3.1 历史
12.3.2 fcntl 记录锁
12.3.3 锁的隐含继承和释放
12.3.4 4.3+BSD 的实现
12.3.5 建议性锁和强制性锁
12.4 流
12.4.1 流消息
12.4.2 putmsg 和p u t p m s g 函数
12.4.3 流ioctl 操作
12.4.4 write 至流设备
12.4.5 写方式
12.4.6 getmsg 和g e t p m s g 函数
12.4.7 读方式
12.5 I/O 多路转接
12.5.1 select 函数
12.5.2 poll 函数
12.6 异步I / O
12.6.1 SVR4
12.6.2 4.3+BSD
12.7 readv 和w r i t e v 函数
12.8 readn 和w r i t e n 函数
12.9 存储映射I / O
12.10 小结
013
第1 3 章精灵进程
13.1 引言
13.2 精灵进程的特征
13.3 编程规则
13.4 出错记录
13.4.1 SVR4 流l o g 驱动程序
13.4.2 4.3+BSD syslog 设施
13.5 客户机-服务器模型
13.6 小结
014
第1 4 章进程间通信
14.1 引言
14.2 管道
14.3 popen 和p c l o s e 函数
14.4 协同进程
14.5 FIFO
14.6 系统V IPC
三种系统V IPC :消息
14.6.1 标识符和关键字
14.6.2 许可权结构
14.6.3 结构限制
14.6.4 优点和缺点
14.7 消息队列
14.8 信号量
14.9 共享存储
14.10 客户机-服务器属性
1 4.11 小结
015
第1 5 章高级进程间通信
15.1 引言
15.2 流管道
15.3 传送文件描述符
15.3.1 SVR4
15.3.2 4.3BSD
15.3.3 4.3+BSD
15.4 open 服务器第1 版
15.5 客户机-服务器连接函数
15.5.1 SVR4
15.5.2 4.3+BSD
15.6 open 服务器第2 版
15.7 小结
016
第1 6 章数据库函数库
16.1 引言
16.2 历史
16.3 函数库
16.4 实现概述
16.5 集中式或非集中式
16.6 并发
16.6.1 粗锁
16.6.2 细锁
16.7 源码
16.8 性能
16.8.1 单进程的结果
16.8.2 多进程的结果
16.9 小结
017
第1 7 章与PostScript 打印机通信
17.1 引言
17.2 PostScript 通信机制
17.3 假脱机打印
17.4 源码
17.5 小结
018
第1 8 章调制解调器拨号器
18.1 引言
18.2 历史
18.3 程序设计
18.4 数据文件
18.5 服务器设计
18.6 服务器源码
18.7 客户机设计
18.7.1 终端行规程
18.7.2 一个进程还是两个进程
18.8 客户机源码
18.9 小结
019
第1 9 章伪终端
19.1 引言
19.2 概述
19.2.1 网络登录服务器
19.2.2 script 程序
19.2.3 expect 程序
19.2.4 运行协同进程
19.2.5 观看长时间运行程序的输出
19.3 打开伪终端设备
19.3.1 SVR4
19.3.2 4.3+BSD
19.4 pty_fork 函数
19.5 pty 程序
19.6 使用p t y 程序
19.6.1 utmp 文件
19.6.2 作业控制交互
19.6.3 检查长时间运行程序的输出
19.6.4 script 程序
19.6.5 运行协同进程
19.6.6 用非交互模式驱动交互式程序
19.7 其他特性
19.7.1 打包模式
19.7.2 远程模式
19.7.3 窗口大小变化
19.7.4 信号发生
19.8 小结
020
附录A 函数原型
021
附录B 其他源代码
B.1 头文件
B.2 标准出错处理例程
022
附录C 习题答案
第1 章
第2 章
第3 章
第4 章
第5 章
第6 章
第7 章
第8 章
第9 章
第10章
第11章
第12章
第13章
第14章
第15章
第16章
第17章
第18章
第19章
023
参考书目