前言
出于安全、稳定等因素的考虑,开源软件受到了各行各业的青睐,其中以Linux操作系统最为突出。作为当前最为流行的操作系统之一——Linux已发展得较为成熟,其良好的稳定性和优异的性能带给各类用户优越的体验。Linux系统的使用范围越来越广,随之而来的是Linux环境下各类应用软件需求的暴增。学习Linux环境编程对提高IT从业者的竞争力和整个软件行业的发展无疑是相当有意义的。
本书以培养Linux系统程序分析能力为目标,以命令程序设计为驱动。在解决问题的过程中始终以培养分析问题的能力为基础,介绍有效使用Linux在线手册的方法,从而找到解决问题的突破口,进一步找到合适的系统调用接口,设计相关的命令程序,最终解决问题。
C语言是广大程序设计人员都已掌握的一门程序设计语言,同时也是实现Linux系统所使用的程序设计语言。本书使用C语言结合Linux API进行程序设计,全书共分为10章,内容如下所述:
第1章Linux基础知识,介绍Linux操作系统的发展情况以及系统编程的概念,同时还介绍Linux系统中的一些常用工具及命令。
第2章C程序开发工具,介绍Linux环境下编写C语言程序所要用到的一些工具,包括vim、gcc、gdb、makefile等。
第3章文件及目录管理,介绍POSIX标准下文件的各类I/O操作以及与流文件的关系和相互转换。
第4章进程管理,介绍在Linux环境中程序和进程的关系、进程的基本属性、一个进程从生到死的全过程,最后介绍Linux系统中的一些特殊进程。
第5章重定向与管道,以实现重定向命令为引入点,重点介绍使用管道实现进程间通信的方法。
第6章信号,介绍信号的几种处理策略和信号在进程间通信中的使用方式。
第7章进程间通信,介绍使用共享内存、信号量和消息队列来实现进程间通信的方法,同时总结Linux环境下进程间通信的所有机制。
第8章线程,介绍线程的基本概念和基本操作。
第9章线程间的同步机制,介绍线程间的通信机制以及线程同步互斥的问题。〖1〗Linux环境高级程序设计前言[3]〖3〗第10章网络程序设计,介绍套接字机制在不同主机的进程间如何实现通信以及在Linux环境下网络套接字编程的基本方法。
其中第5~7章以及第10章都是有关于进程间通信机制的内容。
为检查各章的学习情况,本书最后配备了相应的实验。
作为Linux环境程序设计的入门教材,本书语言简练、论述由浅入深,并辅以大量的示例程序和丰富的图表,使读者能够更好地理解各种抽象的概念和关系,帮助读者理解全书内容。本书面向各类高等院校的计算机相关专业学生以及对开源环境程序设计有兴趣的编程爱好者,要求读者有一定的C语言编程基础。书中除了讲解程序的设计实现之外,着重讲解解决问题的分析过程,力求使读者掌握问题的分析方法,逐步培养读者具有在Linux环境下独立设计和实现应用级甚至系统级程序的能力。
需要说明的一点是,由于系统调用从C语言语法的角度上来看与函数没有区别,因此在本书中不会引起歧义的地方并没有严格区分系统调用和库函数的表述。如果需要明确某一表述是系统调用还是库函数,可以使用man手册查找。man手册的第2章为系统调用,第3章为库函数。
本书主要由黄茹主编,王小银、张丽丽为副主编。其中黄茹编写了第1、4、5、6、7章;王小银编写了第8、9、10章;张丽丽编写了第2、3章;最后由黄茹负责对全书进行了统稿。此外,在本书的编写过程中,感谢陈莉君、舒新峰、刘霞林、王春梅对本书提出了宝贵的意见。
尽管本书经过了编者反复的修改,但由于编者水平和经验有限,时间仓促,书中难免存在错漏之处,殷切希望广大读者批评指正。
编者
2019年1月
