图书前言

前言

  

  Linux系统基于开源软件的思想产生,它促进了开源软件技术的发展,这种先进的软件设计思想引领全球软件业的变革,为软件技术的发展带来了强劲的动力。随着Linux系统的发展和广泛应用,如今它已经支持绝大多数嵌入式应用,并在服务器市场上占据很大的份额,其桌面系统的普及率逐年上升。越来越多的开发者希望了解Linux系统开发,特别是基于Linux系统的C程序设计。

  笔者长期从事技术研究,曾经在CSDN等社区发表了多篇相关技术文章。但笔者觉得不成体系的文章对读者的帮助不大,于是萌生写作本书的想法,希望能将自己的经验分享给更多的读者。

  本书是获得大量读者好评的“Linux典藏大系”中的《Linux环境C程序设计》(第3版)。本书全面介绍Linux环境下的程序开发,内容由浅入深,适合不同层次的读者阅读。在本书中,笔者不但会介绍Linux环境C程序设计的各个知识要点,而且还会介绍Linux所依存的开源软件思想,并将其与当前流行的软件工程思想相结合,贯穿于典型项目案例的开发过程中,让读者不但能掌握开发技术,而且还能获得与国际一流软件工程师一样的开发水平。

关于“Linux典藏大系”

  “Linux典藏大系”是专门为Linux技术爱好者推出的系列图书,涵盖Linux技术的方方面面,可以满足不同层次和各个领域的读者学习Linux的需求。该系列图书自2010年1月陆续出版,上市后深受广大读者的好评。2014年1月,创作者对该系列图书进行了全面改版并增加了新品种。新版图书一上市就大受欢迎,各分册长期位居Linux图书销售排行榜前列。截至2023年6月底,该系列图书累计印数超过30万册。可以说,“Linux典藏大系”是Linux图书市场上的明星品牌,该系列中的一些图书多次被评为清华大学出版社“年度畅销书”,还曾获得“51CTO读书频道”颁发的“最受读者喜爱的原创IT技术图书奖”,另有部分图书的中文繁体版在中国台湾出版发行。该系列图书的出版得到了国内Linux知名技术社区ChinaUnix(简称CU)的大力支持和帮助,读者与CU社区中的Linux技术爱好者进行了广泛的交流,取得了良好的学习效果。另外,该系列图书还被国内上百所高校和培训机构选为教材,得到了广大师生的一致好评。

关于第3版

  随着技术的发展,本书第2版与当前Linux的几个流行版本有所脱节,这给读者的学习带来了不便。应广大读者的要求,笔者结合Linux技术的新近发展对第2版图书进行全面的升级改版,推出第3版。相比第2版图书,第3版在内容上的变化主要体现在以下几个方面:

* Linux系统由Fedora更换为Ubuntu 22.04;

* Eclipse更新为2022-02版;

* 版本控制工具由CVS更新为普遍流行的Git;

* 修订了第2版中的一些疏漏,并对一些不准确的内容重新表述;

* 新增思维导图(提供电子版高清大图)和课后习题,以方便读者学习。

本书特色

1.配多媒体教学视频,学习效果好

  本书重点内容提供大量的配套多媒体教学视频,可以帮助读者更加轻松、直观、高效地学习,取得更好的学习效果。

2.内容全面、系统、深入

  本书详细介绍Linux系统安装、Linux环境C开发基础知识、界面开发、数据库开发、网络编程、系统功能编程和多媒体开发等内容,并通过开发媒体播放器的各个模块,让读者深入理解一个完整项目的开发流程。

3.讲解由浅入深,循序渐进,适合各个层次的读者阅读

  本书从Linux环境C程序设计基础知识开始讲解,逐步深入高级开发技术与应用,章节安排从易到难,讲解由浅入深,循序渐进,适合各个层次的读者阅读,并均有所获。

4.技术全面,剖析思想根源

  抛开开源思想研究Linux开发是徒劳的,开发者只能掌握表面的开发技术,而不能获得提高软件开发效率与项目成功率的科学方法。笔者结合开源库和项目案例,将Linux系统开发、C/C++开发和软件工程思想融会贯通,深入剖析Linux环境C程序设计。

5.深入剖析典型案例

  本书选择一些有一定难度的软件项目案例进行讲解,这些案例涵盖当前流行的开发技术,可以帮助读者实践先进的软件设计思想,并掌握实用的一线开发技术,从而提升职场竞争力。

6.提供习题、源代码、思维导图和教学PPT

  本书特意在每章后提供多道习题,帮助读者巩固和自测该章的重要知识点,并提供源代码、思维导图和教学PPT等配套资源,以方便读者学习和教师教学。

本书内容

第1篇  Linux基础知识

  本篇涵盖第1~4章,主要介绍Linux的历史、内核与版本,以及Linux系统安装、Linux基本操作、GCC/G++编译器、GDB调试器与Linux C开发环境搭建等。通过学习本篇内容,读者可以系统掌握Linux的基础知识,以及搭建Linux开发环境的能力。

第2篇  C/C++语言基础知识

  本篇涵盖第5~12章,主要介绍C语言编程基础、数据类型、运算符、表达式、程序控制结构、数组、指针、函数、字符、字符串、结构体、共用体,以及C++语言面向对象程序设计思想和一些新特性等。通过学习本篇内容,读者可以掌握C语言的基础知识,并对C++语言的面向对象特性有所理解。

第3篇  Linux系统编程

  本篇涵盖第13~17章,主要介绍文件操作、文件I/O操作、进程控制、进程间的通信和线程控制等。通过学习本篇内容,读者可以掌握Linux环境C程序设计中有关系统功能编程的核心技术与应用。

第4篇  Linux网络编程与数据库开发

  本篇涵盖第18~21章,主要介绍网络编程基础、网络编程函数库、数据库开发、Linux系统常用数据库与接口。通过学习本篇内容,读者可以掌握Linux环境C程序设计中的数据库和网络编程技术与应用。

第5篇  Linux界面开发

  本篇涵盖第22~26章,主要介绍界面开发基础知识、界面构件开发、界面布局、信号与事件处理、Glacle程序界面设计。通过学习本篇内容,读者可以独立完成一些简单的界面设计,并掌握如何与C语言进行连接。

第6篇  Linux环境C编程项目实战

  本篇涵盖第27章,主要介绍一个媒体播放器的开发过程,以便读者对Linux环境下的项目开发有一个全面的认识,从而提高实际项目开发水平。通过学习本篇内容,读者可以具备基本的Linux环境下软件项目开发的能力。

读者对象

* Linux环境C程序设计初学者;

* 全面学习Linux环境C编程的人员;

* Linux环境C程序设计从业人员;

* Linux环境C程序设计爱好者;

* 需要一本案头必备手册的程序员;

* 高等院校的学生与培训机构的学员。

配书资源获取方式

  本书涉及的配套资源如下:

* 配套教学视频;

* 程序源代码文件;

* 高清思维导图;

* 习题参考答案;

* 配套教学PPT;

* 书中涉及的开发工具。

  上述配套资源有以下3种获取方式:

* 关注微信公众号“方大卓越”,然后回复数字“4”,即可自动获取下载链接;

* 在清华大学出版社网站(www.tup.com.cn)上搜索到本书,然后在本书页面上找到“资源下载”栏目,单击“网络资源”按钮进行下载;

* 在本书技术论坛(www.wanjuanchina.net)上的Linux模块进行下载。

技术支持

  虽然笔者对书中所述内容都尽量予以核实,并多次进行文字校对,但因时间所限,可能还存在疏漏和不足之处,恳请读者批评与指正。

  读者在阅读本书时若有疑问,可以通过以下方式获得帮助:

* 加入本书QQ交流群(群号:302742131)进行提问;

* 在本书技术论坛(网址见上文)上留言,会有专人负责答疑;

* 发送电子邮件到book@ wanjuanchina.net 或bookservice2008@163.com获得帮助。

  

  编者

  2024年2月

  

  

  

Linux环境C程序设计(第3版)

  

前言

  

·IV·

  

  

·III·