前言
Linux开创了操作系统历史上的一个奇迹,它不仅免费,而且开放全部的源代码。Linux已经发展成为最为流行的免费操作系统。
在我国,Linux已经广泛应用于政府、军队、金融、电信等敏感部门和关键行业中。可以预见,今后Linux在作为企业服务器,嵌入式应用开发平台等方面将占据越来越重的市场份额。相应地,人才市场对Linux下的开发人员的需求也将越来越大。
C语言作为一种当前使用非常广泛的高级程序设计语言,具有简单易用、跨平台、可移植性好的特点。Linux内核就是使用C语言开发。C语言是Linux上的主要开发语言,它在Linux编程开发中扮演着重要的角色,它们形成了相得益彰的完美组合,为用户提供了一个强大的编程环境。在国内很多Linux爱好者仅停留在系统管理的层次上,而更多程序员要做Linux下的程序开发却无从下手,重要的是况且很难找到合适的学习参考资料。这本书正是从这样的结合点出发,介绍在Linux系统中使用C语言编程的有关知识。读者通过本书的学习能够快速地学会Linux下C语言编程,掌握其中的编程方法和技巧,并能从一开始就养成良好的编程习惯,从而实现Linux环境下的编程知识入门和提高。
本书分4个部分介绍了如何使用C语言在Linux平台下进行软件开发。
第一篇Linux和C编程基础:第1~5章。主要介绍Linux的安装与使用,针对初学者和对C语言不熟悉的读者回顾了C语言的编程基础知识、开发技巧等,同时以知名公司在招聘时使用的笔试、面试题作为例题分析C语言的重点和难点。在这部分里,还结合实例介绍了Linux的开发环境,如Vi和Emacs编辑器、gcc编译器、gdb调试器、make自动编译工具等。
第二篇Linux系统编程:第6~10章。主要介绍了Linux下的系统编程,包括文件和目录操作、进程和线程控制、信号的使用、进程间通信。本部分以大量的程序实例来说明各个系统调用的使用方法。每章的最后部分都有一至两个具有一定规模的综合实例, 如实现自己的ls命令、实现自己的myshell等。
第三篇Linux网络和图形界面编程:第11~12章。主要介绍Linux下的网络编程和图形界面编程。由于Linux和TCP/IP协议的内在结合,使得在Linux下可以开发出功能十分强大的网络应用程序。同样,也可以开发出界面十分精美的图形界面程序。本部分对Linux下网络编程和图形界面编程作了详细地介绍,并通过实例展示它们的具体应用。
第四篇Linux项目实践:第13章项目开发案例。通过开发一个BT下载软件来完整地介绍一个软件的开发过程。详细分析和解释了BT协议,并在此基础上使用C语言在Linux环境下设计和实现了一个BT下载软件。
本书的特点和优势
(1)内容全面而翔实。本书不仅介绍了Linux的安装与基本使用,C语言,Vi、Emacs、gcc、gdb、make等开发工具,而且结合大量程序实例介绍了Linux的系统编程、网络编程和图形界面开发。此外,还介绍了模块化程序设计思想、软件测试以及编写安全的代码方法。本书光盘中的附录部分还介绍了程序员容易忽略但却十分重要的编程规范,以及大规模项目开发中必需的autoconf和automake工具的使用。
(2)理论和实际相结合,强调实践性和实用性。对于一些关键概念,如进程、线程、文件结构等知识,都以实践性很强的应用实例加以讲解,重要章节的最后都配有习题以供读者上机实践,加深理解和应用。此外,还精选了一些C语言的面试题,进行深入地讲解和分析,以期能使读者更深入地理解和掌握C语言的精华。
(3)强调后续能力的发展。在重点章节里增加了"进一步学习建议"一节,对读者在某一方面的深入学习提供建议并附以相应的参考资料。
本书知识结构和实现目标
阅读建议
对于没有或只有少量Linux操作系统使用经验和C语言编程基础的读者,建议按章节顺序完整阅读,并且在每章阅读过程中多上机操作、多动手编写代码。
对于已经懂得安装和使用Linux操作系统的读者,可以简单浏览第1章或直接跳过。
对于已经掌握C语言的读者,可以略过第2~5章中介绍C语言的内容,但建议还是要阅读指针和面试题选部分。
对于已经具备一定Linux下编程经验的读者,可以根据需要有选择地阅读。对于此类读者,建议阅读面试题选,开发工具的详细使用方法,出错处理,如何编写安全的代码,编程规范等内容。
读者对象
本书适合有一定的C语言基础,需要在Linux系统上编程的程序设计人员阅读,也可作为大中专院校师生的教材或参考书,还可供广大计算机爱好者学习使用。
随书的光盘包括:全部源代码及相关学习资料。
本书由童永清编著,参与代码调试和资料整理的有邵林、吴红娟、师轲、胡旭松、沈孝峰、郭轶、陈良华、代星科、李桂林、刘晓鹏、汪剑,在此一并表示感谢。由于水平有限加之时间仓促,书中难免存在错误之处,恳请读者批评指正。作者联系邮箱为:ht2049@163.com,或与本书编辑联系:zhangtao@ptpress.com.cn。
编者
2008年1月