技术教育社区
www.teccses.org

UNIX环境高级编程(第3版)

封面

作者:(美)W.RichardStevens(

页数:956

出版社:电子工业出版社

出版日期:2024

ISBN:9787121478338

电子书格式:pdf/epub/txt

内容简介

本书一共21章。第1、2章分别介绍了UNIX系统和UNIX标准化的一些内容。第3~6章介绍了文件I/O、文件和目录、标准I/O库、系统数据文件和信息。第7~10章介绍了进程相关事项,包括进程环境、进程控制、进程关系,以及进程如何处理信号。第11、12章介绍了线程的内容,包括线程本身及线程控制的策略。第13章介绍了守护进程。第14章介绍了高级I/O。第15~17章专门介绍了IPC的各种细节,包括传统的IPC、网络IPC和高级IPC。第18、19章对终端概念进行了介绍,包括终端I/O和伪终端。第20、21章用两个“长示例”将前述章节介绍的知识串联起来,分别是一个数据库示例和一个与网络打印机通信的示例。本书适合对UNIX/Linux有一定使用经验或者编程经验的读者,有C语言基础的读者,从事UNIX/Linux应用软件开发的读者或者对此感兴趣的读者。

作者简介

已故的W. Richard Stevens是《UNIX网络编程》(这本书被公认为是UNIX网络领域的经典著作)第 1 和第 2 卷的作者,也是《TCP/IP 详解》第 1~3 卷及本书第 1 版的作者。Stephen A. Rago是NEC Laboratories America 的存储系统团队的研究人员。在此之前,他是Bell Laboratories的开发者之一,曾开发 UNIX System V Release 4。他还是《UNIX System V Network Programming》的作者、本书第 1 版的审稿人和第 2 版的合著者。
张毅峰,软件架构师,目前在上汽创新研发总院软件部门负责智能网联相关基础软件的项目预研、新技术导入及行业趋势跟踪等工作,是上汽集团基金会的多个产学研课题负责人,也是AUTOSAR中国中心的项目发言人。长期从事一线研发工作,具有丰富的车载嵌入式软硬件协同开发经验,负责过上汽集团多个嵌入式项目的基础软件开发和管理工作,对智能化时代的车载基础软件核心要素和发展趋势有着深刻的认识和见解。马树超,腾讯后台开发工程师,曾就职百度从事接入接出网关研发运营相关工作,目前从事高性能负载均衡网关设计和研发工作;具有丰富的系统网络开发经验。 当前主要关注网络转发、网络安全、加解密协议等领域。池艳广,中兴通讯专家级软件开发工程师、高级TL、安全编码专家、题库设计专家、面试官,在TCP/IP协议、WiFi驱动、嵌入式Linux等领域有着丰富的实战经验。CSDN博客专家、Linux领域优质创作者、CSDN C语言社区管理员、阿里云专家博主。公众号:Linux探索者;CSDN博客:花神庙码农。刚铎,毕业于大连理工大学,硕士研究生,系统分析与集成专业。先后就职于华为、神州数码,曾获得多个厂商的高级技术认证。现就职于电信数智科技有限公司,从事云网技术架构与落地工作,关注网络和安全、云计算和人工智能等方向。

目录

1 UNIX系统概述 1

1.1 引言 1

1.2 UNIX系统架构 1

1.3 登录 2

1.4 文件和目录 4

1.5 输入和输出 8

1.6 程序和进程 11

1.7 错误处理 14

1.8 用户标识 16

1.9 信号 18

1.10 时间值 20

1.11 系统调用和库函数 21

1.12 小结 23

2 UNIX标准与实现 24

2.1 引言 24

2.2 UNIX标准化 24

2.2.1 ISO C 24

2.2.2 IEEE POSIX 26

2.2.3 Single UNIX Specification 31

2.2.4 FIPS 32

2.3 UNIX系统实现 33

2.3.1 SVR4 33

2.3.2 4.4BSD 34

2.3.3 FreeBSD 34

2.3.4 Linux 35

2.3.5 Mac OS X 35

2.3.6 Solaris 35

2.3.7 其他UNIX系统 36

2.4 UNIX标准和实现的关系 36

2.5 限制 36

2.5.1 ISO C限制 37

2.5.2 POSIX限制 39

2.5.3 XSI限制 41

2.5.4 sysconf、pathconf和fpathconf函数 42

2.5.5 不确定的运行时限制 49

2.6 选项 53

2.7 功能测试宏 57

2.8 基本系统数据类型 58

2.9 标准之间的冲突 59

2.10 小结 60

3 文件I/O 61

3.1 引言 61

3.2 文件描述符 61

3.3 open和openat函数 62

3.4 create函数 66

3.5 close函数 66

3.6 lseek函数 67

3.7 read函数 71

3.8 write函数 72

3.9 I/O的效率 73

3.10 文件共享 75

3.11 原子操作 78

3.12 dup和dup2函数 80

3.13 sync、fsync和fdatasync函数 81

3.14 fcntl函数 82

3.15 ioctl函数 88

3.16 /dev/fd 89

3.17 小结 90

4 文件和目录 92

4.1 引言 92

4.2 stat、fstat、fstatat和lstat函数 92

4.3 文件类型 94

4.4 设置用户ID和设置组ID 97

4.5 文件访问权限 98

4.6 新文件和目录的所有权 100

4.7 access和faccessat函数 101

4.8 umask函数 103

4.9 chmod、fchmod和fchmodat函数 105

4.10 粘着位 108

4.11 chown、fchown、fchownat和lchown函数 109

4.12 文件长度 110

4.13 文件截断 112

4.14 文件系统 112

4.15 link、linkat、unlink、unlinkat和remove函数 115

4.16 rename和renameat函数 118

4.17 符号链接 119

4.18 创建和读取符号链接 123

4.19 文件的时间 123

4.20 futimens、utimensat和utimes函数 125

4.21 mkdir、mkdirat和rmdir函数 128

4.22 读目录 130

4.23 chdir、fchdir和getcwd函数 134

4.24 设备特殊文件 137

4.25 文件访问权限位 139

4.26 小结 140

5 标准I/O库 142

5.1 引言 142

5.2 流和FILE对象 142

5.3 标准输入、标准输出和标准错误 144

5.4 缓冲 144

5.5 打开流 147

5.6 读流和写流 149

5.7 每次一行I/O 151

5.8 标准I/O的效率 153

5.9 二进制I/O 155

5.10 定位流 156

5.11 格式化I/O 158

5.12 实现细节 162

5.13 临时文件 166

5.14 内存流 170

5.15 标准I/O的替代软件 173

5.16 小结 173

6 系统数据文件和信息 175

6.1 序言 175

6.2 口令文件 175

6.3 阴影口令 179

6.4 组文件 180

6.5 补充组ID 182

6.6 各个实现的差异 183

6.7 其他数据文件 184

6.8 登录记账 185

6.9 系统标识 186

6.10 时间和日期例程 187

6.11 小结 194

7 进程环境 196

7.1 引言 196

7.2 main函数 196

7.3 进程终止 197

7.4 命令行参数 201

7.5 环境列表 202

7.6 C程序的内存布局 203

7.7 共享库 205

7.8 内存申请 205

7.9 环境变量 209

7.10 setjmp和longjmp函数 212

7.11 getrlimit和setrlimit函数 218

7.12 小结 223

8 进程控制 225

8.1 引言 225

8.2 进程标识符 225

8.3 fork函数 226

8.4 vfork函数 232

8.5 exit函数 234

8.6 wait和waitpid函数 236

8.7 waitid函数 241

8.8 wait3和wait4函数 242

8.9 竞态条件 243

8.10 exec函数 247

8.11 更改用户ID和用户组ID 253

8.12 解释器脚本文件 258

8.13 system函数 262

8.14 进程记账 267

8.15 用户标识 273

8.16 进程调度 274

8.17 进程时间 277

8.18 小结 280

9 进程关系 282

9.1 序言 282

9.2 终端登录 282

9.3 网络登录 287

9.4 进程组 290

9.5 会话 292

9.6 控制终端 293

9.7 tcgetpgrp、tcsetpgrp和tcgetsid函数 295

9.8 作业控制 296

9.9 shell执行程序 300

9.10 孤儿进程组 304

9.11 FreeBSD实现 306

9.12 小结 309

10 信号 310

10.1 序言 310

10.2 信号的概念 310

10.3 signal函数 320

10.4 不可靠信号 324

10.5 中断的系统调用 325

10.6 可重入函数 328

10.7 SIGCLD语义 330

10.8 可靠信号的术语和语义 333

10.9 kill和raise函数 334

10.10 alarm和pause函数 335

10.11 信号集 341

10.12 sigprocmask函数 343

10.13 sigpending函数 345

10.14 sigaction函数 347

10.15 sigsetjmp和siglongjmp函数 353

10.16 sigsuspend函数 356

10.17 abort函数 363

10.18 system函数 365

10.19 sleep、nanosleep和clock_nanosleep函数 371

10.20 sigqueue函数 374

10.21 作业控制信号 375

10.22 信号名和编号 377

10.23 小结 379

11 线程 381

11.1 序言 381

11.2 线程的概念 381

11.3 线程标识 382

11.4 线程创建 384

11.5 线程终止 386

11.6 线程同步 394

11.6.1 互斥量 397

11.6.2 避免死锁 399

11.6.3 pthread_mutex_timedlock函数 405

11.6.4 读写锁 406

11.6.5 带有超时的读写锁 410

11.6.6 条件变量 411

11.6.7 自旋锁 414

11.6.8 屏障 416

11.7 小结 419

12 线程控制 421

12.1 引言 421

12.2 线程限制 421

12.3 线程属性 422

12.4 同步属性 426

12.4.1 互斥锁属性 426

12.4.2 读写锁属性 435

12.4.3 条件变量属性 436

12.4.4 屏障属性 437

12.5 重入 437

12.6 线程特定数据 442

12.7 取消选项 446

12.8 线程和信号 448

12.9 线程和fork 452

12.10 线程和I/O 456

12.11 小结 457

13 守护进程 458

13.1 引言 458

13.2 守护进程的特征 458

13.3 编码规则 461

13.4 出错记录 464

13.5 单示例守护进程 468

13.6 守护进程的惯例 469

13.7 客户端-服务器模型 474

13.8 小结 475

14 高级I/O 476

14.1 引言 476

14.2 非阻塞I/O 476

14.3 记录锁 480

14.4 I/O多路复用 494

14.4.1 select和pselect函数 497

14.4.2 poll函数 501

14.5 异步I/O 503

14.5.1 System V异步I/O 504

14.5.2 BSD异步I/O 505

14.5.3 POSIX异步I/O 505

14.6 readv和writev函数 515

14.7 readn和writen函数 517

14.8 内存映射I/O 519

14.9 小结 526

15 进程间通信 528

15.1 引言 528

15.2 管道 529

15.3 poepn和pclose函数 536

15.4 协同进程 543

15.5 FIFO 547

15.6 XSI IPC 551

15.6.1 标识符和键 552

15.6.2 权限结构体 553

15.6.3 可配置性限制 554

15.6.4 优缺点 554

15.7 消息队列 556

15.8 信号量 561

15.9 共享内存 566

15.10 POSIX信号量 573

15.11 客户端/服务器属性 579

15.12 小结 581

16 网络IPC:套接字 584

16.1 引言 584

16.2 套接字描述符 584

16.3 地址 588

16.3.1 字节序 588

16.3.2 地址格式 589

16.3.3 地址查询 591

16.3.4 将套接字与地址关联 599

16.4 建立连接 600

16.5 数据传输 604

16.6 套接字选项 617

16.7 带外数据 620

16.8 非阻塞和异步I/O 621

16.9 小结 622

17 高级进程间通信 623

17.1 引言 623

17.2 UNIX域套接字 623

17.2.1 命名UNIX域套接字 628

17.3 唯一连接 629

17.4 传递文件描述符 636

17.5 第1版open服务进程 647

17.6 第2版open服务进程 653

17.7 小结 663

18 终端I/O 665

18.1 引言 665

18.2 概述 665

18.3 特殊输入字符 672

18.4 获取和设置终端属性 677

18.5 终端选项标识 677

18.6 stty命令 686

18.7 波特率函数 686

18.8 行控制函数 687

18.9 终端标识 688

18.10 规范模式 694

18.11 非规范模式 697

18.12 终端窗口大小 704

18.13 termcap、terminfo和curses 705

18.14 小结 706

19 伪终端 708

19.1 引言 708

19.2 概述 708

19.3 打开伪终端设备 715

19.4 pty_fork函数 719

19.5 pty程序 721

19.6 使用pty程序 726

19.7 高级特性 733

19.8 小结 734

20 数据库函数库 736

20.1 引言 736

20.2 历史 736

20.3 函数库 737

20.4 实现概述 739

20.5 采用集中式还是分散式 743

20.6 并发 744

20.7 构建函数库 745

20.8 源代码 746

20.9 性能 773

20.10 小结 778

21 与网络打印机通信 780

21.1 引言 780

21.2 网络打印协议 780

21.3 超文本传输协议 783

21.4 打印机后台处理技术 784

21.5 源代码 786

下载地址

立即下载

(解压密码:www.teccses.org)

Article Title:《UNIX环境高级编程(第3版)》
Article link:https://www.teccses.org/1597256.html