本书着重讲解如何在Linux系统中使用C语言进行编程。全书共13章,分四个部分。第一部分简要介绍了Linux系统和C语言;第二部分讲述了Linux系统的C编程环境,详细讲述了Linux下C语言编译器(如GCC)、调试工具(如GDB)和程序自动维护工具的使用方法。第三部分详细介绍Linux的系统调用。最后,是一个实现shell简单功能的命令解释器的实例。
本书适合有一定C语言基础,有意在Linux系统上一试身手的程序设计人员阅读。
第二版前言
前言
第一章 C语言与Linux系统
1. 1 Linux系统简介
1. 2 C语言概述
1. 3 Linux系统中的C语言
第二章 OCC编译器
2. 1 GCC的安装
2. 2 GCC的使用
2. 3 其他编译调试工具
第三章 C语言的调试工具
3. 1 gdb符号调试器
3. 2 gdb命令详解及简单应用举例
3. 3 其他调试工具
第四章 使用make
4. 1 make的简单使用
4. 2 控制make的属性
4. 3 使用宏(macro)
4. 4 内部规则
4. 5 使用库
第五章 文件系统的操作
5. 1 文件系统简介
5. 2 顺序文件操作
5. 3 随机文件操作
5. 4 文件共享
5. 5 索引节点
5. 6 文件层次结构
5. 7 改变文件属性
5. 8 文件链接
5. 9 设备文件
第六章 标准输入输出
6. 1 简介
6. 2 标准输入输出的基本操作
6. 3 非格式化输入输出操作
6. 4 格式化输入输出操作
6. 5 临时文件的有关操作
第七章 进程的控制
7. 1 进程概述
7. 2 进程的基本操作
7. 3 进程之间的关系
第八童 信号及其处理
8. 1 简介
8. 2 信号与信号处理函数
8. 3 信号集及其处理
8. 4 作业控制信号
第九章 进程间的通信
9. 1 简介
9. 2 管道
9. 3 命名管道
9. 4 System V的进程间通信机制
第十章 守护进程的编制
10. 1 守护进程简介
10. 2 守护进程的编码
10. 3 守护进程的输出
第十一章 网络编程
11. 1 预备知识
11. 2 流式套接字的基本操作
11. 3 客户用/务器机制
11. 4 数据报套接字的操作
11. 5 高级技巧:selecK()和poll()
第十二章 设备编程
12. 1 对声音设备编程
12. 2 对鼠标端口编程
12. 3 对调制解调器编程
12. 4 对打印机端口编程
12. 5 对控制台终端编程
第13章 一个实例--自己的Shell
13. 1 头文件head.h
13. 2 主过程main.c
13. 3 初始化模块init.c
13. 4 语法分析get_simcom.c
13. 5 得到下一标识符get_word.c
13. 6 得到当前命令行get_comln.c
13. 7 执行简单命令Run_com.c
13. 8 执行输入的命令Execute.c
13. 9 分析简单命令Get_imarg.c
13. 10 字符串匹配Check.c
附录 linux系统调用一览表
第二版前言
《Linux上的C编程》一书出版之后,在比较短的时间内就印了两次。其间,我们收到了不少读者的热情来信,也看到了一些相关网站对本书的介绍和评论,这些信息都肯定了本书的价值,也对书中存在的一些问题提出了善意的批评。在此,对广大读者的支持表示衷心的感谢。
根据读者的意见和建议,也为了适应Linux本身的发展,我们在2000年底对本书又进行了一次修订,主要是对原书中的程序进行了一次全面的检查,保证这些程序能够在最新的Linux系统下正确运行(主要是在流行的RedHat Linux环境下进行的,对在不同环境可能引起的不同结果一般也进行了说明)。另外,对原书中存在的一些错误和不准确的地方也进行了修正。不过,由于我们水平有限,因此本书不可避免地还会存在一些问题,希望读者能不吝指教。
前言
Linux是一个奇迹。它由一个学生的业余爱好发展而来,现在已经成为最为流行的免费操作系统。它的独特之处在于它的建立不受任何商品化软件的版权的制约,全世界都能免费。自由使用。世界各地有几十万自愿者为这个充满魅力的系统贡献着自己的才能,从初学者到计算机专业人士。还有经验丰富的黑客们,一起不断改进和维护着这个系统。Linux是具有专业水平的操作系统,它的爱好者和用户遍及世界,许多大学与研究机构、公司、家用PC,都在使用Linux。Linux年轻而富有朝气,它从诞生到现在不过8年时间,已经在市场上确立自己的地位和广泛的影响。
C语言是国际上广泛使用的的计算机高级语言。C语言最初用于描述和实现UNIX区系统,后来逐渐被广大程序员所接受,成为最受欢迎的编程语言。在其后的发展过程中,C语言不断吸收计算机方面新的成果,引入了面向对象的概念,近年来又出现了可视化编程语言工具Visual C/C++,使这个古老的语言又散发出新的魅力。
Linux作为一个操作系统,一个重要的功能就是要支持用户编程,C语言作为当前使用最广泛的编程语言,又具有多平台、移植性好的特点,因此,它们很快形成了完美的结合,为用户提供了一个强大的编程环境。本书正是从这样的结合点出发,介绍Linux系统中使用C语言编程的有关知识。
本书主要针对已有一定C语言编程基础,但未在Linux系统中使用过C的读者,着重讲解Linux系统中使用C语言编程特殊的地方,其它环境中C编程共有的知识,例如基本语法、算法等,本书不作重点,只在第一章的概述中简要地作一提示。
全书从逻辑上可以分为四部分:
第一部分即第一章,简要介绍了Linux系统和C语言,其中扼要地回顾了C语言的语法,为后面的阅读提供一定的基础。
第二至四章是第二部分,带领读者熟悉Linux系统的C编程环境,详细讲述了Linux下C语言编译器(如gcc)、调试工具(如gdb)和程序自动维护工具make的使用方法。
第三部分包括第五至十二章,详细介绍Linux的系统调用。Linux为用户程序提供了丰富的系统调用,而且这些就是Linux系统作为编程环境特有的东西,因此本书的主要篇幅都用来讲解这些系统调用和它们的使用方法。首先按使用领域分别介绍了基本的系统调用,依次是文件系统、标准输入输出、进程、信号。后几章提高了一定层次,由浅入深的讲解IPC(进程间通信)、Daemon进程、网络Socket编程、设备编程等内容。由于是编程介绍,本书中会附带较多的实例和源代码,既方便说明和理解,也可以使读者通过问读实例获得一定的感性认识。
最后,我们举一个综合性的例子作为全书的结束--一个实现shell简单功能的命令解释器。在这个例子中,会涉及到第5章至第12章问各章的内容,帮助读者复习总结学过的系统调用。
附录中将系统调用按字母顺序列出,并注明了所涉及的章节,以便于读者的查阅。
希望读者学完本书之后,都能有所收获,成为Linux系统的编程高手。
限于时间和水平,书中必然存在着不少缺点,请广大读者指正。