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

史蒂文斯 (W.Richard Stevens)

出版时间

2014-06-01

ISBN

9787115352118

评分

★★★★★

标签

编程

书籍介绍
这不是一本教你写代码的书,而是一堂关于「接口设计」的课。它最独特的价值,在于让你站在操作系统设计者的高度,去理解为什么UNIX要暴露这些与内核交互的接口、为什么这样设计。读完你会忽然明白:gethostbyname背后做了什么,文件描述符为何总是取最小的未用值,信号处理为何要如此挂起与恢复。它适合有一定实践、却常遇知识盲区的工程师——比如移植解释器、维护网络项目时,那些「只知道调用、不知底层逻辑」的时刻。它味如嚼蜡地铺开文件、进程、信号、I/O,却在你对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环境高级编程》和《操作系统:设计与实现》等。
AI导读
核心看点
  • 被誉为UNIX编程圣经,系统讲解文件、进程、信号等核心接口。
  • 基于最新POSIX标准修订,涵盖线程、IPC及网络编程等高级特性。
  • 深入剖析系统调用与内核交互逻辑,提供权威且实用的编程指南。
读者共识
  • 内容权威严谨,是系统编程领域的经典之作,值得反复研读参考。
  • 对理解操作系统原理及系统调用至关重要,能显著提升编程内功。
  • 虽部分案例略显陈旧,但核心概念不过时,是进阶必读的基石书籍。
精彩摘录
  • "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."
目录
第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解释的很好,以后看多线程和多进程代码再也不心虚了:-)。
我越来越不知道操作系统学深了要怎么学了,越来越迷茫
补标。不适合生啃。接触过相关领域,学习过其他资料资料后,回来查漏补缺,会有醍醐灌顶的感觉
非常经典,两个月左右粗略看完一遍,日后常读常新
下载
收藏