W. Richard Stevens,靠前知名的UNIX和网络专家,备受赞誉的技术作家。他1951年2月5日出生于赞比亚,后随父母回到美国。中学时就读于弗吉尼亚菲什伯恩军事学校,1973年获得密歇根大学航空和航天工程学士学位。1975年至1982年,他在亚利桑那州图森市的基特峰国家天文台从事计算机编程工作,业余时间喜爱飞行运动,做过兼职飞行教练。这期间他分别在1978年和1982年获得亚利桑那大学系统工程硕士和博士学位。此后他去康涅狄格州纽黑文的健康系统靠前公司任主管计算机服务的副总裁。1990年他回到图森,从事专业技术写作和咨询工作。写下了多种经典的传世之作,包括《TCP/IP详解》(三卷)、《UNIX环境不错编程》和《UNIX网络编程》(两卷)。Stevens于1999年9月1日去世,年仅48岁。2000年他被靠前机构USENIX追授“终身成就奖”。
无
Part 1.Introduction /简介 Chapter 1.Introduction/简介 3 1.1 Introduction/概述 3 1.2 Processes, Threads, and the Sharing of Information/进程、线程与信息共享 5 1.3 Persistence of IPC Objects /IPC对象的持续性 6 1.4 Name Spaces/名字空间 7 1.5 Effect of fork, exec, and exit on IPC Objects/fork.exec和exit对IPC对象的影响 9 1.6 Error Handling: Wrapper Functions/错误处理:包装函数 11 1.7 Unix Standards/Unix标准 13 1.8 Road Map to IPC Examples in the Text/本书中IPC示例的路线图 15 1.9 Summary/小结 16 Chapter 2.Posix IPC 19 2.1 Introduction,概述 19 2.2 IPC Names /IPC名字 19 2.3 Creating and Opening IPC Channels/创建与打开IPC通道 22 2.4 IPC Permissions /IPC权限 25 2.5 Summary/小结 26 Chapter 3.System V IPC 3.1 Introduction/概述 27 3.2 key_t Keys and ftok Function/key_t键和ftok函数 28 3.3 ipc_perm Structure/ipc_perm结构 30 3.4 Creating and Opening IPC Channels/创建与打开IPC通道 30 3.5 IPC Permissions /IPC权限 32 3.6 Identifier Reuse/标识符重用 34 3.7 ipcs and ipcrm Programs /ipcs和ipcrm程序 36 3.8 Kernel Limits/内核限制 36 3.9 Summary/小结 38 Part 2.Message Passing/消息传递 Chapter 4.Pipes and FIFOs/管道和FIFO 43 4.1 Introduction/概述 43 4.2 A Simple Client—Server Example/一个简单的客户一服务器示例 43 4.3 Pipes/管道 44 4.4 Full—Duplex Pipes/全双工管道 50 4.5 popen and pclose Functions/popen和pclose函数 52 4.6 FIFOs 54 4.7 Additional Properties of Pipes and FIFOs/管道和FIFO的额外属性 58 4.8 0ne Server, Multiple Clients/单服务器,多客户 60 4.9 Iterative versus Concurrent Servers/迭代服务器与并发服务器的比较 66 4.10 Streams and Messages/流与消息 67 4.11 Pipe and FIFO Limits/管道和FIFO限制 72 4.12 Summary/小结 73 Chapter 5.Posix Message Queues/Posix消息队列 75 5.1 Introduction/概述 75 5.2 mq_open, mq_close, and mq_unlink Functions/mq_open.mq_close和mq_unlink函数 76 5.3 mq_get attr and mq_setattr Functions/mq_getattr和mq_setattr函数 79 5.4 mq_send and mq_receive Functions/mq_senc和mq_receive函数 82 5.5 Message Queue Limits/消息队列限制 86 5.6 mq_notify Function/mq_notify函数 87 57 Posix Realtime Signals/Posix实时信号 98 5.8 Implementation Using Memory—Mapped I/O/使用内存映射I/O实现 106 5.9 Summary/小结 126 Chapter 6.System V Message Queues/System V消息队列 129 6.1 Introduction/概述 129 6.2 msgget Function /msgget函数 130 6.3 msgsnd Function/msgsnd函数 131 6.4 msgrcv Function/msgrcv函数 132 6.5 msgctl Function /msgctl函数 134 6.6 Simple Programs,简单的程序 135 6.7 Client—Server Example/客户—服务器示例 140 6.8 Multiplexing Messages,多路复用消息 142 6.9 Message Queues with select and poll/消息队列上使用select和poll 151 6.10 Message Queue Limits,消息队列限制 152 6.11 Summary/小结 155 Part 3.Synchronization/同步 Chapter 7.Mutexes and Condition Variables/互斥锁和条件变量 159 7.1 Introduction/概述 159 7.2 Mutexes: Locking and Unlocking/互斥锁:加锁与解锁 159 7.3 Producer—Consumer Problem/生产者—消费者问题 161 7.4 Locking versus Waiting/加锁与等待 165 7.5 Condition Variables: Waiting and Signaling/条件变量:等待与信号发送 167 7.6 Condition Variables: Timed Waits and Broadcasts/条件变量:定时等待和广播 171 7.7 Mutexes and Condition Variable Attributes/互斥锁和条件变量的属性 172 7.8 Summary/小结 174 Chapter 8.Read—Write Locks/读写锁 177 8.1 Introduction/概述 177 8.2 0btaining and Releasing Read—Write Locks/获取与释放读写锁 178 8.3 Read—Write Lock Attributes/读写锁属性 179 8.4 Implementation Using Mutexes and Condition Variables/使用互斥锁和条件变量实现 179 8.5 Thread Cancellation/线程取消 187 8.6 Summary/小结 192 Chapter 9.Record Locking/记录加锁 193 9.1 Introduction/概述 193 9.2 Record Locking versus File Locking/记录加锁与文件加锁 197 9.3 Posix fcntl Record Locking /Posix fcntl记录加锁 199 9.4 Advisory Locking/劝告性加锁 203 9.5 Mandatory Locking,强制性加锁 204 9.6 Priorities of Readers and Writers/读出者和写入者的优先级 207 9.7 Starting Only One Copy of a Daemon/只启动守护进程的一个副本 213 9.8 Lock Files/锁文件 214 9.9 NFS Locking/NFS加锁 216 9.10 Summary/小结 216 Chapter 10.Posix Semaphores/Posix信号量 219 10.1 Introduction/概述 219 10.2 sem_open, sem_close, and sem_unlink Functions/sem_open.sem_close和sem_unlink函数 225 10.3 sem_wait and sem_trywait Functions/sem_wait和sem_t rywait函数 226 10.4 sem_post and sem_getvalue Functions/sem_post和sem_getvalue函数 227 10.5 Simple Programs/简单的程序 228 10.6 Producer—Consumer Problem/生产者—消费者问题 233 10.7 File Locking/文件加锁 238 10.8 sem_init and sem_destroy Functions/sem_init和sem_destroy函数 238 10.9 Multiple Producers, One Consumer/多生产者,单消费者 242 10.10 Multiple Producers, Multiple Consumers/多生产者,多消费者 245 10.11 Multiple Buffers/多缓冲区 249 10.12 Sharing Semaphores between Processes/进程间共享信号量 256 10.13 Semaphore Limits/信号量限制 257 10.14 Implementation Using FIFOs/使用FIFO实现 257 10.15 Implementation Using Memory—Mapped I/O,使用内存映射I/O实现 262 10.16 Implementation Using System V Semaphores,使用System V信号量实现 271 10.17 Summary/小结 278 Chapter 11.System V Semaphores/System V信号量 281 11.1 Introduction/概述 281 11.2 semget Function/semget函数 282 11.3 semop Function/semop函数 285 11.4 semctlFunction/semctl函数 287 11.5 Simple Programs/简单的程序 289 11.6 File Locking/文件加锁 294 11.7 Semaphore Limits/信号量限制 296 11.8 Summary/小结 300 Part 4.Shared Memory/共享内存 301 Chapter 12.Shared Memory Introduction/共享内存简介 303 12.1 Introduction/概述 303 12.2 mmap, munmap, and msync Functions /mmap.munmap和msync函数 307 12.3 Increment Counter in a Memory—Mapped File/内存映射文件中的计数器递加 311 12.44.4BSD Anonymous Memory Mapping /4.4BSD匿名内存映射 315 12.5 SVR4 /dev/zero Memory Mapping/SVR4 /dev/zero内存映射 316 12.6 Referencing Memory—Mapped Objects/引用内存映射的对象 317 12.7 Summary/小结 322 Chapter 13.Posix Shared Memory/Posix共享内存 325 13.1 Introduction/概述 325 13.2 shm_open and stim_unlink Functions/shm_open和shm_unlink函数 326 13.3 ftruncate and fstat Functions/ftruncate和fstat函数 327 13.4 Simple Programs/简单的程序 328 13.5 Incrementing a Shared Counter/共享计数器递加 333 13.6 Sending Messages to a Server/向服务器发送消息 336 13.7 Summary/小结 342 Chapter 14.System V Shared Memory/System V共享内存 343 14.1 Introduction/概述 343 14.2 shmget Function/shmget函数 343 14.3 shmat Function/shmat函数 344 14.4 shmdt Function/shmdt函数 345 14.5 shmctl Function/ shmctl函数 345 14.6 Simple Programs/简单的程序 346 14.7 Shared Memory Limits/共享内存限制 349 14.8 Summary/小结 351 …… Part 5.Remote Procedure Calls/远程过程调用 Epilogue/后记 Appendix A.Performance Measurements/性能测量 Appendix B.A Threads Primer Appendix C.Miscellaneous Source Code/其他源代码 Appendix D.Solutions to Selected Exercises/精选习题答案 Bibliography/参考文献