计算机书籍控

UNIX环境高级编程(第3版)(英文版)

20多年来,严谨的C程序员都是依靠一本书来深入了解驱动UNIX和Linux内核的编程接口的实用知识的,这本书就是W. Richard Stevens所著的《UNIX高级环境编程》。现在,Stevens的同事Steve Rago彻底更新了这本经典著作。新的第3版支持当今领先的系统平台,反映了最新技术进展和最佳实践,并且符合最新的Single UNIX Specification第4版(SUSv4)。
Rago保留了使本书前版成为经典之作的精髓和方法。他在Stevens原著的基础上,从基础的文件、目录和进程讲起,并给诸如信号处理和终端I/O之类的先进技术保留较大的篇幅。他还深入讨论了线程和多线程编程、使用套接字接口驱动进程间通信(IPC)等方面的内容。
这一版涵盖了70多个最新版POSIX.1标准的新增接口,包括POSIX异步I/O、旋转锁、屏障(barrier)和POSIX信号量。此外,这一版删除了许多过时的接口,保留了一些广泛使用的接口。书中几乎所有实例都已经在目前最主流的4个平台上测试过,包括Solaris 10、Mac OS X 10.6.8(Darwin 10.8.0)、FressBSD 8.0、Ubuntu 12.04(基于Linux 3.2内核)。
与前两版一样,读者仍可以通过实例学习,这些实例包括了1万多行可下载的ISO C源代码,书中通过简明但完整的程序阐述了400多个系统调用和函数,清楚地说明它们的用法、参数和返回值。为了使读者能融会贯通,书中还提供了几个贯穿整章的案例,每个案例都根据现在的技术环境进行了全面更新。
本书帮助了几代程序员写出强大、高性能、可靠的代码。第3版根据当今主流系统进行更新,更具实用价值。

目录


第1章UNIX基础知识1
1.1引言1
1.2UNIX体系结构1
1.3登录1
1.4文件和目录3
1.5输入和输出6
1.6程序和进程8
1.7出错处理11
1.8用户标识13
1.9信号14
1.10时间值16
1.11系统调用和库函数17
1.12小结18
习题18
第2章UNIX标准及实现20
2.1引言20
2.2UNIX标准化20
2.2.1ISOC20
2.2.2IEEEPOSIX21
2.2.3SingleUNIXSpecification25
2.2.4FIPS26
2.3UNIX系统实现26
2.3.1SVR427
2.3.24.4BSD27
2.3.3FreeBSD28
2.3.4Linux28
2.3.5MacOSX28
2.3.6Solaris28
2.3.7其他UNIX系统29
2.4标准和实现的关系29
2.5限制29
2.5.1ISOC限制30
2.5.2POSIX限制31
2.5.3XSI限制33
2.5.4函数sysconf、pathconf和fpathconf33
2.5.5不确定的运行时限制40
2.6选项43
2.7功能测试宏46
2.8基本系统数据类型47
2.9标准之间的冲突48
2.10小结48
习题48
第3章文件I/O49
3.1引言49
3.2文件描述符49
3.3函数open和openat50
3.4函数creat52
3.5函数close53
3.6函数lseek53
3.7函数read57
3.8函数write57
3.9I/O的效率58
3.10文件共享59
3.11原子操作62
3.12函数dup和dup263
3.13函数sync、fsync和fdatasync65
3.14函数fcntl65
3.15函数ioctl70
3.16/dev/fd71
3.17小结72
习题72
第4章文件和目录74
4.1引言74
4.2函数stat、fstat、fstatat和lstat74
4.3文件类型75
4.4设置用户ID和设置组ID78
4.5文件访问权限79
4.6新文件和目录的所有权80
4.7函数access和faccessat81
4.8函数umask82
4.9函数chmod、fchmod和fchmodat84
4.10粘着位87
4.11函数chown、fchown、fchownat和lchown87
4.12文件长度89
4.13文件截断90
4.14文件系统90
4.15函数link、linkat、unlink、unlinkat和remove93
4.16函数rename和renameat95
4.17符号链接96
4.18创建和读取符号链接99
4.19文件的时间99
4.20函数futimens、utimensat和utimes101
4.21函数mkdir、mkdirat和rmdir103
4.22读目录104
4.23函数chdir、fchdir和getcwd108
4.24设备特殊文件110
4.25文件访问权限位小结112
4.26小结113
习题113
第5章标准I/O库115
5.1引言115
5.2流和FILE对象115
5.3标准输入、标准输出和标准错误116
5.4缓冲116
5.5打开流118
5.6读和写流120
5.7每次一行I/O122
5.8标准I/O的效率123
5.9二进制I/O125
5.10定位流126
5.11格式化I/O127
5.12实现细节131
5.13临时文件134
5.14内存流137
5.15标准I/O的替代软件140
5.16小结140
习题140
第6章系统数据文件和信息142
6.1引言142
6.2口令文件142
6.3阴影口令145
6.4组文件146
6.5附属组ID147
6.6实现区别148
6.7其他数据文件148
6.8登录账户记录149
6.9系统标识150
6.10时间和日期例程151
6.11小结157
习题157
第7章进程环境158
7.1引言158
7.2main函数158
7.3进程终止158
7.4命令行参数162
7.5环境表163
7.6C程序的存储空间布局163
7.7共享库165
7.8存储空间分配165
7.9环境变量168
7.10函数setjmp和longjmp170
7.11函数getrlimit和setrlimit175
7.12小结180
习题180
第8章进程控制181
8.1引言181
8.2进程标识181
8.3函数fork182
8.4函数vfork187
8.5函数exit188
8.6函数wait和waitpid190
8.7函数waitid194
8.8函数wait3和wait4195
8.9竞争条件196
8.10函数exec199
8.11更改用户ID和更改组ID204
8.12解释器文件207
8.13函数system211
8.14进程会计215
8.15用户标识220
8.16进程调度221
8.17进程时间224
8.18小结226
习题226
第9章进程关系228
9.1引言228
9.2终端登录228
9.3网络登录231
9.4进程组233
9.5会话234
9.6控制终端235
9.7函数tcgetpgrp、tcsetpgrp和tcgetsid237
9.8作业控制237
9.9shell执行程序240
9.10孤儿进程组244
9.11FreeBSD实现246
9.12小结248
习题248
第10章信号249
10.1引言249
10.2信号概念249
10.3函数signal256
10.4不可靠的信号259
10.5中断的系统调用260
10.6可重入函数262
10.7SIGCLD语义264
10.8可靠信号术语和语义266
10.9函数kill和raise267
10.10函数alarm和pause268
10.11信号集273
10.12函数sigprocmask275
10.13函数sigpending276
10.14函数sigaction278
10.15函数sigsetjmp和siglongjmp283
10.16函数sigsuspend286
10.17函数abort291
10.18函数system293
10.19函数sleep、nanosleep和clock_nanosleep298
10.20函数sigqueue300
10.21作业控制信号301
10.22信号名和编号303
10.23小结305
习题305
第11章线程307
11.1引言307
11.2线程概念307
11.3线程标识308
11.4线程创建309
11.5线程终止311
11.6线程同步318
11.6.1互斥量320
11.6.2避免死锁322
11.6.3函数pthread_mutex_timedlock327
11.6.4读写锁328
11.6.5带有超时的读写锁332
11.6.6条件变量332
11.6.7自旋锁335
11.6.8屏障336
11.7小结340
习题340
第12章线程控制341
12.1引言341
12.2线程限制341
12.3线程属性342
12.4同步属性345
12.4.1互斥量属性345
12.4.2读写锁属性352
12.4.3条件变量属性353
12.4.4屏障属性353
12.5重入354
12.6线程特定数据358
12.7取消选项361
12.8线程和信号364
12.9线程和fork367
12.10线程和I/O370
12.11小结371
习题371
第13章守护进程372
13.1引言372
13.2守护进程的特征372
13.3编程规则374
13.4出错记录377
13.5单实例守护进程380
13.6守护进程的惯例381
13.7客户进程—服务器进程模型386
13.8小结386
习题387
第14章高级I/O388
14.1引言388
14.2非阻塞I/O388
14.3记录锁391
14.4I/O多路转接403
14.4.1函数select和pselect404
14.4.2函数poll408
14.5异步I/O410
14.5.1SystemV异步I/O410
14.5.2BSD异步I/O411
14.5.3POSIX异步I/O411
14.6函数readv和writev419
14.7函数readn和writen421
14.8存储映射I/O422
14.9小结428
习题428
第15章进程间通信429
15.1 引言429
15.2 管道430
15.3函数popen和pclose436
15.4 协同进程441
15.5 FIFO445
15.6 XSIIPC448
15.6.1标识符和键448
15.6.2权限结构449
15.6.3结构限制450
15.6.4优点和缺点450
15.7 消息队列451
15.8 信号量455
15.9 共享存储459
15.10 POSIX信号量465
15.11 客户进程—服务器进程属性470
15.11小结472
习题472
第16章网络IPC:套接字474
16.1引言474
16.2套接字描述符474
16.3寻址477
16.3.1字节序477
16.3.2地址格式478
16.3.3 地址查询480
16.3.4 将套接字与地址关联486
16.4建立连接487
16.5数据传输491
16.6套接字选项502
16.7带外数据504
16.8非阻塞和异步I/O505
16.9小结506
习题506
第17章高级进程间通信507
17.1 引言507
17.2 UNIX域套接字507
17.3 唯一连接512
17.4 传送文件描述符518
17.5 open服务器进程第1版527
17.6 open服务器进程第2版533
17.7小结542
习题542
第18章终端I/O544
18.1引言544
18.2综述544
18.3特殊输入字符549
18.4获得和设置终端属性553
18.5终端选项标志554
18.6stty命令560
18.7波特率函数560
18.8行控制函数561
18.9终端标识562
18.10规范模式567
18.11非规范模式570
18.12终端窗口大小576
18.13termcap、terminfo和curses578
18.14小结578
习题579
第19章伪终端580
19.1引言580
19.2概述580
19.3打开伪终端设备585
19.4函数pty_fork588
19.5pty程序590
19.6使用pty程序595
19.7高级特性600
19.8小结601
习题601
第20章数据库函数库603
20.1 引言603
20.2 历史603
20.3函数库604
20.4 实现概述605
20.5集中式或非集中式608
20.6并发610
20.7构造函数库610
20.8源代码611
20.9性能635
20.10小结639
习题639
第21章与网络打印机通信640
21.1引言640
21.2网络打印协议640
21.3超文本传输协议HTTP642
21.4打印假脱机技术643
21.5源代码644
21.6小结684
习题684
附录A函数原型685
附录A函数原型附录B其他源代码721
附录C部分习题答案730
附录参考书目730
索引770

书籍下载

免费下载 密码:0b5g

正版书籍

UNIX环境高级编程(第3版)(英文版)