UNIX环境高级编程(第2版)
W.Richard Stevens,备受赞誉的技术作家,生前著有多种经典的传世之作,包括《UNIX网络编程》(两卷本)、《TCP/IP详解》(三卷本)和本书第1版。
尤晋元,上海交通大学计算机科学及工程系教授、博士生导师。在科研方面,主要从事操作系统和分布对象计算技术方面的研究;在教学方面,长期承担操作系统及分布计算等课程的教学工作。主编和翻译了多本操作系统教材和参考书,包括《UNIX操作系统教程》、《UNIX高级编程技术》、《UNIX环境高级编程》和《操作系统:设计与实现》等。
尤晋元,上海交通大学计算机科学及工程系教授、博士生导师。在科研方面,主要从事操作系统和分布对象计算技术方面的研究;在教学方面,长期承担操作系统及分布计算等课程的教学工作。主编和翻译了多本操作系统教材和参考书,包括《UNIX操作系统教程》、《UNIX高级编程技术》、《UNIX环境高级编程》和《操作系统:设计与实现》等。
《UNIX环境高级编程(第2版)》是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的更新版。在本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版的风格的基础上,根据新的标准对内容进行了修订和增补,反映了新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了多个应用示例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附录中给出了函数原型和部分习题的答案。 《UNIX环境高级编程(第2版)》内容专家,概念清晰,阐述精辟,对于所有层次UNIX程序员都是一本不可或缺的参考书。
第1章 UNIX基础知识
1.1 引言
1.2 UNIX体系结构
1.3 登录
1.4 文件和目录
1.5 输入和输出
1.6 程序和进程
1.7 出错处理
1.8 用户标识
1.9 信号
1.10 时间值
1.11 系统调用和库函数
1.12 小结
习题
第2章 UNIX标准化及实现
2.1 引言
2.2 UNIX标准化
2.2.1 ISO C
2.2.2 IEEE POSIX
2.2.3 Single UNIX Specification
2.2.4 FIPS
2.3 UNIX系统实现
2.3.1 SVR4
2.3.2 4.4BSD
2.3.3 FreeBSD
2.3.4 Linux
2.3.5 Mac OS X
2.3.6 Solaris
2.3.7 其他UNIX系统
2.4 标准和实现的关系
2.5 限制
2.5.1 ISO C限制
2.5.2 POSIX限制
2.5.3 XSI限制
2.5.4 sysconf、pathconf和fpathconf函数
2.5.5 不确定的运行时限制
2.6 选项
2.7 功能测试宏
2.8 基本系统数据类型
2.9 标准之间的冲突
2.10 小结
习题
第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.12 dup和dup2函数
3.13 sync、fsync和fdatasync函数
3.14 fcntl函数
3.15 ioctl函数
3.16 /dev/fd
3.17 小结
习题
第4章 文件和目录
4.1 引言
4.2 stat、fstat和lstat函数
4.3 文件类型
4.4 设置用户ID和设置组ID
4.5 文件访问权限
4.6 新文件和目录的所有权
4.7 access函数
4.8 umask函数
4.9 chmod和fchmod函数
4.10 粘住位
4.11 chown、fchown和lchown函数
4.12 文件长度
4.13 文件截短
4.14 文件系统
4.15 link、unlink、remove和rename函数
4.16 符号链接
4.17 symlink和readlink函数
4.18 文件的时间
4.19 utime函数
4.20 mkdir和rmdir函数
4.21 读目录
4.22 chdir、fchdir和getcwd函数
4.23 设备特殊文件
4.24 文件访问权限位小结
4.25 小结
习题
第5章 标准I/O库
5.1 引言
5.2 流和FILE对象
5.3 标准输入、标准输出和标准出错
5.4 缓冲
5.5 打开流
5.6 读和写流
5.7 每次一行I/O
5.8 标准I/O的效率
5.9 二进制I/O
5.10 定位流
5.11 格式化I/O
5.12 实现细节
5.13 临时文件
5.14 标准I/O的替代软件
5.15 小结
习题
第6章 系统数据文件和信息
6.1 引言
6.2 口令文件
6.3 阴影口令
6.4 组文件
6.5 附加组ID
6.6 实现的区别
6.7 其他数据文件
6.8 登录账户记录
6.9 系统标识
6.10 时间和日期例程
6.11 小结
习题
第7章 进程环境
7.1 引言
7.2 main函数
7.3 进程终止
7.4 命令行参数
7.5 环境表
7.6 C程序的存储空间布局
7.7 共享库
7.8 存储器分配
7.9 环境变量
7.10 setjmp和longjmp函数
7.11 getrlimit和setrlimit函数
7.12 小结
习题
第8章 进程控制
8.1 引言
8.2 进程标识符
8.3 fork函数
8.4 vfork函数
8.5 exit函数
8.6 wait和waitpid函数
8.7 waitid函数
8.8 wait3和wait4函数
8.9 竞争条件
8.10 exec函数
8.11 更改用户ID和组ID
8.12 解释器文件
8.13 system函数
8.14 进程会计
8.15 用户标识
8.16 进程时间
8.17 小结
习题
第9章 进程关系
9.1 引言
9.2 终端登录
9.3 网络登录
9.4 进程组
9.5 会话
9.6 控制终端
9.7 tcgetpgrp、tcsetpgrp和tcgetsid函数
9.8 作业控制
9.9 shell执行程序
9.10 孤儿进程组
9.11 FreeBSD实现
9.12 小结
习题
第10章 信号
10.1 引言
10.2 信号概念
10.3 signal函数
10.4 不可靠的信号
10.5 中断的系统调用
10.6 可重入函数
10.7 SIGCLD语义
10.8 可靠信号术语和语义
10.9 kill和raise函数
10.10 alarm和pause函数
10.11 信号集
10.12 sigprocmask函数
10.13 sigpending函数
10.14 sigaction函数
10.15 sigsetjmp和siglongjmp函数
10.16 sigsuspend函数
10.17 abort函数
10.18 system函数
10.19 sleep函数
10.20 作业控制信号
10.21 其他特征
10.22 小结
习题
第11章 线程
11.1 引言
11.2 线程概念
11.3 线程标识
11.4 线程的创建
11.5 线程终止
11.6 线程同步
11.7 小结
习题
第12章 线程控制
12.1 引言
12.2 线程限制
12.3 线程属性
12.4 同步属性
12.5 重入
12.6 线程私有数据
12.7 取消选项
12.8 线程和信号
12.9 线程和fork
12.10 线程和I/O
12.11 小结
习题
第13章 守护进程
13.1 引言
13.2 守护进程的特征
13.3 编程规则
13.4 出错记录
13.5 单实例守护进程
13.6 守护进程的惯例
13.7 客户进程-服务器进程模型
13.8 小结
习题
第14章 高级I/O
14.1 引言
14.2 非阻塞I/O
14.3 记录锁
14.4 STREAMS
14.5 I/O多路转接
14.5.1 select和pselect函数
14.5.2 poll函数
14.6 异步I/O
14.6.1 系统V异步I/O
14.6.2 BSD异步I/O
14.7 readv和writev函数
14.8 readn和writen函数
14.9 存储映射I/O
14.10 小结
习题
第15章 进程间通信
15.1 引言
15.2 管道
15.3 popen和pclose函数
15.4 协同进程
15.5 FIFO
15.6 XSI IPC
15.6.1 标识符和键
15.6.2 权限结构
15.6.3 结构限制
15.6.4 优点和缺点
15.7 消息队列
15.8 信号量
15.9 共享存储
15.10 客户进程-服务器进程属性
15.11 小结
习题
第16章 网络IPC:套接字
16.1 引言
16.2 套接字描述符
16.3 寻址
16.3.1 字节序
16.3.2 地址格式
16.3.3 地址查询
16.3.4 将套接字与地址绑定
16.4 建立连接
16.5 数据传输
16.6 套接字选项
16.7 带外数据
16.8 非阻塞和异步I/O
16.9 小结
习题
第17章 高级进程间通信
17.1 引言
17.2 基于STREAMS的管道
17.2.1 命名的STREAMS管道
17.2.2 唯一连接
17.3 UNIX域套接字
17.3.1 命名UNIX域套接字
17.3.2 唯一连接
17.4 传送文件描述符
17.4.1 经由基于STREAMS的管道传送文件描述符
17.4.2 经由UNIX域套接字传送文件描述符
17.5 open服务器版本1
17.6 open服务器版本2
17.7 小结
习题
第18章 终端I/O
18.1 引言
18.2 综述
18.3 特殊输入字符
18.4 获得和设置终端属性
18.5 终端选项标志
18.6 stty命令
18.7 波特率函数
18.8 行控制函数
18.9 终端标识
18.10 规范模式
18.11 非规范模式
18.12 终端的窗口大小
18.13 termcap,terminfo和curses
18.14 小结
习题
第19章 伪终端
19.1 引言
19.2 概述
19.3 打开伪终端设备
19.3.1 基于STREAMS的伪终端
19.3.2 基于BSD的伪终端
19.3.3 基于Linux的伪终端
19.4 pty_fork函数
19.5 pty程序
19.6 使用pty程序
19.7 高级特性
19.8 小结
习题
第20章 数据库函数库
20.1 引言
20.2 历史
20.3 函数库
20.4 实现概述
20.5 集中式或非集中式
20.6 并发
20.7 构造函数库
20.8 源代码
20.9 性能
20.10 小结
习题
第21章 与网络打印机通信
21.1 引言
21.2 网络打印协议
21.3 超文本传输协议
21.4 打印假脱机技术
21.5 源代码
21.6 小结
习题
附录A 函数原型
附录B 其他源代码
附录C 部分习题答案
参考书目
索引
^ 收 起
1.1 引言
1.2 UNIX体系结构
1.3 登录
1.4 文件和目录
1.5 输入和输出
1.6 程序和进程
1.7 出错处理
1.8 用户标识
1.9 信号
1.10 时间值
1.11 系统调用和库函数
1.12 小结
习题
第2章 UNIX标准化及实现
2.1 引言
2.2 UNIX标准化
2.2.1 ISO C
2.2.2 IEEE POSIX
2.2.3 Single UNIX Specification
2.2.4 FIPS
2.3 UNIX系统实现
2.3.1 SVR4
2.3.2 4.4BSD
2.3.3 FreeBSD
2.3.4 Linux
2.3.5 Mac OS X
2.3.6 Solaris
2.3.7 其他UNIX系统
2.4 标准和实现的关系
2.5 限制
2.5.1 ISO C限制
2.5.2 POSIX限制
2.5.3 XSI限制
2.5.4 sysconf、pathconf和fpathconf函数
2.5.5 不确定的运行时限制
2.6 选项
2.7 功能测试宏
2.8 基本系统数据类型
2.9 标准之间的冲突
2.10 小结
习题
第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.12 dup和dup2函数
3.13 sync、fsync和fdatasync函数
3.14 fcntl函数
3.15 ioctl函数
3.16 /dev/fd
3.17 小结
习题
第4章 文件和目录
4.1 引言
4.2 stat、fstat和lstat函数
4.3 文件类型
4.4 设置用户ID和设置组ID
4.5 文件访问权限
4.6 新文件和目录的所有权
4.7 access函数
4.8 umask函数
4.9 chmod和fchmod函数
4.10 粘住位
4.11 chown、fchown和lchown函数
4.12 文件长度
4.13 文件截短
4.14 文件系统
4.15 link、unlink、remove和rename函数
4.16 符号链接
4.17 symlink和readlink函数
4.18 文件的时间
4.19 utime函数
4.20 mkdir和rmdir函数
4.21 读目录
4.22 chdir、fchdir和getcwd函数
4.23 设备特殊文件
4.24 文件访问权限位小结
4.25 小结
习题
第5章 标准I/O库
5.1 引言
5.2 流和FILE对象
5.3 标准输入、标准输出和标准出错
5.4 缓冲
5.5 打开流
5.6 读和写流
5.7 每次一行I/O
5.8 标准I/O的效率
5.9 二进制I/O
5.10 定位流
5.11 格式化I/O
5.12 实现细节
5.13 临时文件
5.14 标准I/O的替代软件
5.15 小结
习题
第6章 系统数据文件和信息
6.1 引言
6.2 口令文件
6.3 阴影口令
6.4 组文件
6.5 附加组ID
6.6 实现的区别
6.7 其他数据文件
6.8 登录账户记录
6.9 系统标识
6.10 时间和日期例程
6.11 小结
习题
第7章 进程环境
7.1 引言
7.2 main函数
7.3 进程终止
7.4 命令行参数
7.5 环境表
7.6 C程序的存储空间布局
7.7 共享库
7.8 存储器分配
7.9 环境变量
7.10 setjmp和longjmp函数
7.11 getrlimit和setrlimit函数
7.12 小结
习题
第8章 进程控制
8.1 引言
8.2 进程标识符
8.3 fork函数
8.4 vfork函数
8.5 exit函数
8.6 wait和waitpid函数
8.7 waitid函数
8.8 wait3和wait4函数
8.9 竞争条件
8.10 exec函数
8.11 更改用户ID和组ID
8.12 解释器文件
8.13 system函数
8.14 进程会计
8.15 用户标识
8.16 进程时间
8.17 小结
习题
第9章 进程关系
9.1 引言
9.2 终端登录
9.3 网络登录
9.4 进程组
9.5 会话
9.6 控制终端
9.7 tcgetpgrp、tcsetpgrp和tcgetsid函数
9.8 作业控制
9.9 shell执行程序
9.10 孤儿进程组
9.11 FreeBSD实现
9.12 小结
习题
第10章 信号
10.1 引言
10.2 信号概念
10.3 signal函数
10.4 不可靠的信号
10.5 中断的系统调用
10.6 可重入函数
10.7 SIGCLD语义
10.8 可靠信号术语和语义
10.9 kill和raise函数
10.10 alarm和pause函数
10.11 信号集
10.12 sigprocmask函数
10.13 sigpending函数
10.14 sigaction函数
10.15 sigsetjmp和siglongjmp函数
10.16 sigsuspend函数
10.17 abort函数
10.18 system函数
10.19 sleep函数
10.20 作业控制信号
10.21 其他特征
10.22 小结
习题
第11章 线程
11.1 引言
11.2 线程概念
11.3 线程标识
11.4 线程的创建
11.5 线程终止
11.6 线程同步
11.7 小结
习题
第12章 线程控制
12.1 引言
12.2 线程限制
12.3 线程属性
12.4 同步属性
12.5 重入
12.6 线程私有数据
12.7 取消选项
12.8 线程和信号
12.9 线程和fork
12.10 线程和I/O
12.11 小结
习题
第13章 守护进程
13.1 引言
13.2 守护进程的特征
13.3 编程规则
13.4 出错记录
13.5 单实例守护进程
13.6 守护进程的惯例
13.7 客户进程-服务器进程模型
13.8 小结
习题
第14章 高级I/O
14.1 引言
14.2 非阻塞I/O
14.3 记录锁
14.4 STREAMS
14.5 I/O多路转接
14.5.1 select和pselect函数
14.5.2 poll函数
14.6 异步I/O
14.6.1 系统V异步I/O
14.6.2 BSD异步I/O
14.7 readv和writev函数
14.8 readn和writen函数
14.9 存储映射I/O
14.10 小结
习题
第15章 进程间通信
15.1 引言
15.2 管道
15.3 popen和pclose函数
15.4 协同进程
15.5 FIFO
15.6 XSI IPC
15.6.1 标识符和键
15.6.2 权限结构
15.6.3 结构限制
15.6.4 优点和缺点
15.7 消息队列
15.8 信号量
15.9 共享存储
15.10 客户进程-服务器进程属性
15.11 小结
习题
第16章 网络IPC:套接字
16.1 引言
16.2 套接字描述符
16.3 寻址
16.3.1 字节序
16.3.2 地址格式
16.3.3 地址查询
16.3.4 将套接字与地址绑定
16.4 建立连接
16.5 数据传输
16.6 套接字选项
16.7 带外数据
16.8 非阻塞和异步I/O
16.9 小结
习题
第17章 高级进程间通信
17.1 引言
17.2 基于STREAMS的管道
17.2.1 命名的STREAMS管道
17.2.2 唯一连接
17.3 UNIX域套接字
17.3.1 命名UNIX域套接字
17.3.2 唯一连接
17.4 传送文件描述符
17.4.1 经由基于STREAMS的管道传送文件描述符
17.4.2 经由UNIX域套接字传送文件描述符
17.5 open服务器版本1
17.6 open服务器版本2
17.7 小结
习题
第18章 终端I/O
18.1 引言
18.2 综述
18.3 特殊输入字符
18.4 获得和设置终端属性
18.5 终端选项标志
18.6 stty命令
18.7 波特率函数
18.8 行控制函数
18.9 终端标识
18.10 规范模式
18.11 非规范模式
18.12 终端的窗口大小
18.13 termcap,terminfo和curses
18.14 小结
习题
第19章 伪终端
19.1 引言
19.2 概述
19.3 打开伪终端设备
19.3.1 基于STREAMS的伪终端
19.3.2 基于BSD的伪终端
19.3.3 基于Linux的伪终端
19.4 pty_fork函数
19.5 pty程序
19.6 使用pty程序
19.7 高级特性
19.8 小结
习题
第20章 数据库函数库
20.1 引言
20.2 历史
20.3 函数库
20.4 实现概述
20.5 集中式或非集中式
20.6 并发
20.7 构造函数库
20.8 源代码
20.9 性能
20.10 小结
习题
第21章 与网络打印机通信
21.1 引言
21.2 网络打印协议
21.3 超文本传输协议
21.4 打印假脱机技术
21.5 源代码
21.6 小结
习题
附录A 函数原型
附录B 其他源代码
附录C 部分习题答案
参考书目
索引
^ 收 起
W.Richard Stevens,备受赞誉的技术作家,生前著有多种经典的传世之作,包括《UNIX网络编程》(两卷本)、《TCP/IP详解》(三卷本)和本书第1版。
尤晋元,上海交通大学计算机科学及工程系教授、博士生导师。在科研方面,主要从事操作系统和分布对象计算技术方面的研究;在教学方面,长期承担操作系统及分布计算等课程的教学工作。主编和翻译了多本操作系统教材和参考书,包括《UNIX操作系统教程》、《UNIX高级编程技术》、《UNIX环境高级编程》和《操作系统:设计与实现》等。
尤晋元,上海交通大学计算机科学及工程系教授、博士生导师。在科研方面,主要从事操作系统和分布对象计算技术方面的研究;在教学方面,长期承担操作系统及分布计算等课程的教学工作。主编和翻译了多本操作系统教材和参考书,包括《UNIX操作系统教程》、《UNIX高级编程技术》、《UNIX环境高级编程》和《操作系统:设计与实现》等。
《UNIX环境高级编程(第2版)》是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的更新版。在本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版的风格的基础上,根据新的标准对内容进行了修订和增补,反映了新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了多个应用示例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附录中给出了函数原型和部分习题的答案。 《UNIX环境高级编程(第2版)》内容专家,概念清晰,阐述精辟,对于所有层次UNIX程序员都是一本不可或缺的参考书。
比价列表