UNIX环境高级编程

UNIX环境高级编程

(美) 史蒂文斯 (Stevens,W.R.) , (美) 拉戈 (Rago,S.A.) , 著

出版社:人民邮电出版社

年代:2014

定价:128.0

书籍简介:

本书除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了众多应用实例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附录中给出了函数原型和部分习题的答案。

书籍目录:

第1章UNIX基础知识1

1.1引言1

1.2UNIX体系结构1

1.3登录1

1.4文件和目录3

1.5输入和输出6

1.6程序和进程8

1.7出错处理11

1.8用户标识13

1.9信号14

1.10时间值16

1.11系统调用和库函数17

1.12小结18

习题18

第2章UNIX标准及实现20

2.1引言20

2.2UNIX标准化20

2.2.1ISOC20

2.2.2IEEEPOSIX21

2.2.3SingleUNIXSpecification25

2.2.4FIPS26

2.3UNIX系统实现26

2.3.1SVR427

2.3.24.4BSD27

2.3.3FreeBSD28

2.3.4Linux28

2.3.5MacOSX28

2.3.6Solaris28

2.3.7其他UNIX系统29

2.4标准和实现的关系29

2.5限制29

2.5.1ISOC限制30

2.5.2POSIX限制31

2.5.3XSI限制33

2.5.4函数sysconf、pathconf和fpathconf33

2.5.5不确定的运行时限制40

2.6选项43

2.7功能测试宏46

2.8基本系统数据类型47

2.9标准之间的冲突48

2.10小结48

习题48

第3章文件I/O49

3.1引言49

3.2文件描述符49

3.3函数open和openat50

3.4函数creat52

3.5函数close53

3.6函数lseek53

3.7函数read57

3.8函数write57

3.9I/O的效率58

3.10文件共享59

3.11原子操作62

3.12函数dup和dup263

3.13函数sync、fsync和fdatasync65

3.14函数fcntl65

3.15函数ioctl70

3.16/dev/fd71

3.17小结72

习题72

第4章文件和目录74

4.1引言74

4.2函数stat、fstat、fstatat和lstat74

4.3文件类型75

4.4设置用户ID和设置组ID78

4.5文件访问权限79

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

4.7函数access和faccessat81

4.8函数umask82

4.9函数chmod、fchmod和fchmodat84

4.10粘着位87

4.11函数chown、fchown、fchownat和lchown87

4.12文件长度89

4.13文件截断90

4.14文件系统90

4.15函数link、linkat、unlink、unlinkat和remove93

4.16函数rename和renameat95

4.17符号链接96

4.18创建和读取符号链接99

4.19文件的时间99

4.20函数futimens、utimensat和utimes101

4.21函数mkdir、mkdirat和rmdir103

4.22读目录104

4.23函数chdir、fchdir和getcwd108

4.24设备特殊文件110

4.25文件访问权限位小结112

4.26小结113

习题113

第5章标准I/O库115

5.1引言115

5.2流和FILE对象115

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

5.4缓冲116

5.5打开流118

5.6读和写流120

5.7每次一行I/O122

5.8标准I/O的效率123

5.9二进制I/O125

5.10定位流126

5.11格式化I/O127

5.12实现细节131

5.13临时文件134

5.14内存流137

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

5.16小结140

习题140

第6章系统数据文件和信息142

6.1引言142

6.2口令文件142

6.3阴影口令145

6.4组文件146

6.5附属组ID147

6.6实现区别148

6.7其他数据文件148

6.8登录账户记录149

6.9系统标识150

6.10时间和日期例程151

6.11小结157

习题157

第7章进程环境158

7.1引言158

7.2main函数158

7.3进程终止158

7.4命令行参数162

7.5环境表163

7.6C程序的存储空间布局163

7.7共享库165

7.8存储空间分配165

7.9环境变量168

7.10函数setjmp和longjmp170

7.11函数getrlimit和setrlimit175

7.12小结180

习题180

第8章进程控制181

8.1引言181

8.2进程标识181

8.3函数fork182

8.4函数vfork187

8.5函数exit188

8.6函数wait和waitpid190

8.7函数waitid194

8.8函数wait3和wait4195

8.9竞争条件196

8.10函数exec199

8.11更改用户ID和更改组ID204

8.12解释器文件207

8.13函数system211

8.14进程会计215

8.15用户标识220

8.16进程调度221

8.17进程时间224

8.18小结226

习题226

第9章进程关系228

9.1引言228

9.2终端登录228

9.3网络登录231

9.4进程组233

9.5会话234

9.6控制终端235

9.7函数tcgetpgrp、tcsetpgrp和tcgetsid237

9.8作业控制237

9.9shell执行程序240

9.10孤儿进程组244

9.11FreeBSD实现246

9.12小结248

习题248

第10章信号249

10.1引言249

10.2信号概念249

10.3函数signal256

10.4不可靠的信号259

10.5中断的系统调用260

10.6可重入函数262

10.7SIGCLD语义264

10.8可靠信号术语和语义266

10.9函数kill和raise267

10.10函数alarm和pause268

10.11信号集273

10.12函数sigprocmask275

10.13函数sigpending276

10.14函数sigaction278

10.15函数sigsetjmp和siglongjmp283

10.16函数sigsuspend286

10.17函数abort291

10.18函数system293

10.19函数sleep、nanosleep和clock_nanosleep298

10.20函数sigqueue300

10.21作业控制信号301

10.22信号名和编号303

10.23小结305

习题305

第11章线程307

11.1引言307

11.2线程概念307

11.3线程标识308

11.4线程创建309

11.5线程终止311

11.6线程同步318

11.6.1互斥量320

11.6.2避免死锁322

11.6.3函数pthread_mutex_timedlock327

11.6.4读写锁328

11.6.5带有超时的读写锁332

11.6.6条件变量332

11.6.7自旋锁335

11.6.8屏障336

11.7小结340

习题340

第12章线程控制341

12.1引言341

12.2线程限制341

12.3线程属性342

12.4同步属性345

12.4.1互斥量属性345

12.4.2读写锁属性352

12.4.3条件变量属性353

12.4.4屏障属性353

12.5重入354

12.6线程特定数据358

12.7取消选项361

12.8线程和信号364

12.9线程和fork367

12.10线程和I/O370

12.11小结371

习题371

第13章守护进程372

13.1引言372

13.2守护进程的特征372

13.3编程规则374

13.4出错记录377

13.5单实例守护进程380

13.6守护进程的惯例381

13.7客户进程—服务器进程模型386

13.8小结386

习题387

第14章高级I/O388

14.1引言388

14.2非阻塞I/O388

14.3记录锁391

14.4I/O多路转接403

14.4.1函数select和pselect404

14.4.2函数poll408

14.5异步I/O410

14.5.1SystemV异步I/O410

14.5.2BSD异步I/O411

14.5.3POSIX异步I/O411

14.6函数readv和writev419

14.7函数readn和writen421

14.8存储映射I/O422

14.9小结428

习题428

第15章进程间通信429

15.1 引言429

15.2 管道430

15.3函数popen和pclose436

15.4 协同进程441

15.5 FIFO445

15.6 XSIIPC448

15.6.1标识符和键448

15.6.2权限结构449

15.6.3结构限制450

15.6.4优点和缺点450

15.7 消息队列451

15.8 信号量455

15.9 共享存储459

15.10 POSIX信号量465

15.11 客户进程—服务器进程属性470

15.11小结472

习题472

第16章网络IPC:套接字474

16.1引言474

16.2套接字描述符474

16.3寻址477

16.3.1字节序477

16.3.2地址格式478

16.3.3 地址查询480

16.3.4 将套接字与地址关联486

16.4建立连接487

16.5数据传输491

16.6套接字选项502

16.7带外数据504

16.8非阻塞和异步I/O505

16.9小结506

习题506

第17章高级进程间通信507

17.1 引言507

17.2 UNIX域套接字507

17.3 唯一连接512

17.4 传送文件描述符518

17.5 open服务器进程第1版527

17.6 open服务器进程第2版533

17.7小结542

习题542

第18章终端I/O544

18.1引言544

18.2综述544

18.3特殊输入字符549

18.4获得和设置终端属性553

18.5终端选项标志554

18.6stty命令560

18.7波特率函数560

18.8行控制函数561

18.9终端标识562

18.10规范模式567

18.11非规范模式570

18.12终端窗口大小576

18.13termcap、terminfo和curses578

18.14小结578

习题579

第19章伪终端580

19.1引言580

19.2概述580

19.3打开伪终端设备585

19.4函数pty_fork588

19.5pty程序590

19.6使用pty程序595

19.7高级特性600

19.8小结601

习题601

第20章数据库函数库603

20.1 引言603

20.2 历史603

20.3函数库604

20.4 实现概述605

20.5集中式或非集中式608

20.6并发610

20.7构造函数库610

20.8源代码611

20.9性能635

20.10小结639

习题639

第21章与网络打印机通信640

21.1引言640

21.2网络打印协议640

21.3超文本传输协议HTTP642

21.4打印假脱机技术643

21.5源代码644

21.6小结684

习题684

附录A函数原型685

附录A函数原型附录B其他源代码721

附录C部分习题答案730

附录参考书目730

索引770

内容摘要:

20多年来,严谨的C程序员都是依靠一本书来深入了解驱动UNIX和Linux内核的编程接口的实用知识的,这本书就是W. Richard Stevens所著的《UNIX高级环境编程》。现在,Stevens的同事Steve Rago彻底更新了这本经典著作。新的第3版支持当今领先的系统平台,反映了最新技术进展和最佳实践,并且符合最新的Single UNIX Specification第4版(SUSv4)。 Rago保留了使本书前版成为经典之作的精髓和方法。他在Stevens原著的基础上,从基础的文件、目录和进程讲起,并给诸如信号处理和终端I/O之类的先进技术保留较大的篇幅。他还深入讨论了线程和多线程编程、使用套接字接口驱动进程间通信(IPC)等方面的内容。 这一版涵盖了70多个最新版POSIX.1标准的新增接口,包括POSIX异步I/O、旋转锁、屏障(barrier)和POSIX信号量。此外,这一版删除了许多过时的接口,保留了一些广泛使用的接口。书中几乎所有实例都已经在目前最主流的4个平台上测试过,包括Solaris 10、Mac OS X 10.6.8(Darwin 10.8.0)、FressBSD 8.0、Ubuntu 12.04(基于Linux 3.2内核)。 与前两版一样,读者仍可以通过实例学习,这些实例包括了1万多行可下载的ISO C源代码,书中通过简明但完整的程序阐述了400多个系统调用和函数,清楚地说明它们的用法、参数和返回值。为了使读者能融会贯通,书中还提供了几个贯穿整章的案例,每个案例都根据现在的技术环境进行了全面更新。 本书帮助了几代程序员写出强大、高性能、可靠的代码。第3版根据当今主流系统进行更新,更具实用价值。本书是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的第3版。在本书第2版出版后的8年中,UNIX行业发生了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持前一版风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了众多应用实例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附录中给出了函数原型和部分习题的答案。本书内容权威,概念清晰,阐述精辟,对于所有层次UNIX/Linux程序员都是一本不可或缺的参考书。【作者简介】 作者介绍 W. Richard Stevens 国际知名的UNIX和网络专家,备受赞誉的技术作家。生前著有多部经典的传世之作,包括《UNIX网络编程》(两卷本)、《TCP/IP详解》(三卷本)和本书第1版。 Stephen A. Rago 资深UNIX程序员,目前任NEC美国实验室存储系统集团研究员。之前是贝尔实验室的UNIX系统V版本4的开发人员之一。著有《UNIX系统V网络编程》,并曾担任本书第1版的技术审校和第2版的共同作者。 译者介绍 戚正伟 博士,上海交通大学软件学院副教授,微软亚洲研究院(2008)和美国CMU大学(2011-2012)访问学者。研究方向为系统软件和程序分析,著有《New Blue Pill深入理解硬件虚拟机》和《嵌入式GIS开发及应用》等书。 张亚英 博士,同济大学电子与信息工程学院计算机系副教授,研究方向为分布与移动计算、嵌入式系统以及系统软件等。 尤晋元 上海交通大学计算机科学及工程系教授、博士生导师。在科研方面,主要从事操作系统和分布对象计算技术方面的研究。在教学方面,长期承担操作系统及分布计算等课程的教学工作。主编和翻译了多本操作系统教材和参考书,包括《UNIX操作系统教程》、《UNIX高级编程技术》、《UNIX环境高级编程》和《操作系统:设计与实现》等。

书籍规格:

书籍详细信息
书名UNIX环境高级编程站内查询相似图书
9787115352118
《UNIX环境高级编程》pdf扫描版电子书已有网友提供下载资源链接
出版地北京出版单位人民邮电出版社
版次2版印次1
定价(元)128.0语种简体中文
尺寸26 × 19装帧平装
页数 450 印数 5000

书籍信息归属:

UNIX环境高级编程是人民邮电出版社于2014.6出版的中图分类号为 TP316.81 的主题关于 UNIX操作系统-程序设计 的书籍。