UNIX网络编程:卷1+卷2 共2册pdf下载

UNIX网络编程:卷1+卷2 共2册百度网盘pdf下载

作者:
简介:UNIX网络编程:卷1+卷2 共2册
出版社:
出版时间:
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

卷1

编辑推荐

1. UNIX网络专家W. Richard Stevens的传世之作。 2. 世界著名网络专家Bill Fenner和Andrew M. Rudoff执笔,根据网络技术的发展,进行全面修订。 这是一部传世之作!网络编程专家Bill Fenner和Andrew M.Rudoff 应邀执笔,对W.RichardStevens 的作品进行修订。书中吸纳了近几年网络技术的发展,增添了IPv6、SCTP 协议和密钥管理套接字等内容,深入讨论了关键标准、实现和技术。书中的所有示例都是在UNIX 系统上测试通过的真实的、可运行的代码,继承了Stevens 一直强调的理念:“学习网络编程的*好方法就是下载这些程序,对其进行修改和改进,只有这样实际编写代码才能深入理解有关概念和方法。”本书为UNIX 网络编程提供全面的指导,是网络研究和开发人员公认的必不可少的参考书,无论网络编程的初学者还是网络专家都会大受裨益。

内容简介

本书是UNIX网络编程的经典之作。书中全面深入地介绍了如何使用套接字API进行网络编程。全书不但介绍了基本编程内容,还涵盖了与套接字编程相关的高级主题,对于客户/服务器程序的各种设计方法也作了完整的探讨,最后还深入分析了流这种设备驱动机制。

 

本书内容详尽且具**性,几乎每章都提供精选的习题,并提供了部分习题的答案,是网络研究和开发人员理想的参考书。

作者简介

W. 理查.史蒂文斯(W. Richard Stevens)(1951—1999) 国际知名的UNIX和网络专家,备受赞誉的技术作家。生前著有《TCP/IP详解》(三卷)、《UNIX环境高级编程》和《UNIX网络编程》(两卷),均为不朽的经典著作。比尔.芬纳(Bill Fenner) AT&T实验室主任研究员,专攻IP多播、网络管理和测量,他是IETF路由的领域主管之一,是RFC标准文档的批准人。安德鲁.M. 鲁道夫(Andrew M.Rudoff) Sun公司资深软件工程师,专攻网络、操作系统内核、文件系统和高可用性软件体系结构。

目录

目  录

 

第 一部分 简介和TCP/IP

 

第 1章 简介 2

 

1.1 概述 2

 

1.2 一个简单的时间获取客户程序 5

 

1.3 协议无关性 9

 

1.4 错误处理:包裹函数 10

 

1.5 一个简单的时间获取服务器程序 12

 

1.6 本书中客户/服务器程序示例索引表 14

 

1.7 OSI模型 16

 

1.8 BSD网络支持历史 17

 

1.9 测试用网络及主机 19

 

1.10 Unix标准 22

 

1.11 64位体系结构 24

 

1.12 小结 25

 

习题 25

 

第 2章 传输层:TCP、UDP和SCTP 27

 

2.1 概述 27

 

2.2 总图 27

 

2.3 用户数据报协议(UDP) 29

 

2.4 传输控制协议(TCP) 30

 

2.5 流控制传输协议(SCTP) 31

 

2.6 TCP连接的建立和终止 31

 

2.7 TIME_WAIT状态 37

 

2.8 SCTP关联的建立和终止 38

 

2.9 端口号 42

 

2.10 TCP端口号与并发服务器 43

 

2.11 缓冲区大小及限制 45

 

2.12 标准因特网服务 50

 

2.13 常见因特网应用的协议使用 51

 

2.14 小结 52

 

习题 53

 

第二部分 基本套接字编程

 

第3章 套接字编程简介 56

 

3.1 概述 56

 

3.2 套接字地址结构 56

 

3.3 值—结果参数 61

 

3.4 字节排序函数 63

 

3.5 字节操纵函数 66

 

3.6 inet_aton、inet_addr和inet_ntoa函数 67

 

3.7 inet_pton和inet_ntop函数 68

 

3.8 sock_ntop和相关函数 70

 

3.9 readn、writen和readline函数 72

 

3.10 小结 76

 

习题 76

 

第4章 基本TCP套接字编程 77

 

4.1 概述 77

 

4.2 socket函数 77

 

4.3 connect函数 80

 

4.4 bind函数 81

 

4.5 listen函数 84

 

4.6 accept函数 88

 

4.7 fork和exec函数 90

 

4.8 并发服务器 91

 

4.9 close函数 93

 

4.10 getsockname和getpeername函数 94

 

4.11 小结 96

 

习题 96

 

第5章 TCP客户/服务器程序示例 97

 

5.1 概述 97

 

5.2 TCP回射服务器程序:main函数 97

 

5.3 TCP回射服务器程序:str_echo函数 98

 

5.4 TCP回射客户程序:main函数 99

 

5.5 TCP回射客户程序:str_cli函数 100

 

5.6 正常启动 101

 

5.7 正常终止 102

 

5.8 POSIX信号处理 103

 

5.9 处理SIGCHLD信号 106

 

5.10 wait和waitpid函数 108

 

5.11 accept返回前连接中止 111

 

5.12 服务器进程终止 112

 

5.13 SIGPIPE信号 113

 

5.14 服务器主机崩溃 114

 

5.15 服务器主机崩溃后重启 115

 

5.16 服务器主机关机 116

 

5.17 TCP程序例子小结 116

 

5.18 数据格式 117

 

5.19 小结 120

 

习题 120

 

第6章 I/O复用:select和poll函数 122

 

6.1 概述 122

 

6.2 I/O模型 122

 

6.3 select函数 127

 

6.4 str_cli函数(修订版) 132

 

6.5 批量输入 133

 

6.6 shutdown函数 136

 

6.7 str_cli函数(再修订版) 137

 

6.8 TCP回射服务器程序(修订版) 138

 

6.9 pselect函数 142

 

6.10 poll函数 144

 

6.11 TCP回射服务器程序(再修订版) 146

 

6.12 小结 148

 

习题 149

 

第7章 套接字选项 150

 

7.1 概述 150

 

7.2 getsockopt和setsockopt函数 150

 

7.3 检查选项是否受支持并获取默认值 152

 

7.4 套接字状态 156

 

7.5 通用套接字选项 156

 

7.6 IPv4套接字选项 168

 

7.7 ICMPv6套接字选项 169

 

7.8 IPv6套接字选项 169

 

7.9 TCP套接字选项 171

 

7.10 SCTP套接字选项 173

 

7.11 fcntl函数 182

 

7.12 小结 184

 

习题 184

 

第8章 基本UDP套接字编程 186

 

8.1 概述 186

 

8.2 recvfrom和sendto函数 187

 

8.3 UDP回射服务器程序:main函数 187

 

8.4 UDP回射服务器程序:dg_echo函数 188

 

8.5 UDP回射客户程序:main函数 190

 

8.6 UDP回射客户程序:dg_cli函数 190

 

8.7 数据报的丢失 191

 

8.8 验证接收到的响应 191

 

8.9 服务器进程未运行 193

 

8.10 UDP程序例子小结 194

 

8.11 UDP的connect函数 196

 

8.12 dg_cli函数(修订版) 199

 

8.13 UDP缺乏流量控制 200

 

8.14 UDP中的外出接口的确定 203

 

8.15 使用select函数的TCP和UDP回射服务器程序 204

 

8.16 小结 206

 

习题 207

 

第9章 基本SCTP套接字编程 208

 

9.1 概述 208

 

9.2 接口模型 208

 

9.3 sctp_bindx函数 212

 

9.4 sctp_connectx函数 213

 

9.5 sctp_getpaddrs函数 213

 

9.6 sctp_freepaddrs函数 213

 

9.7 sctp_getladdrs函数 214

 

9.8 sctp_freeladdrs函数 214

 

9.9 sctp_sendmsg函数 214

 

9.10 sctp_recvmsg函数 215

 

9.11 sctp_opt_info函数 215

 

9.12 sctp_peeloff函数 216

 

9.13 shutdown函数 216

 

9.14 通知 217

 

9.15 小结 221

 

习题 222

 

第 10章 SCTP客户/服务器程序例子 223

 

10.1 概述 223

 

10.2 SCTP一到多式流分回射服务器程序:main函数 223

 

10.3 SCTP一到多式流分回射客户程序:main函数 225

 

10.4 SCTP流分回射客户程序:sctpstr_cli函数 226

 

10.5 探究头端阻塞 228

 

10.6 控制流的数目 233

 

10.7 控制终结 233

 

10.8 小结 234

 

习题 235

 

第 11章 名字与地址转换 236

 

11.1 概述 236

 

11.2 域名系统 236

 

11.3 gethostbyname函数 239

 

11.4 gethostbyaddr函数 242

 

11.5 getservbyname和getservbyport函数 242

 

11.6 getaddrinfo函数 245

 

11.7 gai_strerror函数 250

 

11.8 freeaddrinfo函数 251

 

11.9 getaddrinfo函数:IPv6 251

 

11.10 getaddrinfo函数:例子 253

 

11.11 host_serv函数 254

 

11.12 tcp_connect函数 254

 

11.13 tcp_listen函数 257

 

11.14 udp_client函数 261

 

11.15 udp_connect函数 263

 

11.16 udp_server函数 264

 

11.17 getnameinfo函数 266

 

11.18 可重入函数 267

 

11.19 gethostbyname_r和gethostbyaddr_r函数 270

 

11.20 作废的IPv6地址解析函数 271

 

11.21 其他网络相关信息 272

 

11.22 小结 273

 

习题 274

 

第三部分 高级套接字编程

 

第 12章 IPv4与IPv6的互操作性 278

 

12.1 概述 278

 

12.2 IPv4客户与IPv6服务器 278

 

12.3 IPv6客户与IPv4服务器 281

 

12.4 IPv6地址测试宏 283

 

12.5 源代码可移植性 284

 

12.6 小结 284

 

习题 285

 

第 13章 守护进程和inetd超级服务器 286

 

13.1 概述 286

 

13.2 syslogd守护进程 286

 

13.3 syslog函数 287

 

13.4 daemon_init函数 289

 

13.5 inetd守护进程 293

 

13.6 daemon_inetd函数 297

 

13.7 小结 299

 

习题 299

 

第 14章 高级I/O函数 300

 

14.1 概述 300

 

14.2 套接字超时 300

 

14.3 recv和send函数 305

 

14.4 readv和writev函数 306

 

14.5 recvmsg和sendmsg函数 307

 

14.6 辅助数据 310

 

14.7 排队的数据量 313

 

14.8 套接字和标准I/O 313

 

14.9 高级轮询技术 316

 

14.10 T/TCP:事务目的TCP 320

 

14.11 小结 322

 

习题 323

 

第 15章 Unix域协议 324

 

15.1 概述 324

 

15.2 Unix域套接字地址结构 324

 

15.3 socketpair函数 326

 

15.4 套接字函数 327

 

15.5 Unix域字节流客户/服务器程序 327

 

15.6 Unix域数据报客户/服务器程序 329

 

15.7 描述符传递 330

 

15.8 接收发送者的凭证 337

 

15.9 小结 340

 

习题 340

 

第 16章 非阻塞式I/O 341

 

16.1 概述 341

 

16.2 非阻塞读和写:str_cli函数

 

(修订版) 342

 

16.3 非阻塞connect 351

 

16.4 非阻塞connect:时间获取客户

 

程序 352

 

16.5 非阻塞connect:Web客户程序 354

 

16.6 非阻塞accept 362

 

16.7 小结 363

 

习题 363

 

第 17章 ioctl操作 365

 

17.1 概述 365

 

17.2 ioctl函数 365

 

17.3 套接字操作 366

 

17.4 文件操作 367

 

17.5 接口配置 367

 

17.6 get_ifi_info函数 369

 

17.7 接口操作 378

 

17.8 ARP高速缓存操作 378

 

17.9 路由表操作 380

 

17.10 小结 381

 

习题 381

 

第 18章 路由套接字 382

 

18.1 概述 382

 

18.2 数据链路套接字地址结构 382

 

18.3 读和写 383

 

18.4 sysctl操作 390

 

18.5 get_ifi_info函数 394

 

18.6 接口名字和索引函数 397

 

18.7 小结 401

 

习题 401

 

第 19章 密钥管理套接字 402

 

19.1 概述 402

 

19.2 读和写 403

 

19.3 倾泻安全关联数据库 404

 

19.4 创建静态安全关联 407

 

19.5 动态维护安全关联 412

 

19.6 小结 415

 

习题 416

 

第 20章 广播 417

 

20.1 概述 417

 

20.2 广播地址 418

 

20.3 单播和广播的比较 419

 

20.4 使用广播的dg_cli函数 422

 

20.5 竞争状态 424

 

20.6 小结 431

 

习题 432

 

第 21章 多播 433

 

21.1 概述 433

 

21.2 多播地址 433

 

21.3 局域网上多播和广播的比较 436

 

21.4 广域网上的多播 438

 

21.5 源特定多播 440

 

21.6 多播套接字选项 441

 

21.7 mcast_join和相关函数 445

 

21.8 使用多播的dg_cli函数 450

 

21.9 接收IP多播基础设施会话声明 451

 

21.10 发送和接收 454

 

21.11 SNTP:简单网络时间协议 457

 

21.12 小结 461

 

习题 461

 

第 22章 高级UDP套接字编程 462

 

22.1 概述 462

 

22.2 接收标志、目的IP地址和接口索引 462

 

22.3 数据报截断 467

 

22.4 何时用UDP代替TCP 467

 

22.5 给UDP应用增加可靠性 469

 

22.6 捆绑接口地址 478

 

22.7 并发UDP服务器 482

 

22.8 IPv6分组信息 483

 

22.9 IPv6路径MTU控制 486

 

22.10 小结 487

 

习题 488

 

第 23章 高级SCTP套接字编程 489

 

23.1 概述 489

 

23.2 自动关闭的一到多式服务器程序 489

 

23.3 部分递送 490

 

23.4 通知 492

 

23.5 无序的数据 495

 

23.6 捆绑地址子集 496

 

23.7 确定对端和本端地址信息 497

 

23.8 给定IP地址找出关联ID 500

 

23.9 心搏和地址不可达 501

 

23.10 关联剥离 502

 

23.11 定时控制 503

 

23.12 何时改用SCTP代替TCP 505

 

23.13 小结 506

 

习题 506

 

第 24章 带外数据 507

 

24.1 概述 507

 

24.2 TCP带外数据 507

 

24.3 sockatmark函数 513

 

24.4 TCP带外数据小结 519

 

24.5 客户/服务器心搏函数 520

 

24.6 小结 524

 

习题 524

 

第 25章 信号驱动式I/O 525

 

25.1 概述 525

 

25.2 套接字的信号驱动式I/O 525

 

25.3 使用SIGIO的UDP回射服务器程序 527

 

25.4 小结 532

 

习题 533

 

第 26章 线程 534

 

26.1 概述 534

 

26.2 基本线程函数:创建和终止 535

 

26.3 使用线程的str_cli函数 537

 

26.4 使用线程的TCP回射服务器程序 538

 

26.5 线程特定数据 542

 

26.6 Web客户与同时连接 549

 

26.7 互斥锁 552

 

26.8 条件变量 555

 

26.9 Web客户与同时连接(续) 558

 

26.10 小结 560

 

习题 560

 

第 27章 IP选项 561

 

27.1 概述 561

 

27.2 IPv4选项 561

 

27.3 IPv4源路径选项 562

 

27.4 IPv6扩展首部 569

 

27.5 IPv6步跳选项和目的地选项 569

 

27.6 IPv6路由首部 573

 

27.7 IPv6粘附选项 577

 

27.8 历史性IPv6高级API 578

 

27.9 小结 579

 

习题 579

 

第 28章 原始套接字 580

 

28.1 概述 580

 

28.2 原始套接字创建 580

 

28.3 原始套接字输出 581

 

28.4 原始套接字输入 582

 

28.5 ping程序 584

 

28.6 traceroute程序 596

 

28.7 一个ICMP消息守护程序 608

 

28.8 小结 622

 

习题 622

 

第 29章 数据链路访问 623

 

29.1 概述 623

 

29.2 BPF:BSD分组过滤器 623

 

29.3 DLPI:数据链路提供者接口 625

 

29.4 Linux:SOCK_PACKET和

 

PF_PACKET 626

 

29.5 libpcap:分组捕获函数库 627

 

29.6 libnet:分组构造与输出函数库 627

 

29.7 检查UDP的校验和字段 628

 

29.8 小结 645

 

习题 645

 

第30章 客户/服务器程序设计范式 646

 

30.1 概述 646

 

30.2 TCP客户程序设计范式 648

 

30.3 TCP测试用客户程序 649

 

30.4 TCP迭代服务器程序 650

 

30.5 TCP并发服务器程序,

 

每个客户一个子进程 650

 

30.6 TCP预先派生子进程服务器程序,accept无上锁保护 653

 

30.7 TCP预先派生子进程服务器程序,accept使用文件上锁保护 659

 

30.8 TCP预先派生子进程服务器程序,accept使用线程上锁保护 662

 

30.9 TCP预先派生子进程服务器程序,传递描述符 663

 

30.10 TCP并发服务器程序,每个客户一个线程 667

 

30.11 TCP预先创建线程服务器程序,每个线程各自accept 669

 

30.12 TCP预先创建线程服务器程序,主线程统一accept 671

 

30.13 小结 673

 

习题 674

 

第31章 流 675

 

31.1 概述 675

 

31.2 概貌 675

 

31.3 getmsg和putmsg函数 678

 

31.4 getpmsg和putpmsg函数 679

 

31.5 ioctl函数 680

 

31.6 TPI:传输提供者接口 680

 

31.7 小结 689

 

习题 689

 

附录A IPv4、IPv6、ICMPv4和ICMPv6 690

 

附录B 虚拟网络 704

 

附录C 调试技术 708

 

附录D 杂凑的源代码 714

 

附录E 精选习题答案 726

 

参考文献 756

 

索引 763

卷2

编辑推荐

两卷本的《UNIX网络编程》是已故著名UNIX网络专家W. Richard Stevens的传世之作。卷2着重讨论如何让应用程序与在其他机器上的应用程序进行对话。本书完全重写并扩充了1990年版《UNIX网络编程》的第3章和第18章。字数统计表明,现在的内容是第1版的5倍。良好的进程间通信(IPC)机制是提高UNIX程序性能的关键。本书全面深入地讲解了各种进程间通信形式,包括消息传递、同步、共享内存及远程过程调用(RPC)。书中包含了大量经过优化的源代码,帮助读者加深理解,这些源代码可以从本书网站下载。本书是网络研究和开发人员公认的权wei参考书,无论网络编程的初学者还是网络专家都会大受裨益。

内容简介

本书是一部UNIX 网络编程的经典之作!进程间通信(IPC)几乎是所有Unix 程序性能的关键,理解IPC 也是理解如何开发不同主机间网络应用程序的必要条件。本书从对Posix IPC 和System V IPC 的内部结构开始讨论,全面深入地介绍了4 种IPC 形式:消息传递(管道、FIFO、消息队列)、同步(互斥锁、条件变量、读写锁、文件与记录锁、信号量)、共享内存(匿名共享内存、具名共享内存)及远程过程调用(Solaris门、Sun RPC)。附录中给出了测量各种IPC 形式性能的方法。

 

本书内容详尽且具**性,几乎每章都提供精选的习题,并提供了部分习题的答案,是网络研究和开发人员理想的参考书。

作者简介

W. 理查德.史蒂文斯(W. Richard Stevens)国际知名的UNIX 和网络专家,备受赞誉的技术作家。他1951 年2 月5 日出生于赞比亚,后随父母回到美国。中学时就读于弗吉尼亚菲什伯恩军事学校,1973 年获得密歇根大学航空和航天工程学士学位。1975 年至1982 年,他在亚利桑那州图森市的基特峰国家天文台从事计算机编程工作,业余时间喜爱飞行运动,做过兼职飞行教练。这期间他分别在1978 年和1982 年获得亚利桑那大学系统工程硕士和博士学位。此后他去康涅狄格州纽黑文的健康系统国际公司任主管计算机服务的副总裁。1990 年他回到图森,从事专业技术写作和咨询工作。写下了多种经典的传世之作,包括《TCP/IP 详解》(三卷)、《UNIX 环境高级编程》和《UNIX网络编程》(两卷)。Stevens 于1999 年9 月1日去世,年仅48岁。2000 年他被国际**机构USENIX 追授“终身成就奖”。

目录

第 一部分 简介

 

第 1章 简介 2

 

1.1 概述 2

 

1.2 进程、线程与信息共享 3

 

1.3 IPC对象的持续性 4

 

1.4 名字空间 5

 

1.5 fork、exec和exit对IPC对象的

 

影响 7

 

1.6 出错处理:包裹函数 8

 

1.7 Unix标准 9

 

1.8 书中IPC例子索引表 11

 

1.9 小结 13

 

习题 13

 

第 2章 Posix IPC 14

 

2.1 概述 14

 

2.2 IPC名字 14

 

2.3 创建与打开IPC通道 16

 

2.4 IPC权限 18

 

2.5 小结 19

 

习题 19

 

第3章 System V IPC 20

 

3.1 概述 20

 

3.2 key_t键和ftok函数 20

 

3.3 ipc_perm结构 22

 

3.4 创建与打开IPC通道 22

 

3.5 IPC权限 24

 

3.6 标识符重用 25

 

3.7 ipcs和ipcrm程序 27

 

3.8 内核限制 27

 

3.9 小结 28

 

习题 29

 

第二部分 消息传递

 

第4章 管道和FIFO 32

 

4.1 概述 32

 

4.2 一个简单的客户-服务器例子 32

 

4.3 管道 32

 

4.4 全双工管道 37

 

4.5 popen和pclose函数 39

 

4.6 FIFO 40

 

4.7 管道和FIFO的额外属性 44

 

4.8 单个服务器,多个客户 46

 

4.9 对比迭代服务器与并发服务器 50

 

4.10 字节流与消息 51

 

4.11 管道和FIFO限制 55

 

4.12 小结 56

 

习题 57

 

第5章 Posix消息队列 58

 

5.1 概述 58

 

5.2 mq_open、mq_close和mq_unlink

 

函数 59

 

5.3 mq_getattr和mq_setattr函数 61

 

5.4 mq_send和mq_receive函数 64

 

5.5 消息队列限制 67

 

5.6 mq_notify函数 68

 

5.7 Posix实时信号 78

 

5.8 使用内存映射I/O实现Posix消息队列 85

 

5.9 小结 101

 

习题 101

 

第6章 System V消息队列 103

 

6.1 概述 103

 

6.2 msgget函数 104

 

6.3 msgsnd函数 104

 

6.4 msgrcv函数 105

 

6.5 msgctl函数 106

 

6.6 简单的程序 107

 

6.7 客户-服务器例子 112

 

6.8 复用消息 113

 

6.9 消息队列上使用select和poll 121

 

6.10 消息队列限制 122

 

6.11 小结 124

 

习题 124

 

第三部分 同步

 

第7章 互斥锁和条件变量 126

 

7.1 概述 126

 

7.2 互斥锁:上锁与解锁 126

 

7.3 生产者-消费者问题 127

 

7.4 对比上锁与等待 131

 

7.5 条件变量:等待与信号发送 132

 

7.6 条件变量:定时等待和广播 136

 

7.7 互斥锁和条件变量的属性 136

 

7.8 小结 139

 

习题 139

 

第8章 读写锁 140

 

8.1 概述 140

 

8.2 获取与释放读写锁 140

 

8.3 读写锁属性 141

 

8.4 使用互斥锁和条件变量实现读写锁 142

 

8.5 线程取消 148

 

8.6 小结 153

 

习题 153

 

第9章 记录上锁 154

 

9.1 概述 154

 

9.2 对比记录上锁与文件上锁 157

 

9.3 Posix fcntl记录上锁 158

 

9.4 劝告性上锁 162

 

9.5 强制性上锁 164

 

9.6 读出者和写入者的优先级 166

 

9.7 启动一个守护进程的副本 170

 

9.8 文件作锁用 171

 

9.9 NFS上锁 173

 

9.10 小结 173

 

习题 174

 

第 10章 Posix号量 175

 

10.1 概述 175

 

10.2 sem_open、sem_close和sem_unlink函数 179

 

10.3 sem_wait和sem_trywait函数 180

 

10.4 sem_post和sem_getvalue函数 180

 

10.5 简单的程序 181

 

10.6 生产者-消费者问题 186

 

10.7 文件上锁 190

 

10.8 sem_init和sem_destroy函数 191

 

10.9 多个生产者,单个消费者 193

 

10.10 多个生产者,多个消费者 196

 

10.11 多个缓冲区 199

 

10.12 进程间共享信号量 205

 

10.13 信号量限制 206

 

10.14 使用FIFO实现信号量 206

 

10.15 使用内存映射I/O实现信号量 210

 

10.16 使用System 号量实现Posix号量 218

 

10.17 小结 224

 

习题 225

 

第 11章 System V 号量 226

 

11.1 概述 226

 

11.2 semget函数 227

 

11.3 semop函数 229

 

11.4 semctl函数 231

 

11.5 简单的程序 232

 

11.6 文件上锁 237

 

11.7 信号量限制 238

 

11.8 小结 242

 

习题 242

 

第四部分 共享内存区

 

第 12章 共享内存区介绍 244

 

12.1 概述 244

 

12.2 mmap、munmap和msync函数 247

 

12.3 在内存映射文件中给计数器持续加1 250

 

12.4 4.4BSD匿名内存映射 254

 

12.5 SVR4 /dev/zero内存映射 255

 

12.6 访问内存映射的对象 255

 

12.7 小结 259

 

习题 260

 

第 13章 Posix共享内存区 261

 

13.1 概述 261

 

13.2 shm_open和shm_unlink函数 261

 

13.3 ftruncate和fstat函数 262

 

13.4 简单的程序 263

 

13.5 给一个共享的计数器持续加1 267

 

13.6 向一个服务器发送消息 270

 

13.7 小结 275

 

习题 275

 

第 14章 System V共享内存区 276

 

14.1 概述 276

 

14.2 shmget函数 276

 

14.3 shmat函数 277

 

14.4 shmdt函数 277

 

14.5 shmctl函数 277

 

14.6 简单的程序 278

 

14.7 共享内存区限制 281

 

14.8 小结 282

 

习题 283

 

第五部分 远程过程调用

 

第 15章 门 286

 

15.1 概述 286

 

15.2 door_call函数 291

 

15.3 door_create函数 292

 

15.4 door_return函数 293

 

15.5 door_cred函数 294

 

15.6 door_info函数 294

 

15.7 例子 295

 

15.8 描述符传递 306

 

15.9 door_sever_create函数 310

 

15.10 door_bind、door_unbind和door_revoke函数 315

 

15.11 客户或服务器的过早终止 315

 

15.12 小结 321

 

习题 322

 

第 16章 Sun RPC 323

 

16.1 概述 323

 

16.2 多线程化 330

 

16.3 服务器捆绑 333

 

16.4 认证 336

 

16.5 超时和重传 338

 

16.6 调用语义 342

 

16.7 客户或服务器的过早终止 343

 

16.8 XDR:外部数据表示 345

 

16.9 RPC分组格式 361

 

16.10 小结 365

 

习题 366

 

后记 368

 

附录A 性能测量 371

 

附录B 线程入门 406

 

附录C 杂凑的源代码 409

 

附录D 精选习题解答 417

 

参考文献 433

 

索引 435