注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络操作系统其他操作系统UNIX系统编程(原书第2版)

UNIX系统编程(原书第2版)

UNIX系统编程(原书第2版)

定 价:¥78.00

作 者: (美)Kay A.Robbins,(美)Steven Robbins著;陈涓,赵振平译;陈涓译
出版社: 机械工业出版社
丛编项: 计算机科学丛书
标 签: UNIX

ISBN: 9787111161905 出版时间: 2005-05-01 包装: 平装
开本: 26cm 页数: 656 字数:  

内容简介

  本书是UNIX系统编程的经典教材,并基于最新的UNIX标准进行了更新,其内容完全覆盖文件、信号、POSIX线程、UDP、Web和客户机-服务器等相关内容,并对通信、并发和多线程问题进行了透彻的研究,对复杂的概念进行了全面、完善以及明晰的解释,并以此而闻名。本书不仅提供了大量实例和练习,还专门设计了有针对性的项目,并给出了参考答案,帮助读者理解相关的概念,增强应用能力。本书适合作为高等院校计算机专业教材,也可供软件开发人员参考。本书前言前言:本书是1995年PrenticeHall出版的《PracticalUNIXProgramming:AGuidetoCommunication,ConcurrencyandMultithreading》的第2版。为了更好地反映本书的内容,我们修改了书名(英文版)。同上一版相比,除了书名,我们还对许多地方进行了修改。因特网已经成为计算和社会领域中的一个主导因素。我们的个人信息联网了,我们的软件经常会受到攻击。因此,编写正确的代码显得更加重要。在新的版本中,我们尽量去生成能够正确地处理错误和特殊情况的代码。我们知道,只是声称“处理了所有的错误”,却在给出的代码示例中省略掉错误处理,是没有什么说服力的。但是,错误处理使代码变得更加复杂,我们想尽力使代码清晰一些。本书对前一版的另一个重大改进就是采用了单一UNIX规范,在本书中我们称之为POSIX。我们再也不用为选用哪个厂商的库函数而发愁了—现在已有正式的版本了。在编写本书的过程中,我们尽了最大的努力来遵循这个标准。本书与众不同之处是含有练习和项目章。实际上,本书就是从一个项目手册发展而来的,这个项目手册是美国国家科学基金课题(NationalScienceFoundationGrant)的一部分。在完成这个项目的初期开发之后,我们逐渐认识到:完成这个项目所需的资料分散在很多地方—通常可以在那些提供了大量细节但很少进行概念描述的参考书中找到这些资料。这样,这本书就逐步演变成一本基于最新UNIX标准的完备的参考书了。本书分为四个部分,每个部分中都包括一些主题章和项目章。主题章以循序渐进的方式涵盖了特定的资料,其中有很多例子和小练习。本书还针对进程管理、并发和通信过程中的很多基本概念提供了编程练习(即项目章)。这些编程练习和传统科学课程中的实验作用相当。只有通过实践,才能真正理解书中的概念。这些练习的难度由浅入深,很多练习都只要不到100行的代码就可以实现。下表对本书的结构进行了总结。有14个主题章,这些主题章与8个项目章相互独立。第一次通读本书时可以略过项目章。项目章通过开发一个扩展的应用将几个主题章中的资料整合起来。这些项目包含两个层面:除了说明编程思想之外,还引导读者去理解与应用相关的更高级的主题。这些项目都是分阶段设计的,大多数完整的实现都只需要几百行代码。由于不需要编写大量的代码,因此读者可以将注意力集中在对概念的理解而不是代码的调试上。为了简化编程,我们提供了网络通信和日志输出的库。对专业的程序员来说,主题章结尾处的练习提供了基本的练习内容。通常,使用本书的教师可以在一个学期的课程中挑选几个练习和一个项目章让学生们实现。每个项目都有很多变化,因此这些项目可以在多个学期中反复使用。读者可以选择不同的方式来读这本书。第一部分中的主题章是学习本书其他部分的基础。读完第一部分的主题章之后,读者就可以按任意的顺序来学习第二部分到第四部分了。但后继各章结尾处有关交互(例如,线程是怎样与信号交互的)的讨论除外。我们假定读者是一名很好的C程序员,尽管不一定是UNIXC的程序员。读者应该熟悉C语言编程和基本的数据结构。如果你刚刚接触UNIX,附录A中给出了程序开发的一些必备知识。本书中包括标准函数的概要,在“概要”的右下角列出了用来说明函数的相关标准。知识的更新如此之快,然而书的内容却是有限的。我们欢迎读者给我们提出意见和建议。读者可以给我们发电子邮件authors@usp.cs.utsa.edu。我们尽了最大的努力来编写一本无差错的书。但是,如果你是第一个向我们指出某个错误的人,我们会在本书的网站上向你表示诚挚的谢意。我们在Web站http://usp.cs.utsa.edu/usp上提供了与本书相关的信息。本书包含的所有代码都可以从这个Web站点上下载。译者序:本书是一本介绍UNIX系统的工作原理以及学习UNIX系统程序编写方法的经典教材。对于程序员来说,本书同样是一本不可多得的案头必备参考书。读者在掌握了操作系统、C语言以及计算机网络的基本知识后学习本书,会发现本书将使读者对UNIX系统的理解登上一个新的高度,并将读者编写多线程和网络通信程序的能力提高到一个新的境界。本书有以下几个突出特点:其一,在讲述基本概念时,本书围绕主题设计了大量实例程序和练习来加深读者对概念的理解;其二,在各部分的最后,作者精心设计了生动有趣的项目来总结各部分的主要内容。这些项目,例如破解命令解释程序、WWW重定向、因特网音频广播、服务器性能等的取材都有很强的实际应用背景,稍加完善就是一个可用的程序;其三,本书采用了最新的UNIX标准:SingleUNIXSpecification,并在书中加入了大量的最新信息,如火星探路者中的优先级反转缺陷等。另外,本书各章末尾处的扩展阅读也给读者指出了相关领域经典的或最新的参考资料并进行了细致的评价,对读者进一步研究提供了很好的指导。如果您希望了解并掌握操作系统接口及其工作原理,我们相信本书将是一本合适的教材及参考书;如果您已经具备了初步的UNIX程序编写能力,本书将会引领您进入系统程序编写者的行列;如果您已经是一个熟练的系统程序员了,本书丰富的内容实例、充实的知识架构也一定会让您对计算机系统的理解有新的升华。本书的第20、21、22章由赵振平翻译,其他部分由陈涓翻译。郭传雄和赵振平校阅了全书。致谢我们非常感谢MikeSpeciner和BobLynch,他们通读了全部手稿,并提出了很多有益的建议。我们尤其要对MaryLouNohr细心睿智的编辑工作表示感谢。我们还要对NealWagner和RadiaPerlman给予的鼓励和建议表示感谢。从1988年至今(2003年),我们为大学本科生和研究生开设了操作系统课程,本书中很多资料都曾作为这些教学课程的一部分使用。学习此课程的学生们都经历了书稿发展的不同阶段,并对不断出现的项目进行了实际的测试。他们提供的程序故障、注释、抱怨和建议都使本书更加出色,并且使我们对这些主题之间的相互联系有了更深刻的认识。在早期书稿中发现错误的学生有JosephBell、CarlosCardenas、IgorGrinshpan、JasonJendrusch和JamesManion。我们要感谢美国国家科学基金会通过NSF-ILI授权的USE-0950497对我们组建实验室提供的支持,这样我们才有机会去开展最初的课程,而这些课程正是本书的基础。NSF(DUE-975093、DUE-9752165和DUE-0088769)还为开发那些用来探索和分析操作系统概念的工具提供了支持。我们要感谢PrenticeHall的编辑GregDoench在整个过程中为我们提供的指导,还要感谢我们的出版编辑WilliamMara使此书得以出版。我们用对本书进行了排版,的制作者提供了可以免费使用的软件,我们还要向他们表达我们的谢意。我们特别要感谢我们的家人,他们给了我们无限的爱和支持,尤其要感谢我们的孩子Nicole和Thomas,他们对这项艰巨的任务表示了热情和理解。

作者简介

  KayA.Robbins和StevenRobbins从麻省理工学院获得博士学位。他们现任教于得克萨斯大学圣安东尼奥分校的计算机科学系。相关图书数据仓库(原书第3版)编译原理并行计算导论(原书第2版)离散数学导学数据库设计教程(第2版)3D游戏卷1实时渲染与软件技术3D游戏卷2动画与高级实时渲染技术数字图像处理疑难解析现代信息检索CAXA数控铣CAD/CAM技术C语言的科学和艺术计算机视觉信息系统原理:原书第6版计算机网络系统方案(原书第3版)计算机科学概论(原书第2版)可扩展并行计算技术、结构与编程数据库原理、编程与性能Java面向对象程序设计教程嵌入式微控制器微机接口技术实验教程神经网络原理(原书第2版)C++语言的设计和演化信息论、编码与密码学软件需求组合数学(原书第4版)JAVA编程思想(第2版)数据库系统导论并行程序设计数据库与事务处理操作系统现代操作系统(第2版)计算机网络:自顶向下方法与Internet特色(原书第3版)高级编译器设计与实现3D计算机图形学(原书第3版)C程序设计语言(第2版·新版)习题解答计算机网络与因特网(原书第4版)人工智能:英文C++编程思想。第2卷:实用编程技术模式分析的核方法

图书目录

第一部分  基础知识
第1章  技术对程序的冲击        1
1.1  变化中的术语        1
1.2  时间和速度        2
1.3  多道程序设计和分时        3
1.4  应用层的并发        5
1.4.1  中断        5
1.4.2  信号        5
1.4.3  输入和输出        6
1.4.4  进程、线程和资源共享        6
1.4.5  共享内存的多个处理器        6
1.4.6  网络作为计算机        7
1.5  安全和容错        7
1.6  侵入带来的缓冲区溢出        8
1.6.1  缓冲区溢出的后果        9
1.6.2  缓冲区溢出与安全        10
1.7  UNIX标准        11
1.8  扩展阅读        12
第2章  程序、进程和线程        14
2.1  程序怎样转换成进程        14
2.2  线程和执行线程        15
2.3  程序映像的布局        15
2.4  库函数调用        17
2.5  函数返回值和错误        20
2.6  参数数组        21
2.6.1  用makeargv创建参数数组        22
2.6.2  makeargv的实现        23
2.7  线程安全的函数        26
2.8  静态变量的使用        28
2.9  静态对象的结构        29
2.10  进程环境        34
2.11  进程终止        36
2.12  练习:一个env工具        38
2.13  练习:消息日志        39
2.14  扩展阅读        40
第3章  UNIX系统中的进程        41
3.1  进程标识        41
3.2  进程状态        42
3.3  UNIX进程的创建与fork调用        44
3.4  wait函数        49
3.5  exec函数        55
3.6  后台进程与守护进程        59
3.7  临界区        61
3.8  练习:进程链        61
3.9  练习:进程扇        62
3.10  扩展阅读        63
第4章  UNIX I/O        64
4.1  设备术语        64
4.2  读和写        64
4.3  打开和关闭文件        72
4.4  select函数        76
4.5  poll函数        82
4.6  文件表示        84
4.6.1  文件描述符        85
4.6.2  文件指针和缓冲        87
4.6.3  文件描述符的继承        88
4.7  过滤器和重定向        92
4.8  文件控制        94
4.9  练习:原子日志        97
4.10  练习:cat工具        102
4.11  扩展阅读        103
第5章  文件和目录        104
5.1  UNIX文件系统导航        104
5.1.1  当前工作目录        105
5.1.2  搜索路径        108
5.2  目录访问        108
5.2.1  访问文件状态信息        110
5.2.2  确定文件的类型        113
5.3  UNIX文件系统的实现        113
5.3.1  UNIX文件的实现        114
5.3.2  目录的实现        116
5.4  硬链接和符号链接        116
5.4.1  创建或删除一个链接        117
5.4.2  创建和删除符号链接        120
5.5  练习:which命令        125
5.6  练习:通知程序        125
5.7  练习:news biff程序        127
5.8  练习:遍历目录        128
5.9  扩展阅读        130
第6章  UNIX特殊文件        131
6.1  管道        131
6.2  流水线        134
6.3  FIFO        137
6.4  管道与客户机-服务器模型        140
6.5  终端控制        146
6.6  音频设备        154
6.7  练习:音频        158
6.8  练习:路障        160
6.9  练习:stty命令        161
6.10  练习:重温客户机-服务器        162
6.11  扩展阅读        162
第7章  项目:令牌环        163
7.1  环形拓扑        163
7.2  环的形成        164
7.3  环的研究        169
7.4  简单的通信        170
7.5  用令牌实现互斥        171
7.6  用投票实现互斥        172
7.7  匿名环中的领导者选举        173
7.8  通信中使用的令牌环        174
7.9  应用流水线技术的预处理器        176
7.10  并行环算法        177
7.10.1  图像过滤        178
7.10.2  矩阵乘法        179
7.11  弹性环        180
7.12  扩展阅读        181
第二部分  异步事件
第8章  信号        183
8.1  信号的基本概念        183
8.2  产生信号        184
8.3  对信号掩码和信号集进行操作        187
8.4  捕捉与忽略信号—sigaction        192
8.5  等待信号—pause、sigsuspend和sigwait        197
8.5.1  pause函数        197
8.5.2  sigsuspend函数        198
8.5.3  sigwait函数        204
8.6  信号处理:错误和异步信号安全        205
8.7  用siglongjmp和sigsetjmp进行程序控制        207
8.8  用异步I/O编程        209
8.9  练习:转储统计        218
8.10  练习:同时操作慢速设备        218
8.11  扩展阅读        219
第9章  时间和定时器        220
9.1  POSIX时间        220
9.1.1  用从Epoch开始的秒数来表示时间        220
9.1.2  显示日期和时间        221
9.1.3  用struct timeval来表示时间        223
9.1.4  使用实时时钟        225
9.1.5  实耗时间和处理器时间的对比        227
9.2  睡眠函数        230
9.3  POSIX:XSI间隔定时器        231
9.4  实时信号        235
9.5  POSIX:TMR间隔定时器        238
9.6  定时器漂移、超限和绝对时间        242
9.7  扩展阅读        250
第10章  项目:虚拟定时器        251
10.1  项目概述        251
10.2  简单的定时器        253
10.3  对五个定时器中的一个进行设置        254
10.3.1  virtualtimers对象        254
10.3.2  hardwaretimer对象        256
10.3.3  主程序的实现        257
10.3.4  用show来置入定时器代码        257
10.4  使用多个定时器        262
10.4.1  设置多个定时器        263
10.4.2  用多个定时器进行测试        264
10.5  多定时器的健壮实现        266
10.6  POSIX:TMR 定时器的实现        268
10.7  mycron,一个小型的任务调度工具        269
10.8  扩展阅读        269
第11章  项目:破解命令解释程序        270
11.1  建造一个简单的命令解释程序        270
11.2  重定向        274
11.3  流水线        275
11.4  前台的信号处理        278
11.5  进程组、会话和控制终端        283
11.5.1  进程组        283
11.5.2  会话        284
11.6  ush中的后台进程        287
11.7  作业控制        293
11.8  ush的作业控制        295
11.8.1  一个作业列表对象        295
11.8.2  ush中的作业列表        296
11.8.3  ush中的作业控制        297
11.8.4  等待流水线时的进程行为        297
11.9  扩展阅读        298
第三部分  并      发
第12章  POSIX线程        299
12.1  监视多个文件描述符的方法        299
12.2  使用线程来监视多个文件描述符        300
12.3  线程管理        302
12.3.1  用ID引用线程        303
12.3.2  创建一个线程        304
12.3.3  分离和连接        305
12.3.4  退出和取消        306
12.3.5  向线程中传递参数并将值返回        309
12.4  线程安全        315
12.5  用户线程和内核线程        316
12.6  线程的属性        318
12.6.1  线程状态        319
12.6.2  线程栈        320
12.6.3  线程调度        321
12.7  练习:并行文件拷贝        324
12.8  扩展阅读        325
第13章  线程同步        326
13.1  POSIX同步函数        326
13.2  互斥锁        326
13.2.1  创建并初始化一个互斥量        327
13.2.2  销毁一个互斥量        328
13.2.3  对互斥量的锁定和解锁        329
13.2.4  保护不安全的库函数        330
13.2.5  对标志符和全局值的同步        331
13.2.6  使数据结构成为线程安全的        335
13.3  最多一次和至少一次的执行        336
13.4  条件变量        340
13.4.1  创建和销毁条件变量        341
13.4.2  等待并通知条件变量        342
13.5  信号处理与线程        345
13.5.1  将信号定向到一个特定的线程中去        346
13.5.2  为线程屏蔽信号        346
13.5.3  为信号处理指定专用线程        347
13.6  读者和写者        349
13.7  strerror_r的实现        353
13.8  死锁和其他比较麻烦的问题        354
13.9  练习:多个路障        355
13.10  扩展阅读        356
第14章  临界区和信号量        357
14.1  处理临界区        357
14.2  信号量        359
14.3  POSIX:SEM 无名信号量        361
14.4  POSIX:SEM信号量操作        363
14.5  POSIX:SEM命名信号量        368
14.5.1  创建并打开命名信号量        368
14.5.2  关闭并删除命名信号量        370
14.6  练习:许可证管理器        372
14.6.1  许可证对象        372
14.6.2  runsim主程序        373
14.6.3  对许可证管理器的扩展        373
14.7  扩展阅读        373
第15章  POSIX IPC        374
15.1  POSIX:XSI进程间通信        374
15.1.1  标识并访问IPC对象        374
15.1.2  从命令解释程序中访问POSIX:XSI IPC资源        375
15.2  POSIX:XSI信号量集        376
15.2.1  信号量集的创建        376
15.2.2  信号量集控制        378
15.2.3  POSIX信号量集操作        380
15.3  POSIX:XSI共享内存        384
15.3.1  访问一个共享的内存段        385
15.3.2  共享内存段的连接和分离        385
15.3.3  控制共享内存        386
15.3.4  共享内存实例        387
15.4  POSIX:XSI消息队列        392
15.5  练习:POSIX无名信号量        398
15.6  练习:POSIX命名信号量        398
15.7  练习:用共享内存实现管道        399
15.8  练习:用消息队列实现管道        401
15.9  扩展阅读        402
第16章  项目:生产者消费者同步        403
16.1  生产者-消费者问题        403
16.2  受互斥锁保护的有限缓冲区        404
16.3  使用信号量的缓冲区实现        406
16.4  一个简单的生产者-消费者问题        411
16.5  使用条件变量的有限缓冲区实现        414
16.6  带有完成条件的缓冲区        414
16.7  并行文件拷贝        421
16.7.1  执行并行文件拷贝的生产者        421
16.7.2  执行并行文件拷贝的消费者        422
16.7.3  执行并行文件拷贝的main程序        422
16.7.4  对并行文件拷贝的增强        422
16.8  线程化打印服务器        423
16.8.1  请求缓冲区        424
16.8.2  生产者线程        425
16.8.3  消费者线程        425
16.8.4  打印服务器        425
16.8.5  其他的增强功能        425
16.9  扩展阅读        426
第17章  项目:非完全并行虚拟机        427
17.1  PVM的历史、术语和结构        427
17.2  非完全并行虚拟机        429
17.3  NTPVM项目概述        430
17.3.1  NEWTASK分组        432
17.3.2  DATA分组        432
17.3.3  DONE分组        433
17.4  调度程序的I/O和测试        433
17.4.1  用多个窗口进行测试        437
17.4.2  用远程日志进行测试        439
17.5  没有输入的单任务        440
17.6  串行的任务        440
17.6.1  输入线程        441
17.6.2  输出线程        442
17.7  并发的任务        442
17.8  分组通信、广播和路障        443
17.9  终止和信号        444
17.10  有序的消息传递        444
17.11  扩展阅读        444
第四部分  通      信
第18章  面向连接的通信        445
18.1  客户机-服务器模型        445
18.2  通信信道        446
18.3  面向连接的服务器策略        448
18.4  通用因特网通信接口        450
18.4.1  错误处理        452
18.4.2  读和写        452
18.5  不同服务器策略的UICI实现        452
18.6  UICI客户机        455
18.7  UICI的套接字实现        459
18.7.1  socket函数        460
18.7.2  bind函数        460
18.7.3  listen函数        461
18.7.4  u_open的实现        462
18.7.5  accept函数        463
18.7.6  u_accept的实现        464
18.7.7  connect函数        465
18.7.8  u_connect的实现        466
18.8  主机名和IP地址        468
18.9  线程安全的UICI        475
18.10  练习:ping服务器        476
18.11  练习:音频的传输        478
18.12  扩展阅读        479
第19章  项目:WWW重定向        480
19.1  万维网        480
19.2  统一资源定位符        481
19.3  HTTP入门        482
19.3.1  客户请求        483
19.3.2  服务器响应        483
19.3.3  HTTP消息交换        484
19.4  Web通信模式        485
19.4.1  隧道        486
19.4.2  代理        487
19.4.3  高速缓存和透明性        488
19.4.4  网关        489
19.5  单连接的通过型监视器        490
19.6  隧道服务器的实现        492
19.7  用于测试的服务器驱动程序        493
19.8  HTTP首部的解析        494
19.9  简单的代理服务器        495
19.10  代理监视器        496
19.11  代理高速缓存        499
19.12  门户网关        499
19.13  用于负载平衡的网关        500
19.14  事后的调查分析        500
19.14.1  线程和时序错误        501
19.14.2  未捕捉到的错误和错误的退出        501
19.14.3  书写风格和表示方法        502
19.14.4  拙劣的测试及结果的表示        502
19.14.5  编程错误和不好的风格        503
19.15  扩展阅读        504
第20章  无连接通信和多播        505
20.1  无连接通信入门        505
20.2  无连接通信的简化接口        506
20.2.1  主机名和u_buf_t 结构        507
20.2.2  UICI UDP 的各种返回错误值        508
20.2.3  UDP 缓冲区大小与UICI UDP        508
20.3  简单-请求协议        508
20.4  请求-应答协议        513
20.5  有超时和重试机制的请求-应答协议        517
20.6  请求-应答-确认协议        521
20.7  UICI UDP的实现        522
20.7.1  u_openudp的实现        522
20.7.2  sendto函数        523
20.7.3  u_sendto和u_sendtohost的实现        524
20.7.4  recvfrom函数        525
20.7.5  u_recvfrom和u_recvfromtimed的实现        526
20.7.6  主机名和u_buf_t        527
20.8  UDP和TCP的比较        528
20.9  多播        529
20.9.1  多播编址        530
20.9.2  u_join的实现        531
20.9.3  u_leave的实现        532
20.10  练习: UDP 端口服务器        532
20.11  练习: 无状态文件服务器        533
20.12  扩展阅读        535
第21章  项目:因特网音频广播        536
21.1  项目概述        536
21.2  音频设备模拟        538
21.3  单节目和单接收者的UDP 实现        538
21.3.1    简单实现        538
21.3.2  接收者如何终止        540
21.3.3  接收者进行缓冲以解决网络延迟问题        541
21.3.4  接收者进行缓冲以解决乱序传送的问题        542
21.4  多节目和多接收者的UDP 实现        545
21.4.1  多节目单接收者        545
21.4.2  多节目多接收者        546
21.5  音频广播的UDP 实现        546
21.6  音频广播的多播实现        547
21.7  TCP 实现的差异        548
21.7.1  单节目单接收者的TCP实现        548
21.7.2  多节目单接收者的TCP实现        549
21.7.3  音频广播的TCP 实现        549
21.8  通过浏览器接收流式音频        551
21.8.1  使用浏览器助手程序        551
21.8.2  为Web服务器设置一个新的MIME类型        553
21.8.3  设置浏览器以支持新的MIME类型        553
21.8.4  创建Web页面        553
21.8.5  使用预定义的MIME类型        553
21.9    扩展阅读        554
第22章  项目:服务器性能        555
22.1  服务器性能的代价        555
22.2  服务器体系结构        555
22.3  项目概述        559
22.4  单客户端驱动程序        559
22.4.1  处理一个连接        559
22.4.2  响应编程        560
22.4.3  收集统计信息        560
22.4.4  对客户端做测试        561
22.5  多客户端驱动程序        561
22.6  实现每个请求一个线程和每个请求一个进程        563
22.7  多线程工作者池策略        564
22.8  使用有界缓冲的多线程工作者池        564
22.9  多进程工作者池        565
22.10  磁盘I/O的影响        565
22.11  性能研究        568
22.11.1  基线测量        568
22.11.2  波动性的根源        569
22.11.3  测量的各种错误        569
22.11.4  同步        571
22.11.5  很简单的错误        572
22.11.6  该测量哪些项目        573
22.11.7  数据分析和表达        575
22.12  书写报告        575
22.12.1  引言        575
22.12.2  设计、实现和测试        576
22.12.3  实验        576
22.12.4  结果及分析        576
22.12.5  结论        577
22.12.6  参考文献        577
22.13  扩展阅读        577
附录A  UNIX 基础        578
附录B  重启库        591
附录C  UICI的实现        599
附录D  日志函数        612
附录E  POSIX扩展        626
参考文献        628
程序索引        636
索引        639

本目录推荐