编辑推荐
两卷本的《UNIX网络编程》是已故技术作家W. Richard Stevens的传世之作。卷2着重讨论如何让应用程序与在其他机器上的应用程序进行对话。
良好的进程间通信(IPC)机制是提高UNIX程序性能的关键。本书全面深入地讲解了各种进程间通信形式,包括消息传递、同步、共享内存及远程调用(RPC)。书中包含了大量经过优化的源代码,帮助读者加深理解。这些源代码可以从本书网站下载。
本书是网络研究和开发人员公认的参考书,无论网络编程的初学者还是网络专家都会大受裨益。
内容简介
本书是一部UNIX网络编程的经典之作。进程间通信(IPC)几乎是所有Unix程序性能的关键,理解IPC也是理解如何开发不同主机间网络应用程序的必要条件。本书从对Posix IPC和System V IPC的内部结构开始讨论,全面深入地介绍了4种IPC形式:消息传递(管道、FIFO、消息队列)、同步(互斥锁、条件变量、读写锁、文件与记录锁、信号量)、共享内存(匿名共享内存、具名共享内存)及远程过程调用(Solaris 门、Sun RPC)。附录中给出了测量各种 IPC形式性能的方法。
本书内容详尽,几乎每章都提供精选的习题,并提供了部分习题的答案,是网络研究和开发人员理想的参考书。
作者简介
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 / 简介 1
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 27
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.99 Summary / 小结 38
Part 2 Message Passing / 消息传递 41
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 One 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_getattr and mq_setattr Functions / mq_getattr和mq_setattr函数 79
5.4 mq_send and mq_receive Functions / mq_send和mq_receive函数 82
5.5 Message Queue Limits / 消息队列限制 86
5.6 mq_notify Function / mq_notify函数 87
5.7 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 / 同步 157
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 Obtaining 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_trywait函数 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.4 4.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 shm_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 / 远程过程调用 353
Chapter 15. Doors / 门 355
15.1 Introduction / 概述 355
15.2 door_call Function / door_call函数 361
15.3 door_create Function / door_create函数 363
15.4 door_return Function / door_return函数 364
15.5 door_cred Function / door_cred函数 365
15.6 door_info Function / door_info函数 365
15.7 Examples / 示例 366
15.8 Descriptor Passing / 描述符传递 379
15.9 door_server_create Function / door_server_create函数 384
15.10 door_bind, door_unbind, and door_revoke Functions / door_bind、door_unbind和door_revoke函数 390
15.11 Premature Termination of Client or Server / 客户或服务器的过早终止 390
15.12 Summary / 小结 397
Chapter 16. Sun RPC 399
16.1 Introduction / 概述 399
16.2 Multithreading / 多线程技术 407
16.3 Server Binding / 服务器绑定 411
16.4 Authentication / 鉴别 414
16.5 Timeout and Retransmission / 超时和重传 417
16.6 Call Semantics / 调用语义 422
16.7 Premature Termination of Client or Server / 客户或服务器的过早终止 424
16.8 XDR: External Data Representation / XDR:外部数据表示 426
16.9 RPC Packet Formats / RPC分组格式 444
UNIX网络编程 卷2 进程间通信 第2版 英文版 epub pdf mobi txt 电子书 下载 2024
UNIX网络编程 卷2 进程间通信 第2版 英文版 下载 epub mobi pdf txt 电子书 2024