UNIX环境高级编程_第二版中文.pdf

2019-03-01 01:38|来源: (美)史蒂文斯 (美)拉戈 译者:尤晋元 张亚英 戚正伟

内容简介

《UNIX环境高级编程(第2版)》是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的更新版。在本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版的风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了多个应用示例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附录中给出了函数原型和部分习题的答案。

编辑推荐
《UNIX环境高级编程(第2版)》内容权威,概念清晰,阐述精辟,对于所有层次UNIX程序员都是一本不可或缺的参考书。

作者简介
作者:(美)史蒂文斯 (美)拉戈 译者:尤晋元 张亚英 戚正伟

W.Richard Stevens,备受赞誉的技术作家,生前著有多种经典的传世之作,包括《UNIX网络编程》(两卷本)、《TCP/IP详解》(三卷本)和本书第1版。 尤晋元,上海交通大学计算机科学及工程系教授、博士生导师。在科研方面,主要从事操作系统和分布对象计算技术方面的研究;在教学方面,长期承担操作系统及分布计算等课程的教学工作。主编和翻译了多本操作系统教材和参考书,包括《UNIX操作系统教程》、《UNIX高级编程技术》、《UNIX环境高级编程》和《操作系统:设计与实现》等。

目录
 第1章 UNIX基础知识 1  
1.1 引言 1  
1.2 UNIX体系结构 1  
1.3 登录 1  
1.4 文件和目录 3  
1.5 输入和输出 6  
1.6 程序和进程 8  
1.7 出错处理 10  
1.8 用户标识 12  
1.9 信号 14  
1.10 时间值 15  
1.11 系统调用和库函数 16  
1.12 小结 17  
习题 18  
第2章 UNIX标准化及实现 19  
2.1 引言 19  
2.2 UNIX标准化 19  
2.2.1 ISO C 19  
2.2.2 IEEE POSIX 20  
2.2.3 Single UNIX Specification 25  
2.2.4 FIPS 26  
2.3 UNIX系统实现 26  
2.3.1 SVR4 26  
2.3.2 4.4BSD 27  
2.3.3 FreeBSD 27  
2.3.4 Linux 27  
2.3.5 Mac OS X 28  
2.3.6 Solaris 28  
2.3.7 其他UNIX系统 28  
2.4 标准和实现的关系 28  
2.5 限制 29  
2.5.1 ISO C限制 29  
2.5.2 POSIX限制 30  
2.5.3 XSI限制 32  
2.5.4 sysconf、pathconf和fpathconf函数 32  
2.5.5 不确定的运行时限制 38  
2.6 选项 42  
2.7 功能测试宏 44  
2.8 基本系统数据类型 45  
2.9 标准之间的冲突 45  
2.10 小结 46  
习题 46  
第3章 文件I/O 47  
3.1 引言 47  
3.2 文件描述符 47  
3.3 open函数 48  
3.4 creat函数 49  
3.5 close函数 50  
3.6 lseek函数 50  
3.7 read函数 53  
3.8 write函数 54  
3.9 I/O的效率 54  
3.10 文件共享 56  
3.11 原子操作 59  
3.12 dup和dup2函数 60  
3.13 sync、fsync和fdatasync函数 61  
3.14 fcntl函数 62  
3.15 ioctl函数 66  
3.16 /dev/fd 67  
3.17 小结 68  
习题 68  
第4章 文件和目录 71  
4.1 引言 71  
4.2 stat、fstat和lstat函数 71  
4.3 文件类型 72  
4.4 设置用户ID和设置组ID 74  
4.5 文件访问权限 75  
4.6 新文件和目录的所有权 77  
4.7 access函数 77  
4.8 umask函数 79  
4.9 chmod和fchmod函数 81  
4.10 粘住位 83  
4.11 chown、fchown和lchown函数 84  
4.12 文件长度 85  
4.13 文件截短 86  
4.14 文件系统 86  
4.15 link、unlink、remove和rename函数 89  
4.16 符号链接 91  
4.17 symlink和readlink函数 94  
4.18 文件的时间 94  
4.19 utime函数 95  
4.20 mkdir和rmdir函数 97  
4.21 读目录 98  
4.22 chdir、fchdir和getcwd函数 102  
4.23 设备特殊文件 104  
4.24 文件访问权限位小结 106  
4.25 小结 106  
习题 107  
第5章 标准I/O库 109  
5.1 引言 109  
5.2 流和FILE对象 109  
5.3 标准输入、标准输出和标准出错 110  
5.4 缓冲 110  
5.5 打开流 112  
5.6 读和写流 114  
5.7 每次一行I/O 116  
5.8 标准I/O的效率 117  
5.9 二进制I/O 119  
5.10 定位流 120  
5.11 格式化I/O 121  
5.12 实现细节 125  
5.13 临时文件 127  
5.14 标准I/O的替代软件 130  
5.15 小结 130  
习题 130  
第6章 系统数据文件和信息 133  
6.1 引言 133  
6.2 口令文件 133  
6.3 阴影口令 136  
6.4 组文件 137  
6.5 附加组ID 138  
6.6 实现的区别 139  
6.7 其他数据文件 139  
6.8 登录账户记录 140  
6.9 系统标识 141  
6.10 时间和日期例程 142  
6.11 小结 146  
习题 146  
第7章 进程环境 147  
7.1 引言 147  
7.2 main函数 147  
7.3 进程终止 147  
7.4 命令行参数 151  
7.5 环境表 152  
7.6 C程序的存储空间布局 152  
7.7 共享库 154  
7.8 存储器分配 154  
7.9 环境变量 157  
7.10 setjmp和longjmp函数 159  
7.11 getrlimit和setrlimit函数 164  
7.12 小结 168  
习题 168  
第8章 进程控制 171  
8.1 引言 171  
8.2 进程标识符 171  
8.3 fork函数 172  
8.4 vfork函数 176  
8.5 exit函数 178  
8.6 wait和waitpid函数 179  
8.7 waitid函数 183  
8.8 wait3和wait4函数 184  
8.9 竞争条件 185  
8.10 exec函数 188  
8.11 更改用户ID和组ID 192  
8.12 解释器文件 196  
8.13 system函数 200  
8.14 进程会计 203  
8.15 用户标识 208  
8.16 进程时间 208  
8.17 小结 210  
习题 211  
第9章 进程关系 213  
9.1 引言 213  
9.2 终端登录 213  
9.3 网络登录 216  
9.4 进程组 218  
9.5 会话 219  
9.6 控制终端 220  
9.7 tcgetpgrp、tcsetpgrp和tcgetsid函数 221  
9.8 作业控制 222  
9.9 shell执行程序 225  
9.10 孤儿进程组 228  
9.11 FreeBSD实现 230  
9.12 小结 231  
习题 232  
第10章 信号 233  
10.1 引言 233  
10.2 信号概念 233  
10.3 signal函数 240  
10.4 不可靠的信号 242  
10.5 中断的系统调用 244  
10.6 可重入函数 246  
10.7 SIGCLD语义 248  
10.8 可靠信号术语和语义 250  
10.9 kill和raise函数 251  
10.10 alarm和pause函数 252  
10.11 信号集 256  
10.12 sigprocmask函数 258  
10.13 sigpending函数 259  
10.14 sigaction函数 261  
10.15 sigsetjmp和siglongjmp函数 266  
10.16 sigsuspend函数 268  
10.17 abort函数 274  
10.18 system函数 276  
10.19 sleep函数 280  
10.20 作业控制信号 282  
10.21 其他特征 284  
10.22 小结 285  
习题 285  
第11章 线程 287  
11.1 引言 287  
11.2 线程概念 287  
11.3 线程标识 288  
11.4 线程的创建 288  
11.5 线程终止 291  
11.6 线程同步 297  
11.7 小结 311  
习题 311  
第12章 线程控制 313  
12.1 引言 313  
12.2 线程限制 313  
12.3 线程属性 314  
12.4 同步属性 318  
12.5 重入 324  
12.6 线程私有数据 328  
12.7 取消选项 331  
12.8 线程和信号 333  
12.9 线程和fork 336  
12.10 线程和I/O 339  
12.11 小结 340  
习题 340  
第13章 守护进程 341  
13.1 引言 341  
13.2 守护进程的特征 341  
13.3 编程规则 342  
13.4 出错记录 345  
13.5 单实例守护进程 348  
13.6 守护进程的惯例 350  
13.7 客户进程-服务器进程模型 354  
13.8 小结 354  
习题 354  
第14章 高级I/O 355  
14.1 引言 355  
14.2 非阻塞I/O 355  
14.3 记录锁 357  
14.4 STREAMS 370  
14.5 I/O多路转接 379  
14.5.1 select和pselect函数 381  
14.5.2 poll函数 384  
14.6 异步I/O 386  
14.6.1 系统V异步I/O 386  
14.6.2 BSD异步I/O 387  
14.7 readv和writev函数 387  
14.8 readn和writen函数 389  
14.9 存储映射I/O 390  
14.10 小结 395  
习题 396  
第15章 进程间通信 397  
15.1 引言 397  
15.2 管道 398  
15.3 popen和pclose函数 403  
15.4 协同进程 408  
15.5 FIFO 412  
15.6 XSI IPC 415  
15.6.1 标识符和键 415  
15.6.2 权限结构 416  
15.6.3 结构限制 417  
15.6.4 优点和缺点 417  
15.7 消息队列 418  
15.8 信号量 422  
15.9 共享存储 427  
15.10 客户进程-服务器进程属性 432  
15.11 小结 434  
习题 434  
第16章 网络IPC:套接字 437  
16.1 引言 437  
16.2 套接字描述符 437  
16.3 寻址 439  
16.3.1 字节序 440  
16.3.2 地址格式 441  
16.3.3 地址查询 442  
16.3.4 将套接字与地址绑定 449  
16.4 建立连接 450  
16.5 数据传输 452  
16.6 套接字选项 464  
16.7 带外数据 466  
16.8 非阻塞和异步I/O 467  
16.9 小结 468  
习题 468  
第17章 高级进程间通信 469  
17.1 引言 469  
17.2 基于STREAMS的管道 469  
17.2.1 命名的STREAMS管道 472  
17.2.2 唯一连接 473  
17.3 UNIX域套接字 476  
17.3.1 命名UNIX域套接字 477  
17.3.2 唯一连接 478  
17.4 传送文件描述符 482  
17.4.1 经由基于STREAMS的管道传送文件描述符 484  
17.4.2 经由UNIX域套接字传送文件描述符 486  
17.5 open服务器版本1 493  
17.6 open服务器版本2 498  
17.7 小结 505  
习题 505  
第18章 终端I/O 507  
18.1 引言 507  
18.2 综述 507  
18.3 特殊输入字符 512  
18.4 获得和设置终端属性 516  
18.5 终端选项标志 516  
18.6 stty命令 522  
18.7 波特率函数 523  
18.8 行控制函数 524  
18.9 终端标识 524  
18.10 规范模式 529  
18.11 非规范模式 532  
18.12 终端的窗口大小 537  
18.13 termcap,terminfo和curses 539  
18.14 小结 540  
习题 540  
第19章 伪终端 541  
19.1 引言 541  
19.2 概述 541  
19.3 打开伪终端设备 544  
19.3.1 基于STREAMS的伪终端 547  
19.3.2 基于BSD的伪终端 549  
19.3.3 基于Linux的伪终端 551  
19.4 pty_fork函数 553  
19.5 pty程序 555  
19.6 使用pty程序 559  
19.7 高级特性 564  
19.8 小结 565  
习题 565  
第20章 数据库函数库 567  
20.1 引言 567  
20.2 历史 567  
20.3 函数库 568  
20.4 实现概述 569  
20.5 集中式或非集中式 572  
20.6 并发 574  
20.7 构造函数库 574  
20.8 源代码 575  
20.9 性能 598  
20.10 小结 600  
习题 601  
第21章 与网络打印机通信 603  
21.1 引言 603  
21.2 网络打印协议 603  
21.3 超文本传输协议 605  
21.4 打印假脱机技术 605  
21.5 源代码 607  
21.6 小结 644  
习题 645  
附录A 函数原型 647  
附录B 其他源代码 677  
附录C 部分习题答案 685  
参考书目 709  
索引 715

相关问答

更多
  • 相关链接:网页链接 点击进入然后下载即可。 Python介绍: Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。 Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。 Pyth ...
  • ubuntu是可以的。编译环境的话装好ubuntu之后就自带了,你可以打开终端输入gcc -v就知道你的编译器版本了。还有你可能需要装其他的库文件。 那本书的话建议你在没有了解linux系统的时候,最好从基础开始学起,不管怎么说,里面需要熟悉很多linux的命令,尽管他的名字是《 UNIX环境高级编程》,但是他在序言里面说了,第二版的书涉及linux。 你最好还是去了解一下系统的命令怎么用,然后再去学习。
  • 嵌入式资讯网--提供嵌入式/开发板/嵌入式培训/Linux/Unix资讯上面很全的,你要的东西都有 http://www.embeded.cn/down_list/down_top.php?page=4&ClassCode=005005&UserType=
  • 应该是没有 看了目录感觉和其他教材差别不是很大呀 一定要的话去当当订书吧
  • 楼上的胡说,第二版是因为python版本的升级而对第一版进行的修订,这本书挺适合初学者,基础部分讲的很细 建议装个python,可以一边学习,一边试验 这本书针对python2.5的,千万不要装了3.1 建议别买,有电脑的话去下个pdf就行
  • 嵌入式资讯网--提供嵌入式/开发板/嵌入式培训/Linux/Unix资讯上面很全的,你要的东西都有 http://www.embeded.cn/down_list/down_top.php?page=4&ClassCode=005005&UserType=
  • ubuntu是可以的。编译环境的话装好ubuntu之后就自带了,你可以打开终端输入gcc -v就知道你的编译器版本了。还有你可能需要装其他的库文件。 那本书的话建议你在没有了解linux系统的时候,最好从基础开始学起,不管怎么说,里面需要熟悉很多linux的命令,尽管他的名字是《 UNIX环境高级编程》,但是他在序言里面说了,第二版的书涉及linux。 你最好还是去了解一下系统的命令怎么用,然后再去学习。
  • 书比较新,网上不好找 还是买吧,我都是买的新书。 不过看完这本书的感觉是,它几乎不讲底层源码,如果你想在ExtJS上达到大师级的水平的话,"ExtJs源码分析与实例宝典"似乎不错。我正想买那本书呢。 如果你只是想了解Ext一些常用功能的话,《深入浅出extjs》也凑合
  • 刚出的书,没有这么快又电子版出来吧,不然人家的书怎么买啊。
  • 文字版的,比那些扫描的适合打印一些,收到请回个信