UNIX网络编程 卷2:进程间通信(第2版•英文版)

978-7-115-40131-1
作者: 【美】W. Richard Stevens(W. 理查德•史蒂文斯)
译者: 无
编辑: 杨海玲

图书目录:

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

16.10 Summary / 小结  449

Epilogue / 后记 453

Appendix A. Performance Measurements / 性能测量 457

A.1 Introduction / 概述  457

A.2 Results / 结果  458

A.3 Message Passing Bandwidth Programs / 消息传递带宽程序  467

A.4 Message Passing Latency Programs / 消息传递延迟程序  480

A.5 Thread Synchronization Programs / 线程同步程序  486

A.6 Process Synchronization Programs / 进程同步程序  497

Appendix B. A Threads Primer 501

B.1 Introduction / 概述  501

B.2 Basic Thread Functions: Creation and Termination / 基本线程函数:创建和终止  502

Appendix C. Miscellaneous Source Code / 其他源代码 505

C.1 unpipc.h Header / unpipc.h头文件  505

C.2 config.h Header / config.h头文件  509

C.3 Standard Error Functions / 标准错误处理函数  510

Appendix D. Solutions to Selected Exercises / 精选习题答案 515

Bibliography / 参考文献 535

详情

本书是一部UNIX 网络编程的经典之作!进程间通信(IPC)几乎是所有Unix程序性能的关键,理解IPC也是理解如何开发不同主机间网络应用程序的必要条件。本书从对Posix IPC 和System V IPC的内部结构开始讨论,全面深入地介绍了4 种IPC形式:消息传递、同步、共享内存及远程过程调用。本书内容详尽且具权威性,几乎每章都提供精选的习题,并提供了部分习题的答案。

图书摘要

相关图书

Linux常用命令自学手册
Linux常用命令自学手册
庖丁解牛Linux操作系统分析
庖丁解牛Linux操作系统分析
Linux后端开发工程实践
Linux后端开发工程实践
轻松学Linux:从Manjaro到Arch Linux
轻松学Linux:从Manjaro到Arch Linux
Linux高性能网络详解:从DPDK、RDMA到XDP
Linux高性能网络详解:从DPDK、RDMA到XDP
跟老韩学Linux架构(基础篇)
跟老韩学Linux架构(基础篇)

相关文章

相关课程