实战Linux编程精髓
基本信息
- 作者: (以)Arnold Robbins [作译者介绍]
- 译者: 杨明军 曹亚菲 夏毅
- 丛书名: 开发大师系列
- 出版社:中国电力出版社
- ISBN:7508330072
- 上架时间:2005-7-25
- 出版日期:2005 年7月
- 开本:16开
- 页码:500
- 版次:1-1
- 所属分类:
计算机 > 操作系统 > Linux
编辑推荐
这是一本卓越的介绍Linux编程的书。Arnold采用了非常有效的方法来展示富有经验的程序员是如何使用Linux编程接口的,选题精辟,解释透彻。特别是其中有关国际化的内容很值得一看,强烈推荐!
内容简介回到顶部↑
编写应用软件,特别是那些比较重要的软件,毫无疑问要涉及到系统调用。在UNIX/Linux环境下编程更是如此。要想编写优秀的软件,就必须熟悉这些系统调用的方方面面。通过阅读这本书,你能够快速地掌握这些重要技术,以构建严谨的Linux软件。全书主要分为三大部分:第一部分讨论了基本的编程问题,包括Linux编程环境、基本的文件和进程管理与操作、内存操作,还介绍了一些基本的库接口。第二部分比较深入地讨论了上面这些概念,如进程间通信、信号、权限检查;此外这部分还介绍了一些扩展接口;接着讨论了多语言问题;最后介绍了一些高级专题。第三部分介绍了程序设计的一个重要环节即调试。本书结构合理、概念清晰、实例丰富,并具有很强的启发性和实用性。
作译者回到顶部↑
本书提供作译者介绍
ARNOLD ROBBINS是一位专业程序员和教授,同时也是《UNIX in a Nutshell入《Learning the Korn Shell》和《Effective awk Programming》等书的作者。另外,他还是一名长期的GNUProject的志愿者,目前负责维护gawk。从1980年开始,Robbins就开始使用C、C++、UNIX和GNU/Linux。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
译者序
前 言
第1部分
第1章 引言 3
1.1 linux/unix文件模型 3
1.2 linux/unix进程模型 7
1.3 标准c与原始c 9
1.4 为什么gnu程序更好? 10
1.5 回顾可移植性 13
1.6 推荐读物 14
1.7 小结 15
练习 15
第2章 参数、选项和环境 17
2.1 选项和参数约定 17
2.2 基本的命名行处理技术 20
2.3 选项解析:getopt()和getopt_long()函数 21
2.4 环境 29
2.5 小结 36
练习 37
第3章 用户级内存管理 39
前 言
第1部分
第1章 引言 3
1.1 linux/unix文件模型 3
1.2 linux/unix进程模型 7
1.3 标准c与原始c 9
1.4 为什么gnu程序更好? 10
1.5 回顾可移植性 13
1.6 推荐读物 14
1.7 小结 15
练习 15
第2章 参数、选项和环境 17
2.1 选项和参数约定 17
2.2 基本的命名行处理技术 20
2.3 选项解析:getopt()和getopt_long()函数 21
2.4 环境 29
2.5 小结 36
练习 37
第3章 用户级内存管理 39
译者序回到顶部↑
编写应用软件总会至少涉及到两类接口。一类接口面向最终用户,衡量这类接口的标准主要是看用户使用这些接口是否方便,功能是否丰富,或者简单地说,就是看是否“好用”。另一类接口就是底层库和系统调用接口。这类接口将最终决定你所编写应用软件的功能和性能,因此如何选取这些接口是编码的重点之一。
我们知道,由于历史原因以及其他各种复杂因素,造就了今天UNIX的多个衍生版本。这些分支之间存在着各种各样的差异,单从各种UNIX系统复杂的衍生关系就可以看出来。Linux作为UNIX界的后起之秀,就必须面对这个现实。它既要继续支持UNIX中业已存在的接口,又要对某些实现方法做出决策,以提供优良的性能。因此,它必定与已有的UNIX不同。要想在UNIX/Linux下编写出优秀的软件,就必须熟悉这些系统调用的方方面面。既要了解这些接口好的一面,也要知道它们的局限性。只有这样,才能在选取接口时做出正确的决策。当然,这是非常困难的一件事情。涉及的内容太多,而且很难找到这方面的资料,书店里基本上没有全面深入介绍这方面内容的书籍。
不过,这本书解决了上述问题。通过阅读这本书,你能够快速地掌握这些重要技术,以构建严谨的Linux软件。作者Arnold Robbins是一位来自以色列的专业程序员和教授,自1980年以来,他就开始使用C、C++、UNIX和GNU/Linux,具有非常深厚的理论基础和丰富的编程实践。他还是一名优秀的作家,其作品有:《UNIX in a Nutshell》、《Learning the Korn Shell》和《Effective awk Programming》等。Arnold是一位令人尊敬的资深GNU项目志愿者,目前负责维护gawk项目。本书中的许多例子都是直接从这个重要项目的优秀代码中提取出来的,均代表了作者及其资深同行的真知灼见。
本书的特色是讲解深入,力求透彻,不赘述其他书籍中已有的内容。其内容覆盖面广,基本上涉及到了编写应用程序所用到的各个系统调用。通过阅读本书,读者可以全面深入地了解Linux编程过程中涉及的各个方面,为实际设计和编程打下良好基础。
翻译国外著名作家的书籍总是非常具有挑战性。他们的书籍往往比较有深度,在内容讲述上也是各有风格,常常是引经据典,这给我们的翻译工作带来了不小的压力。我们本着对读者认真负责的精神,力求做到技术内涵的准确无误和专业术语的规范统一,力求将翻译的准确性和灵活性有效结合。
本书由杨明军、曹亚菲、夏毅等翻译。全书最后由杨明军统稿。在翻译过程中,我们得到了张静、张煜、肖和平、张杰良、王景新、汪东、张英、张明军、许华、李慧霸、王凤芹等的支持,在此表示感谢。Be Flying工作室负责人肖国尊负责在翻译过程中进行相关的协调工作,并控制全书翻译质量和进度。
敬请各位读者就本书提供反馈意见,我们希望通过读者的意见来了解自己的不足,以求在今后译作中更多地和更切实际地考虑读者的需要。读者可以将意见发送到be-flying@sohu.com。此外,在本书翻译过程中,我们对原书中的一些错误进行了更正,所找出的原书错误及改正情况将在www.china-pub.com上贴出,请各位读者关注。
译 者
2004年10月26日下午
我们知道,由于历史原因以及其他各种复杂因素,造就了今天UNIX的多个衍生版本。这些分支之间存在着各种各样的差异,单从各种UNIX系统复杂的衍生关系就可以看出来。Linux作为UNIX界的后起之秀,就必须面对这个现实。它既要继续支持UNIX中业已存在的接口,又要对某些实现方法做出决策,以提供优良的性能。因此,它必定与已有的UNIX不同。要想在UNIX/Linux下编写出优秀的软件,就必须熟悉这些系统调用的方方面面。既要了解这些接口好的一面,也要知道它们的局限性。只有这样,才能在选取接口时做出正确的决策。当然,这是非常困难的一件事情。涉及的内容太多,而且很难找到这方面的资料,书店里基本上没有全面深入介绍这方面内容的书籍。
不过,这本书解决了上述问题。通过阅读这本书,你能够快速地掌握这些重要技术,以构建严谨的Linux软件。作者Arnold Robbins是一位来自以色列的专业程序员和教授,自1980年以来,他就开始使用C、C++、UNIX和GNU/Linux,具有非常深厚的理论基础和丰富的编程实践。他还是一名优秀的作家,其作品有:《UNIX in a Nutshell》、《Learning the Korn Shell》和《Effective awk Programming》等。Arnold是一位令人尊敬的资深GNU项目志愿者,目前负责维护gawk项目。本书中的许多例子都是直接从这个重要项目的优秀代码中提取出来的,均代表了作者及其资深同行的真知灼见。
本书的特色是讲解深入,力求透彻,不赘述其他书籍中已有的内容。其内容覆盖面广,基本上涉及到了编写应用程序所用到的各个系统调用。通过阅读本书,读者可以全面深入地了解Linux编程过程中涉及的各个方面,为实际设计和编程打下良好基础。
翻译国外著名作家的书籍总是非常具有挑战性。他们的书籍往往比较有深度,在内容讲述上也是各有风格,常常是引经据典,这给我们的翻译工作带来了不小的压力。我们本着对读者认真负责的精神,力求做到技术内涵的准确无误和专业术语的规范统一,力求将翻译的准确性和灵活性有效结合。
本书由杨明军、曹亚菲、夏毅等翻译。全书最后由杨明军统稿。在翻译过程中,我们得到了张静、张煜、肖和平、张杰良、王景新、汪东、张英、张明军、许华、李慧霸、王凤芹等的支持,在此表示感谢。Be Flying工作室负责人肖国尊负责在翻译过程中进行相关的协调工作,并控制全书翻译质量和进度。
敬请各位读者就本书提供反馈意见,我们希望通过读者的意见来了解自己的不足,以求在今后译作中更多地和更切实际地考虑读者的需要。读者可以将意见发送到be-flying@sohu.com。此外,在本书翻译过程中,我们对原书中的一些错误进行了更正,所找出的原书错误及改正情况将在www.china-pub.com上贴出,请各位读者关注。
译 者
2004年10月26日下午
前言回到顶部↑
学习编程的一种最好的方式是阅读优良的实例程序。这本书就是通过展示来自大家日常使用的产品级软件中的代码,来介绍基础的Linux系统调用API,这些系统调用API构成了一切重要程序的核心。
通过查看具体的程序,你既能够学习怎样使用Linux API,又能检验在编写软件时出现的一些实际性问题(性能、可移植性和健壮性)。
本书的书名是《实战Linux编程精髓》,书中涉及到的所有内容,除非进行了特别说明,都能适用于当前的Unix系统。总之,书中用“Linux”来表示Linux内核,用“GNU/Linux”表示整个系统(包括内核、库和工具)。同时,我们经常用“Linux”来指代Linux、GNU/Linux和Unix的全体,如果某一处是特别针对某个或其他的系统,文中会明确地指出。
预期的读者
本书假设读者理解编程,并熟悉基础的C语言,至少达到Kernighan和Ritchie的《The C Programming Language》一书的水平。(希望阅读本书的Java程序员则应该理解C指针,因为C代码中大量地使用了指针。)书中的例子采用了1990版本的标准C和原始C(Original C)。
你特别应该熟悉以下内容:所有的C操作符、控制流结构、变量和指针的声明和使用、字符串处理函数、exit()函数的使用以及[stdio.h]中关于文件输入输出的一组函数等等。
你还应该理解标准输入设备、标准输出设备和标准错误设备这几个基本概念,以及了解所有的C程序都需要接收一个表示调用选项和参数的字符串数组。另外,应该熟悉基本的命令行工具,如cd、cp、date、ln、ls、man(有的系统有可能是info)、rmdir、rm,知道如何使用长命令行选项和短命令行选项、环境变量、输入/输出重定向,包括管道。
我们还假设读者希望编写的程序不仅能运行在GNU/Linux下,而且能够适应其他的Unix系统。所以,我们对每一个接口都标注了它的适用性(例如,只适用于GLIBC系统,或由POSIX标准定义,等等)。同时,可移植性方面的建议则作为完整的部分在正文中给出。
书中所介绍的编程可能比你以前经历过的要更偏底层一些;事实上就是如此。因为系统调用是上层操作的基础构建部分,所以它们自然处于底层。这也是我们选择C语言的原因:因为API本来就是为方便C语言编程而设计的,而那些向更高层的编程语言(比如C++和Java)提供接口的代码也相应地处于底层,所以它们更多地用C语言来编写。然而,请注意:“底层”并不意味着“不好”,而仅仅意味着“更多的挑战”。
你能学到什么
本书着重介绍构成Linux编程核心的基础API:
— 内存管理
— 文件输入/输出
— 文件元数据
— 进程和信号
— 用户和组
— 编程支持(排序、参数解析等)
— 国际化
— 调试
我们力图保持这个主题列表的精简。我们相信用单独的一本书就能介绍“所有需要学习的东西”是不大可能的。大部分的读者更青睐选题精辟、重点突出的书。同时,最好的介绍Unix的书也都是用这种方式来组织和编写的。
通过查看具体的程序,你既能够学习怎样使用Linux API,又能检验在编写软件时出现的一些实际性问题(性能、可移植性和健壮性)。
本书的书名是《实战Linux编程精髓》,书中涉及到的所有内容,除非进行了特别说明,都能适用于当前的Unix系统。总之,书中用“Linux”来表示Linux内核,用“GNU/Linux”表示整个系统(包括内核、库和工具)。同时,我们经常用“Linux”来指代Linux、GNU/Linux和Unix的全体,如果某一处是特别针对某个或其他的系统,文中会明确地指出。
预期的读者
本书假设读者理解编程,并熟悉基础的C语言,至少达到Kernighan和Ritchie的《The C Programming Language》一书的水平。(希望阅读本书的Java程序员则应该理解C指针,因为C代码中大量地使用了指针。)书中的例子采用了1990版本的标准C和原始C(Original C)。
你特别应该熟悉以下内容:所有的C操作符、控制流结构、变量和指针的声明和使用、字符串处理函数、exit()函数的使用以及[stdio.h]中关于文件输入输出的一组函数等等。
你还应该理解标准输入设备、标准输出设备和标准错误设备这几个基本概念,以及了解所有的C程序都需要接收一个表示调用选项和参数的字符串数组。另外,应该熟悉基本的命令行工具,如cd、cp、date、ln、ls、man(有的系统有可能是info)、rmdir、rm,知道如何使用长命令行选项和短命令行选项、环境变量、输入/输出重定向,包括管道。
我们还假设读者希望编写的程序不仅能运行在GNU/Linux下,而且能够适应其他的Unix系统。所以,我们对每一个接口都标注了它的适用性(例如,只适用于GLIBC系统,或由POSIX标准定义,等等)。同时,可移植性方面的建议则作为完整的部分在正文中给出。
书中所介绍的编程可能比你以前经历过的要更偏底层一些;事实上就是如此。因为系统调用是上层操作的基础构建部分,所以它们自然处于底层。这也是我们选择C语言的原因:因为API本来就是为方便C语言编程而设计的,而那些向更高层的编程语言(比如C++和Java)提供接口的代码也相应地处于底层,所以它们更多地用C语言来编写。然而,请注意:“底层”并不意味着“不好”,而仅仅意味着“更多的挑战”。
你能学到什么
本书着重介绍构成Linux编程核心的基础API:
— 内存管理
— 文件输入/输出
— 文件元数据
— 进程和信号
— 用户和组
— 编程支持(排序、参数解析等)
— 国际化
— 调试
我们力图保持这个主题列表的精简。我们相信用单独的一本书就能介绍“所有需要学习的东西”是不大可能的。大部分的读者更青睐选题精辟、重点突出的书。同时,最好的介绍Unix的书也都是用这种方式来组织和编写的。








点击看大图





加载中...


