基本信息
- 原书名:Advanced UNIX Programming (2nd Edition)
- 原出版社: Addison-Wesley Professional
- 作者: (美)MacJ.Rochkind
- 译者: 王嘉祯 杨素敏 张斌 等
- 丛书名: 计算机科学丛书
- 出版社:机械工业出版社
- ISBN:9787111185215
- 上架时间:2006-4-30
- 出版日期:2006 年5月
- 开本:16开
- 页码:488
- 版次:2-1
- 所属分类:计算机 > 操作系统 > UNIX
教材

内容简介
计算机书籍
本书第1版自1985年出版以来,历经20年畅销不衰,许多有经验的程序员都求助于它,作者Marc J. Rochkind被誉为UNIX先行者。当前,UNIX规范中有1100多个函数,要掌握这些函数确实是一件让人望而却步的事。第2版几乎完全重写,当中建议了如何可靠地使用关键函数,深入讲解了UNIX操作系统家族最新的、必用的系统调用函数 (多达307个),涉及POSIX、FreeBSD、Solaris、Linux等几大主流系统实现。.
全书包括:
●基本概念,进程通信,网络 (套接字),伪终端,I/O流,高级信号,实时处理和线程。
●数千行示例代码,包括一个Web浏览程序,一个击键记录程序/播放器,用管道、重定向写的shell程序,以及相关的后台进程程序。
●每章末的练习。一些是简单的程序设计问题,还有一些则可以作为每学期的UNIX程序设计项目。..
●配套网站www.basepath.com/aup提供了丰富的学习资源,包括:书中所有示例的源代码、作者的博客、书评、相关文献和图书、标准UNIX函数概要,等等。
本书以当前UNIX规范为基础,详细介绍了UNIX系统函数的用法,并用大量的代码和示例程序进行演示,对实际编程具有指导意义。全书共9章,内容包括:基本概念、基本文件I/O、高级文件I/O、终端I/O、进程与线程、基本进程间通信,高级进程间通信、网络技术与套接字,以及信号与定时器等。涉及POSIX、FreeBSD、Solaris、Linux等几大主流系统实现。每章末都给出一了些练习,一些是简单的程序设计问题,还有一些可以作为学期的UNIX程序设计项目。
本书适合广大UNIX和C程序员、研究人员、高校相关专业师生学习和参考。...
作译者
目录
专家指导委员会
译者序
前言
第1章 基本概念
1.1 UNIX和Linux一览
1.2 UNIX的版本
1.3 使用系统调用
1.4 错误处理
1.5 UNIX标准
1.6 共享头文件
1.7 日期和时间
1.8 关于示例代码
1.9 必要的资源
练习
第2章 基本文件I/O系统调用
2.1 概述
2.2 文件描述符及打开文件描述
2.3 文件权限位符号
2.4 open和creat系统调用
译者序
但是,UNIX规范中大约有1108个系统调用,要想通过规范来学习这些系统调用,不但枯燥无味,而且也是不可能的。本书向读者详细地介绍主要的系统调用,并通过示例代码说明它们的使用方法,再进一步通过练习来实践这些内容。本书是深入学习UNIX、编写应用程序不可多得的优秀教材。
早在1985年,作者就出版了《高级UNIX编程》的第1版,本书是第2版,两版间隔近20年的时间。这期间,UNIX环境发生了很大变化,出现了POSIX、Solaris、Linux、FreeBSD以及Darwin(Mac OS X)等类UNIX系统1第2版中包括了对以上内容的讨论;除了包含第1版大约70个系统调用之外,又增加了200多个,共有300多个系统调用。这300多个系统调用包括:进程间通信、网络(套接字)、伪终端、高级信号量、实时处理和线程等内容;同第1版一样,本书的第2版还包括了几千行示例代码,其中大多数来源于实际程序(比如shell、全屏菜单系统、Web服务器和实时输出记录器),只是在实际程序的基础上进行了条件简化。这些例子都是用C语言编写的,以帮助读者更好地理解系统调用的含义和具体的应用;此外,在本书的每一章后面都有精心设计的习题,用于巩固所学的内容。这些习题的难度不同,有的习题比较简单,而有的习题则是让读著运用所学的知识进行综合性的练习,有一定难度。..
本书的作者Marc·J.Rochkind自20世纪70年代开始就在Bell实验室工作,长期致力于UNIX系统的开发研究,积累了许多开发应用系统的经验,本书的第1版出版后就一直为应用程序的编程人员所青睐,现在重新修订的第2版又对UNIX操作系统家族最新的、必需的系统调用进行了系统深入的讲解和示范。
参加本书翻译工作的有:王嘉祯、杨素敏、张斌、冯兵、党辰、彭德云、徐波和胡建理等;王嘉祯、杨素敏等对全书进行了校阅、统稿;中国人民解放军军械工程学院米东教授等为本书的翻译工作提出了许多宝贵的意见和建议,对他付出的辛勤劳动表示深切的谢意。由于书中涉及的知识面比较广泛,再加上译者的水平有限,书中错误和不妥之处在所难免,恳请广大读者批评指正。...
王嘉祯
2006年2月
前言
本书的主题是UNIX系统调用——即UNIX内核与在其上层运行的用户程序之间的接口。对于那些仅使用命令与系统交互(比如shell、文本编辑器以及其他应用程序)的人来讲,或许不必对系统调用有太多了解,但对于UNIX程序员来说,对系统调用的彻底了解是至关重要的。 系统调用是访问诸如文件系统、多任务机制以及进程间通信原语等内核功能的唯一途径。
系统调用定义了UNIX系统到底是什么。所有的一切(除了子程序和命令行)都是建立在这个基础之上的。尽管这些高层程序的许多新颖之处为UNIX赢得了不少名声,但它们也同样可以在任何现代操作系统上实现。当人们说UNIX系统是个雅致的、简单的、高效的、可靠的和可移植的操作系统时,指的不是其命令(其中一些并不怎么样),而是其内核。
以上所说仍然正确,只是有一点令人遗憾:现在内核的编程接口不再那么雅致、简单了。尊实上,由于在过去几十年中UNIX的发展分裂为几个分支,同时因为最初的标准化组织(The Open Group)将几乎所有已有的函数都集合了起来(一共1108个函数),所以导致接口变得笨拙、矛盾、冗余,容易出错和混淆。但它依然高效、可靠并可移植,这就是为什么UNIX和类UNIX系统如此成功的原因。的确,UNIX系统调用接口是迄今我们所拥有的唯一一个具有广泛可移植性的接口,而且这种状况可能在我们有生之年不会改变。.
为了理清问题,拥有全部的文档是不够的,就像仅仅拥有黄页并不能找到好的饭店或宾馆一样。我们需要一位向导,能够告诉我们什么是好的、什么是坏的,而不仅仅是告诉我们有哪些东西。这就是本书的目的所在,也是本书与其他UNIX编程书的不同之处。本书不仅要指导读者如何使用系统调用,还要告诉他们不要使用哪些系统调用,因为那些系统调用都不是必需的,它们有的过时了,有的未被正确地实现,有的设计得很糟糕。
下面简单介绍一下本书的大致内容:开篇将介绍单一UNIX规范第3版中定义的1108个函数,但其中去掉了大约590个标准C函数和其他不属于内核接口层的库函数、大约90个POSIX线程函数(保留了其中十多个最为重要的)、大约25个审计登录函数、大约50个跟踪函数、大约15个晦涩废旧的函数以及大约40个用于调度和其他不大有用的函数。本书真正要介绍的只有307个。(见附录D的列表。)不是说这307个全是好的函数——有的也没什么用处,有的甚至还是危险的。但这307个函数都是读者需要了解的。..
本书没有包括以下内容:内核实现(除了一些基本的)、设备驱动程序、c程序设计(有些间接的除外)、UNIX命令(shell、vi、emacs等)和系统管理。
全书共有9章:基本概念、基本文件I/O、高级文件I/O、终端I/0、进程和线程、基本的进程间通信、高级进程间通信、网络和套接字以及信号和定时器。先通读第1章,而后就可以自由跳跃浏览了。其中有许多交叉参考,能避免在阅读中迷失。
同第1版一样,这本新书包括了几千行示例代码,其中大多数来源于实际程序(比如shell、全屏菜单系统、Web服务器和实时输出记录器),并进行了简化。这些例子都是用C语言编写的,但在本书的附录B和附录C中给出了其他语言的接口,所以如果你喜欢,就可以采用C++、Java或Jython(Python的变体)来编程。
文字和示例代码仅仅是种资源;实际上还要通过练习来学习UNIX编程。为了提供练习,在每章的末尾都有练习题。这些练习难度不一,有的只需要简单地编写几行代码,有的则是一学期的课程设计。
我选了4种UNIX系统作为详细研究之用,并用来测试例子:Solaris 8、SuSE Linux 8(2.4内核)、FreeBSD 4.6和Darwin(Mac OS X内核)6.8。我将源码保存在FreeBSD系统上,然后用NFS或Samba把代码安装到其他系统上。
我在Windows系统上用TextPad编辑代码,使用Telnet、SSH(PuTTY)或者XWindow系统(XFree86和Cygwin)访问4个测试系统。在同一显示屏上打开文本编辑器和4个Telnet/SSH/Xterm窗口十分方便,因为从写代码到在4个系统上测试只需要几分钟时间。另外,我常常使用一个浏览器窗口打开单一UNIX规范,一个浏览器窗口打开Google,一个浏览器窗口运行MicrosoftWord写书。除了Word对于像书之类的大型文档(破折号,混合样式,弱交叉引用,古怪的文档组合)有些糟糕之外,所有的工具都很好用。我使用Peri和Python做了不同的事情,比如抽取代码样本和维护系统调用的数据库。
所有的示例代码(免费公开代码)、勘误表和更多的内容都在本书的Web站点www.basepath.com/aup上。
我要感谢那些审阅了草稿或者以其他方式提供了技术支持的人:Tom Cargill、Geoff Clare、Andrew Gierth、Andrew Josey、Brian Kernighan、Barry Margolin、Craig Patridge和David Schwartz。另外还要特别感谢那些专心细致地审阅了草稿但要求匿名的人。当然,这些人不需要为您在本书中找到的错误受到谴责——我信任他们。
我还要感谢我的编辑——Mary Franz,是她在一年前提议编写该书的。幸运的是,她正好是在我深入浏览了Linux并再一次为UNIX而兴高采烈的时候找到了我。这使我回想起1972年的时候……
我真心希望您能从本书中得到快乐!如果您发现了错误,或者您将代码移植到了新的系统中,或者您只是想分享您的想法,那么请给我发邮件:aup@basepath.com。...
Marc J.Rochkind
Boulder,Colorado
2004年4月