基本信息
名称: UNIX环境高级编程(第3版)(英文版)
作者信息: 作者: 史蒂文斯 (W.Richard Stevens) [ 英文 pdf ]
简单介绍
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346
| 第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
|
亚马逊链接