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

史蒂文斯 (W.Richard Stevens)

出版时间

2014-06-01

ISBN

9787115352118

评分

★★★★★

标签

编程

书籍介绍

《UNIX环境高级编程(第3版)》是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的第3版。在本书第2版出版后的8年中,UNIX行业发生了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持前一版风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了众多应用实例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附录中给出了函数原型和部分习题的答案。

《UNIX环境高级编程(第3版)》内容权威,概念清晰,阐述精辟,对于所有层次UNIX/Linux程序员都是一本不可或缺的参考书。

适读人群 :所有层次UNIX/Linux程序员

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多个系统调用和函数,清楚地说明它们的用法、参数和返回值。为了使读者能融会贯通,书中还提供了几个贯穿整章的案例,每个案例都根据现在的技术环境进行了全面更新。

《UNIX环境高级编程(第3版)》帮助了几代程序员写出强大、高性能、可靠的代码。第3版根据当今主流系统进行更新,更具实用价值。

精彩书评:

本书第1版连同Stevens所著的系列网络技术书籍,被公认为优秀的、匠心独具的名著,成为极其畅销的作品……总之,这是一本弥足珍贵的经典著作的更新版。

——Dennis Ritchie,图灵奖得主,UNIX操作系统和C语言之父

对任何一个严谨的、专业的UNIX系统程序员而言,本书都是不可或缺的权威参考书。Rago更新和扩展了Stevens的经典著作,并保持了原书的风貌。书中利用清晰的实例演示了API的使用过程,还提到了许多在不同UNIX系统实现上编程时需要注意的陷阱,并指出如何使用相关的标准(如POSIX 1003.1 2004版和Single UNIX Specification第3版)来避免这些错误。

——Andrew Josey, The Open Group标准部门主管,POSIX 1003.1标准工作组主席

绝对的UNIX编程经典之一。

——Eric S. Raymond,《UNIX编程艺术》作者

Stephen Rago的更新版本对于使用众多UNIX及相关操作系统环境的广大专业用户来说是一个迟来的喜讯。这一版不仅删除了过时的接口,吸纳了较新的开发接口,还根据UNIX及类UNIX操作系统环境的几种主流实现发布的新版本全面更新了所有主题、实例和应用的背景。难能可贵的是,这一版本还保持了经典的第1版的风格和品位。

——Mukesh Kacker,Pronto Networks公司联合创始人和前任CTO

本书对于任何在UNIX系统上编写程序的开发人员来说都是非常重要的参考书。当我想要了解或者重新回顾各种系统接口时,这本书是首选的求助工具。Stephen Rago成功地修订了本书,使其与新的操作系统(如GNU/Linux和苹果的OS X)相容,并保持了第1版易读和实用的特质。它将永远摆放在我桌上随手可及的位置。

——Benjamin Kuperman博士,斯沃斯莫尔学院

这是每一位严谨的UNIX C程序员必备的书籍。它深入、全面、清晰的解释是无可匹敌的。

——UniForum Monthly

从W. Richard Stevens的这本书中可以找到更多易于理解的、详尽的UNIX系统内部细节。这本书包含了大量实际的例子,对系统编程工作非常有益。

——RS/Magazine

AI导读
核心看点
  • 被誉为UNIX编程圣经,系统讲解文件、进程、信号等核心接口。
  • 基于最新POSIX标准修订,涵盖线程、IPC及网络编程等高级特性。
  • 深入剖析系统调用与内核交互逻辑,提供权威且实用的编程指南。
适合谁读
  • 具备C语言基础,希望深入理解UNIX/Linux系统底层机制的开发者。
  • 从事系统软件、服务器开发或嵌入式编程,需掌握系统接口的工程师。
  • 有一定开发经验,旨在查漏补缺、提升系统编程能力的进阶程序员。
读前提醒
  • 内容详实厚重,建议作为工具书查阅,不建议零基础新手从头生啃。
  • 书中部分标准较旧,结合Linux实际开发时需注意差异与兼容性。
  • 建议配合实际项目阅读,通过动手实践加深对各系统调用接口的理解。
读者共识
  • 内容权威严谨,是系统编程领域的经典之作,值得反复研读参考。
  • 对理解操作系统原理及系统调用至关重要,能显著提升编程内功。
  • 虽部分案例略显陈旧,但核心概念不过时,是进阶必读的基石书籍。

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "Parent and the child share a file table entry for every open descriptor."
  • "大多数UNIX调试程序都使用core文件以检查进程终止时的状态。"
  • "将进程的信号屏蔽字设置为由sigmask指向的值。在捕捉到一个信号或发生了一个会终止该进程的信号之前,该进程被挂起。如果捕捉到一个信号而且从该信号处理程序返回,则sigsuspend返回,并且将该进程的信号屏蔽字设置为调用sigsuspend之前的值。"
  • "与应用程序使用文件描述符(fd)访问文件一样,访问套接字也需要使用套接字描述符,其在unix系统中是用文件描述符实现的。 在AF_INET通信域中套接字SOCK_STREAM的默认协议是TCP,SOCK_DGRAM的默认协议是UDP。 不同处理器架构支持不同的字节序,小端(little-endian)freebsd linux on intel pentium,大端(big-endian)mac os on power pc solaris on sun sparc,有些处理器可以配置大端和小端,更加混乱。 TCP/IP 采用大端字节序。对于TCP/IP,地址是使用网络字节序来表示,所以应用程"
  • "由open返回的文件描述符一定是最小的未用描述符数值。这一点被某些应用程序用来在标准输入,标准输出或标准错误输出上打开新的文件。"
  • "其中,atexit的参数是一个函数地址,当调用此函数时无需向它传送任何参数,也不期望它返回一个值。exit以登记这些函数的相反顺序调用它们。同一函数如若登记多次,则也被调用多次。"
  • "如果 name 不是一个合适的常量,则所有这三个函数都会返回 -1,并将 errno 设置为 EINVAL。"
  • "Although sbrk can expand or contract the memory of a process, most versions of malloc and free never decrease their memory size. The space that we free is available for a later allocation, but the freed space is not usually returned to the kernel; that space is kept in the malloc pool."
作者简介
作者介绍 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环境高级编程》和《操作系统:设计与实现》等。
目录
第1章 UNIX基础知识
1.1 引言
1.2 UNIX体系结构
1.3 登录
1.4 文件和目录

显示全部
用户评论
对于了解linux/UNIX的环境编程很有用,是一本不错的工具参考的书,另外书中还有很多对于系统调用的自己实现的源代码(C语言版本),不错
传说中的Unix编程圣经~历时两周读完第一遍。 很多以前只有模糊理解的概念和Unix(Linux)系统中的实际实现能够对应起来了,印象比较深刻的是:文件/目录的权限控制;多进程/线程写文件的同步性问题;IO多路复用/非阻塞IO;IPC通信;信号中断(信号可重入与多线程可重入);进程执行与内存结构;用户调用与系统调用;作业控制实现;等等 经典好书,绝对值得反复阅读。
通读了一遍,终端IO有点意思
17年的主要工作是往服务器系统上移植CPython解释器以及运行库, 这本书对我来说简直就是为这个项目准备的。项目18年初已经完成,书也陆续读完了。通过这本书和这个项目,我感觉自己算是个合格的(Unix/Linux)系统软件工程师了吧。改天来写个短书评,记录下我与这本书的故事。
心有余而力不足
完美!
历时4个月,用下班的时间啃完了这本巨著,经典就是经典,通过APUE能了解文件系统,IO,进程,线程,信号,ipc,书中对系统级的api解释的很好,以后看多线程和多进程代码再也不心虚了:-)。
我越来越不知道操作系统学深了要怎么学了,越来越迷茫
补标。不适合生啃。接触过相关领域,学习过其他资料资料后,回来查漏补缺,会有醍醐灌顶的感觉
非常经典,两个月左右粗略看完一遍,日后常读常新
下载
收藏