描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787115352118
20多年来,严谨的C程序员都是依靠一本书来深入了解驱动UNIX和Linux内核的编程接口的实用知识的,这本书就是W.RichardStevens所著的《UNIX高级环境编程》。现在,Stevens的同事SteveRago彻底更新了这本经典著作。新的第3版支持当今领先的系统平台,反映了*技术进展和*实践,并且符合*的SingleUNIXSpecification第4版(SUSv4)。
Rago保留了使本书前版成为经典之作的精髓和方法。他在Stevens原著的基础上,从基础的文件、目录和进程讲起,并给诸如信号处理和终端I/O之类的先进技术保留较大的篇幅。他还深入讨论了线程和多线程编程、使用套接字接口驱动进程间通信(IPC)等方面的内容。
这一版涵盖了70多个*版POSIX.1标准的新增接口,包括POSIX异步I/O、旋转锁、屏障(barrier)和POSIX信号量。此外,这一版删除了许多过时的接口,保留了一些广泛使用的接口。书中几乎所有实例都已经在目前*主流的4个平台上测试过,包括Solaris10、MacOSX10.6.8(Darwin10.8.0)、FressBSD8.0、Ubuntu12.04(基于Linux3.2内核)。
与前两版一样,读者仍可以通过实例学习,这些实例包括了1万多行可下载的ISOC源代码,书中通过简明但完整的程序阐述了400多个系统调用和函数,清楚地说明它们的用法、参数和返回值。为了使读者能融会贯通,书中还提供了几个贯穿整章的案例,每个案例都根据现在的技术环境进行了全面更新。
本书帮助了几代程序员写出强大、高性能、可靠的代码。第3版根据当今主流系统进行更新,更具实用价值。
《UNIX环境高级编程(第3版)》内容权威,概念清晰,阐述精辟,对于所有层次UNIX/Linux程序员都是一本不可或缺的参考书。
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和openat
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、fstatat和lstat
4.3 文件类型
4.4 设置用户ID和设置组ID
4.5 文件访问权限
4.6 新文件和目录的所有权
4.7 函数access和faccessat
4.8 函数umask
4.9 函数chmod、fchmod和fchmodat
4.10 粘着位
4.11 函数chown、fchown、fchownat和lchown
4.12 文件长度
4.13 文件截断
4.14 文件系统
4.15 函数link、linkat、unlink、unlinkat和remove
4.16 函数rename和renameat
4.17 符号链接
4.18 创建和读取符号链接
4.19 文件的时间
4.20 函数futimens、utimensat和utimes
4.21 函数mkdir、mkdirat和rmdir
4.22 读目录
4.23 函数chdir、fchdir和getcwd
4.24 设备特殊文件
4.25 文件访问权限位小结
4.26 小结
习题
第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 内存流
5.15 标准I/O的替代软件
5.16 小结
习题
第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 进程时间
8.18 小结
习题
第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、nanosleep和clock_nanosleep
10.20 函数sigqueue
10.21 作业控制信号
10.22 信号名和编号
10.23 小结
习题
第11章 线程
11.1 引言
11.2 线程概念
11.3 线程标识
11.4 线程创建
11.5 线程终止
11.6 线程同步
11.6.1 互斥量
11.6.2 避免死锁
11.6.3 函数pthread_mutex_timedlock
11.6.4 读写锁
11.6.5 带有超时的读写锁
11.6.6 条件变量
11.6.7 自旋锁
11.6.8 屏障
11.7 小结
习题
第12章 线程控制
12.1 引言
12.2 线程限制
12.3 线程属性
12.4 同步属性
12.4.1 互斥量属性
12.4.2 读写锁属性
12.4.3 条件变量属性
12.4.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 I/O多路转接
14.4.1 函数select和pselect
14.4.2 函数poll
14.5 异步I/O
14.5.1 System V异步I/O
14.5.2 BSD异步I/O
14.5.3 POSIX异步I/O
14.6 函数readv和writev
14.7 函数readn和writen
14.8 存储映射I/O
14.9 小结
习题
第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 POSIX信号量
15.11 客户进程-服务器进程属性
15.12 小结
习题
第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 UNIX域套接字
17.3 唯一连接
17.4 传送文件描述符
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.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 超文本传输协议HTTP
21.4 打印假脱机技术
21.5 源代码
21.6 小结
习题
附录A 函数原型
附录B 其他源代码
附录C 部分习题答案
参考书目
索引
——DennisRitchie,图灵奖得主,UNIX操作系统和C语言之父
“对任何一个严谨的、专业的UNIX系统程序员而言,本书都是不可或缺的权威参考书。Rago更新和扩展了Stevens的经典著作,并保持了原书的风貌。书中利用清晰的实例演示了API的使用过程,还提到了许多在不同UNIX系统实现上编程时需要注意的陷阱,并指出如何使用相关的标准(如POSIX1003.12004版和SingleUNIXSpecification第3版)来避免这些错误。”
——AndrewJosey,TheOpenGroup标准部门主管,POSIX1003.1标准工作组主席
“*的UNIX编程经典之一。”
——EricS.Raymond,《UNIX编程艺术》作者
“StephenRago的更新版本对于使用众多UNIX及相关操作系统环境的广大专业用户来说是一个迟来的喜讯。这一版不仅删除了过时的接口,吸纳了较新的开发接口,还根据UNIX及类UNIX操作系统环境的几种主流实现发布的新版本全面更新了所有主题、实例和应用的背景。难能可贵的是,这一版本还保持了经典的第1版的风格和品位。”
——MukeshKacker,ProntoNetworks公司联合创始人和前任CTO
“本书对于任何在UNIX系统上编写程序的开发人员来说都是非常重要的参考书。当我想要了解或者重新回顾各种系统接口时,这本书是*的求助工具。StephenRago成功地修订了本书,使其与新的操作系统(如GNU/Linux和苹果的OSX)相容,并保持了第1版易读和实用的特质。它将永远摆放在我桌上随手可及的位置。”
——BenjaminKuperman博士,斯沃斯莫尔学院
“这是每一位严谨的UNIXC程序员必备的书籍。它深入、全面、清晰的解释是无可匹敌的。”
——UniForumMonthly
“从W.RichardStevens的这本书中可以找到更多易于理解的、详尽的UNIX系统内部细节。这本书包含了大量实际的例子,对系统编程工作非常有益。”
——RS/Magazine
标准是不断演进的,1003.1标准也不例外。该标准的1988版,即IEEE标准1003.1—1988经修改后递交给IS0,它没有增加新的接口或功能,但修订了文本。最终的文档作为IEEE标准1003.1—1990正式出版[IEEE 1990],这也就是国际标准ISO/IEC 9945—1:1990。该标准通常称为POSIX.1,本书将使用此术语来表示不同版本的标准。
IEEE 1003.1工作组此后继续对这一标准做了更多修改。1996年,该标准的修订版发布,它包括了1003.1.1990、1003.1b—1993实时扩展标准以及被称为pthreads的多线程编程接口(POSIX线程),这就是国际标准IS0/IEC 9945—1:1996。1999年出版了IEEE标准1003.1d—1999,其中增加了更多实时接口。一年后,出版了IEEE标准l003.1j—2000和1003.1q—2000,前者包含了更多实时接口,后者增加了标准在事件跟踪方面的扩展。
2001年的1003.1版本与以前各版本有较大的差别,它组合了多个1003.1的修正、1003.2标准以及Single UNIX Specificaiton(SUS)第2版的若干部分(对于SUS,后面将进行更多说明),这形成了IEEE标准1003.1—2001,它包括下列几个标准。
ISO/IEC 9945—1(IEEE标准l003.1—1996),包括
IEEE标准1003.1—1990
IEEE标准1003.1b—1993(实时扩展)
IEEE标准1003.1c—1995(pthreads)
IEEE标准1003.1i—1995(实时技术勘误表)
IEEE P1003.1a草案(系统接口修正)
IEEE标准1003.1d—1999(高级实时扩展)
IEEE标准1003.1j—2000(更多高级实时扩展)
IEEE标准1003.1q—2000(跟踪)
部分IEEE标准1003.1g—2000(协议无关接口)
ISO/IEC 9945—2(IEEE标准1003.2—1993)
IEEE P1003.2b草案(shell及实用程序的修正)
IEEE标准1003.2d.1994(批处理扩展)。
……
悟空1900ag… –
计算机的经典,大块头,印刷纸张都非常好,当然最好的是内容
小哨兵 –
好书,steven的书,经典中的经典,买来当工具书挺好的~赞赞赞~就是有点贵……
反恐金鹰 –
印张还可以。内容不作评价,这种书的价值根据个人情况不同而不同。我个人还算满意。