Part 1.简介 1
Chapter 1.简介 3
1.1 概述 3
1.2 进程、线程与信息共享 5
1.3 IPC对象的持续性 6
1.4 名字空间 7
1.5 fork、exec和exit对IPC对象的影响 9
1.6 错误处理:包装函数 11
1.7 Unix标准 13
1.8 本书中IPC示例的路线图 15
1.9 小结 16
Chapter 2.Posix IPC 19
2.1 概述 19
2.2 IPC名字 19
2.3 创建与打开IPC通道 22
2.4 IPC权限 25
2.5 小结 26
Chapter 3.System V IPC 27
3.1 概述 27
3.2 key_t键和ftok函数 28
3.3 ipc_perm结构 30
3.4 创建与打开IPC通道 30
3.5 IPC权限 32
3.6 标识符重用 34
3.7 ipcs和ipcrm程序 36
3.8 内核限制 36
3.9 小结 38
Part 2.消息传递 41
Chapter 4.管道和FIFO 43
4.1 概述 43
4.2 一个简单的客户-服务器示例 43
4.3 管道 44
4.4 全双工管道 50
4.5 popen和pclose函数 52
4.6 FIFOs 54
4.7 管道和FIFO的额外属性 58
4.8 单服务器,多客户 60
4.9 迭代服务器与并发服务器的比较 66
4.10 流与消息 67
4.11 管道和FIFO限制 72
4.12 小结 73
Chapter 5.Posix消息队列 75
5.1 概述 75
5.2 mq_open、mq_close和mq_unlink函数 76
5.3 mq_getattr和mq_setattr函数 79
5.4 mq_send和mq_receive函数 82
5.5 消息队列限制 86
5.6 mq_notify函数 87
5.7 Posix实时信号 98
5.8 使用内存映射I/O实现 106
5.9 小结 126
Chapter 6.System V消息队列 129
6.1 概述 129
6.2 msgget函数 130
6.3 msgsnd函数 131
6.4 msgrcv函数 132
6.5 msgctl函数 134
6.6 简单的程序 135
6.7 客户-服务器示例 140
6.8 多路复用消息 142
6.9 消息队列上使用select和poll 151
6.10 消息队列限制 152
6.11 小结 155
Part 3.同步 157
Chapter 7.互斥锁和条件变量 159
7.1 概述 159
7.2 互斥锁:加锁与解锁 159
7.3 生产者-消费者问题 161
7.4 加锁与等待 165
7.5 条件变量:等待与信号发送 167
7.6 条件变量:定时等待和广播 171
7.7 互斥锁和条件变量的属性 172
7.8 小结 174
Chapter 8.读写锁 177
8.1 概述 177
8.2 获取与释放读写锁 178
8.3 读写锁属性 179
8.4 使用互斥锁和条件变量实现 179
8.5 线程取消 187
8.6 小结 192
Chapter 9.记录加锁 193
9.1 概述 193
9.2 记录加锁与文件加锁 197
9.3 Posix fcntl记录加锁 199
9.4 劝告性加锁 203
9.5 强制性加锁 204
9.6 读出者和写入者的优先级 207
9.7 只启动守护进程的一个副本 213
9.8 锁文件 214
9.9 NFS加锁 216
9.10 小结 216
Chapter 10.Posix信号量 219
10.1 概述 219
10.2 sem_open、sem_close和sem_unlink函数 225
10.3 sem_wait和sem_trywait函数 226
10.4 sem_post和sem_getvalue函数 227
10.5 简单的程序 228
10.6 生产者-消费者问题 233
10.7 文件加锁 238
10.8 sem_init和sem_destroy函数 238
10.9 多生产者,单消费者 242
10.10 多生产者,多消费者 245
10.11 多缓冲区 249
10.12 进程间共享信号量 256
10.13 信号量限制 257
10.14 使用FIFO实现 257
10.15 使用内存映射I/O实现 262
10.16 使用System V信号量实现 271
10.17 小结 278
Chapter 11.System V信号量 281
11.1 概述 281
11.2 semget函数 282
11.3 semop函数 285
11.4 semctl函数 287
11.5 简单的程序 289
11.6 文件加锁 294
11.7 信号量限制 296
11.8 小结 300
Part 4.共享内存 301
Chapter 12.共享内存简介 303
12.1 概述 303
12.2 mmap、munmap和msync函数 307
12.3 内存映射文件中的计数器递加 311
12.4 4.4BSD匿名内存映射 315
12.5 SVR4/dev/zero内存映射 316
12.6 引用内存映射的对象 317
12.7 小结 322
Chapter 13.Posix共享内存 325
13.1 概述 325
13.2 shm_open和shm_unl_ink函数 326
13.3 ftruncate和fstat函数 327
13.4 简单的程序 328
13.5 共享计数器递加 333
13.6 向服务器发送消息 336
13.7 小结 342
Chapter 14.System V共享内存 343
14.1 概述 343
14.2 shmget函数 343
14.3 shmat函数 344
14.4 shmdt函数 345
14.5 shmctl函数 345
14.6 简单的程序 346
14.7 共享内存限制 349
14.8 小结 351
Part 5.远程过程调用 353
Chapter 15.门 355
15.1 概述 355
15.2 door_call函数 361
15.3 door_create函数 363
15.4 door_return函数 364
15.5 door_cred函数 365
15.6 door_info函数 365
15.7 示例 366
15.8 描述符传递 379
15.9 door_server_create函数 384
15.10 door_bind、door_unbind和door_revoke函数 390
15.11 客户或服务器的过早终止 390
15.12 小结 397
Chapter 16.Sun RPC 399
16.1 概述 399
16.2 多线程技术 407
16.3 服务器绑定 411
16.4 鉴别 414
16.5 超时和重传 417
16.6 调用语义 422
16.7 客户或服务器的过早终止 424
16.8 XDR:外部数据表示 426
16.9 RPC分组格式 444
16.10 小结 449
后记 453
Appendix A.性能测量 457
A.1 概述 457
A.2 结果 458
A.3 消息传递带宽程序 467
A.4 消息传递延迟程序 480
A.5 线程同步程序 486
A.6 进程同步程序 497
Appendix B.A Threads Primer 501
B.1 概述 501
B.2 基本线程函数:创建和终止 502
Appendix C.其他源代码 505
C.1 unpipc.h头文件 505
C.2 config.h头文件 509
C.3 标准错误处理函数 510
Appendix D.精选习题答案 515
参考文献 535