20好多年来,仔细认真的C程序员都是依靠一本好书来多方面把握控制器UNIX和Linux关键的程序编写插口的功能强大专业技能的,这这书就是W.RichardStevens经典著作的《UNIX高级环境编程》。现如今,Stevens的盆友SteveRago彻底升級了这一部经典著作。新的第三版可用目前领先的系统综合服务平台,最能体现*技术性进展和*社会实践活动,并且符合*的SingleUNIXSpecification第四版(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关键)。
与前两版同样,客户仍可以依据实例培训学习,这类实例包含了一万几行可一键下载的ISOC源代码,书中依据简略但详尽的操作程序阐述了400很多系统进程和函数,清楚地说明她们的操作方法、基本参数和返回值。便于使客户能融会贯通,书中还提供了好几个紧紧围绕整章的案例,每一案例都根据现如今的技术性自然环境进行了多方位升級。
本书帮助了多代程序员写出强悍、特性、可靠的编号。第三版根据目前流行系统进行升級,具备现实意义。
《UNIX环境高级编程(第3版)》是被称作UNIX编程“圣经”的AdvancedProgrammingintheUNIXEnvironment一书的第3版。在这书第2版出版发行后的8半年度,UNIX产生了极大的转变,非常是危害UNIX编程插口的相关规范发生变化。《UNIX环境高级编程(第3版)》在维持前版本设计风格的基本上,依据*的规范对內容开展了修定和增选,体现了*的技术性发展趋势。书中除开详细介绍UNIX文档和文件目录、规范I/O库、系统软件数据文件和信息内容、系统进程环境、系统进程操纵、系统进程关联、数据信号、进程、进程操纵、守护进程、各种各样I/O、进程间通信、互联网IPC、伪终端设备等层面的內容,还要这个基础上详细介绍了诸多运用案例,包含怎样创建数据库函数库及其怎样与网络打印机通讯等。除此之外,还要附则中得出了涵数原形和一部分练习题的参考答案。
《UNIX环境高级编程(第3版)》內容权威性,定义清楚,论述句句戳心,针对全部层级UNIX/Linux程序猿全是1本必不可少的教材。
目录
- 第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和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 部分习题答案
- 参考书目
- 索引