LinuxC编程实战.童永清(带详细书签)
本书系统地介绍了在Linux平台下用C语言进行程序开发的过程,集趣味性、实战性于一体的160多段代码实例,帮助读者快速掌握在Linux平台下进行C语言程序开发的方法和技巧,并通过一个原创的BT软件下载综合案例的讲解,引导读者具备开发大型应用程序的能力。 本书内容翔实,主要包括:Linux系统下C语言及其编程环境的介绍,系统编程的所有主题——文件和目录、进程、线程、信号、进程间通信、网络编程和图形界面编程、出错处理、库的创建与使用、编写安全的代码等。本书结构合理、概念清晰,依照“基础知识→难点解析→重点提示→编程实践”的讲解方式,使读者理解更深入、应用更容易、掌握更快速。随书的光盘包括:全Linux c编程实战autoconf和 automake工具的使用(2)理论和实际相结合,强调实践性和实用性。对于一些关键概念,如进程、线程、文件结构等知识,都以实践性很强的应用实例加以讲解,重要章节的最后都配有习题以供读者上机实践,加深理解和应用。此外,运精选了一些C语言的面试题,进行深入地讲解和分析,以期能使读者更深入地理解和掌握C语言的精华(3)强调后续能力的发展。在重点章节里增加了“进一步学习建议”一节,对读者在某一方面的深入学习提供建议并除以相应的参考资料。本书知识结构和实现目标Linux和C语言Linux下编程工具涵盖系统编程的所有原创BT下载软件综合基础主题及丰富实例案例及著名公司C语言面试题分析掌拥Li以开发环抹握m,,e,「掌握文件和目最、进程线]「综合案例引导读者具备的安装、配置,C语gb、mke. autoconf程、信号、进程间通信、网开发大型应用程序的言的基本知识及开发ame等工具的使络编程和氢形界面编程、出能力。拉巧和规范用,快速进行实战开发错处理、库的创建与使用通过对C语言的面试题编写安全代码等实战技术。进行深入地讲解和分学习优秀软件开发人员必析,帮助读者更深入理备的编程规范解和掌握C语言的精华阅读建议对于没有或只有少量Liux操作系统使用经验和C语言编程基础的读者,建议按章节顺序完整阅读,并且在毎章阅读过程中多上机操作、多动手编写代码。>对于已经懂得安装和使用Liwx操作系统的读者,可以简单浏览第1章或直接跳过。>对于已经掌握C语言的读者,可以略过第2~5章中介绍C语言的内容,但建议还是要阅读指针和面试题选部分>对于已经具备一定LimuⅨ下编程经验的读者,可以根据需要有选择地阅读。对于此类读者,建议阅读面试题选,开发工具的详细使用方法,出错处理,如何编写安全的代码,编程规范等内容。读者对象本书适合有一定的C语言基础,需要在 Linux系统上编程的程序设计人员阅读,也可作为大中专院校师生的教材或参考书,还可供广大计算机爱好者学习使用随书的光盘包括:全部源代码及相关学习资料。本书由童永清编著,参与代码调试和资料整理的有邵林、吴红娟、师轲、胡旭松、沈孝峰、郭轶、陈良华、代星科、李桂林、刘晓鹏、汪剑,在此一并表示感谢。由于水平有限加之时间仓促,书中难免存在错误之处,恳请读者批评指正。作者联系邮箱为:ht2049@163com,或与本书编辑联系:zhangtao@ptpress.com.cn。编者甲目fre的Qm2008年1月目录目录第一篇 Linux和C编程基础第1章 Linux系统概述……11 Linux操作系统介绍…………世世世世出世世晋意“世看1.1.1 Linux的发展历程1.1.2 Linux的特性…………………………………………………………………21.13 Linux的内核版本和发行版本12C语言简介………………………………4121C语言的发展历史…122C语言的特点………………………………………………………1513 Linux的安装、启动与关闭…………………………………………514 Linux的基本使用1.4.1Linuⅸx终端审看率南看丰日南国国非和主1主日自由面目由自指由由主142 Linux shell……15143 Linux的常用命令…1.5 Linux下程序的开发环境和开发过程………1.6习题………………………………………………………12第2章C编程基础、Ⅵ和 Emacs编辑器……1321C程序的结构……………………………-1132,2C语言的基本数据类型……………………………………………………1422.1整型…………………………………14222浮点型……………………16223字符型……………………………2.3运算符和表达式………………………………………………19231算术运算符与算术表达式………………………20232赋值运算符与赋值表达式………22233逗号运算符与逗号表达式……………………………………………222.4标准输入输出函数………………………………………………………23241字符输出函数 putchar………………………………………23242字符输入函数 getchar………24243格式化输出函数 printf…………………4244格式化输入函数 scanf……26经自TCxo comLinuxC编程实战2.5ⅵ编辑器的使用……27251Ⅵ的工作模式…112722启动Vi………………28253保存文件和退出ⅵ…29254光标的移动………………2925.5文本的删除…302.56文本查找和替换………………30257文本的复制与贴……………………3026 Emacs编辑器的使用….3127命名规范………3327.1标识符……33272关键字……3273命名规范……………3328面试题选与实例精讲………34281面试题选………3428.2实例精讲………………352.9习题…………………………37第3章C程序控制结构和gce编译器¨3831C程序的控制结构………3831C程序语句概述面“““国出“““…手寻“38312C程序的3种基本控制结构……3932分支控制结构-………40321关系运算符与关系表达式322逻辑运算符与罗辑表达式…3.23if语句………………………………………………………42324 switch语句443.3循环控制结构……………………463.31 while语句………4633,2 do, while语句s47333for语句…………48334 break语句和 continue语句………………5034gcc编译器5134.1程序的编译过程……51342gcc的常用选项平果书……………“…,52343gcc的报错类型及对策……543.5面试题选与实例精讲…“…手……53.5.1面试题选…53.5,2实例精讲…563.6习题……………………………58函自目录第4章C函数、数组、指针和调试器gdb4.1函数………………………………………………………………59411函数的定义………………………………………59412函数的调用…………………………………6141.3变量的访问控制和存储类别…………………………………4.2数组世虚64.2.1一维数组的定义和使用…………………………674.2.2二维数组的定义和使用……………………………6742.3字符数组和字符串……………694.3指针…7043.1地址和指针………“……“…“………7∩432指针的定义和使用…………………………714.3.3指针和数组量+普量出日量量B量日i面国目国面盲面国434指针和函数…………………………754.3.5指向字符串的指针…………………7944字符串函数………824.4.1puts和gets…82442 strcpy和 strncpy……………18244.3 strcat和 strncat……83444 strcmp和 strncmp………………………834.4.5 strlen…184446 strlwr:和 struer…………18447 strstr和 strchr……………………………………………8445调试器gdb……………………………………………85451启动和退出gdb35452显示和查找程序源代码……4.53执行程序和获得帮助………………………………………87454设置和管理断点………………………………874.5.5查看和设置变量的值………45.6控制程序的执行……………934.6面试题选……………………………………954.7习题………………………………………………………106第5章C语言预处理、结构体和make的使用…………10751C语言预处理命令……1075.1.1宏定义…………………………………107512文件包含…………………10951.3条件编译1105.2结构体和共用体…521声明和引用结构体…aNodo Coml11LinuxC编程实战522结构体和数组……………………………………………113523结构体和指针……114524共用体…………………………………………116525使用 typedef……………………11753位运算…………………………………………………………117531位运算符和位运算………117532位减……………………………………1195.4make的使用和 Makefile的编写……………………………………120541make的一般使用………121542 Makefile文件的构成……………………………123543便用变量………………………………………………127544隐含規则……………1545使用条件语句………132546使用库…13354.7make命令参数详解…………1345.5面试题选……………………13556进一步学习建议1405.7习题第二篇 Linux系统编程第6章文件操作………………………1426.1系统编程概述…………………………………………14262 Linux的文件结构…………………………………14262.1Linuⅸx的文件系统模型………………………143622文件的分类………………………14462,3文件的访问权限控制…14563文件的输入输出……………14763.1文件的创建、打开与关闭……………………147632文件的读写……………149633文件读写指针的移动……150634dup、dup2、fent、ioct系统调用…………l526.4文件属性操作………16064.1获取文件属性………16064,2设置文件属性………………1626.5文件的移动和删除…164651文件的移动………………………………164652文件的删除…66目录操作…………………166661目录的创建和删除…智r…………166目录6.6,2获取当前目录…167663设置工作目录……………………1676.64获取目录信息………………………………………………1686.7编程实践:实现自己的ls命令………着请着17068习题176第7章进程控制……………771进程概述…………………………………………1777.1.1 Linux进程7.1.2进程控制……………179713进程的内存映像………………………………1797.2进程操作…………………………………………1807.21创建进程…180722创建守护进程:国………………185723进程退出…………………………………187724执行新程序…………………………1887.25等待进程结束面出和x1917.3进程的其他操作………………1947.3.1获得进程T………………………1947.3.2 setuid和 setgid审国44……194733改变进程的优先级…………1967.4编程实践:实现自己的 myshell………1977.5习题………………………………………203第8章线程控制…………………………………20481线程和进程关系……………20482创建线程…05821线程创建函数 pthread create………2058.22线程属性………20783线程终止……………………………………………………20884私有数据……………………………2108.5线程同步…2128.51互斥锁…………………………212852条件变量…………213853异步信号2168.6出错处理………216861错误检查…………………………………………………2168.6,2错误码……217863错误的提示信息……21887习题………"……219fiNGon com5Linux C编程实战第9章信号及信号处理…………2091 Linux信号介绍世由世出世世····中······…………………2209.1.1信号的来源…209.2信号的种类………………………………220913进程对信号的响应2239.2信号处理223921信号的捕捉和处理………………………………………………223922信号处理函数的返回………………227923信号的发送………………2319.24信号的屏蔽……………2369.3编程中如何获得帮助…………………24094编程实践:应用实例…………………………24094.1实例一:信号的发送与处理…240942实例二:信号应用于事件通知………………………………24295习题………244第10章进程间通信E1nE百:TT,于曹?想中中中中中和中…24510.1进程间通信概述……………………24510.2管道……………………………………………………………24610.21管道的概念………………24610.22管道的创建与读写………24610.23管道的应用实例………………………………………………25010.3有名管道……………………………………25110.3.1有名管道的概念…………………………25110.32有名管道的创建与读写………………………25210.33有名管道的应用实例…………………………………25310.4消息对列……256104.1消息对列的基本概念………………25610.4,2涧息队列的创建与读写…………………27104.3获取和设置消息队列的属性……………………………………2601044消息队列的应用实例…………………26210.5信号量…………………………………………………26510.5.1信号量的基本概念…………………"……………26510.52信号量的创建与使用………………………2651053信号量的应月实例…26810.6共享内存………………………………2701061共享内存的数据结构………27010.6.2共享内存的创建与操作…………………2701063共享内存的应用实例……2710.7库的创建和使用……+里要275目录10.71Linx库的概念…………………27510.72静态库的创建和使用…7610.73动态库的创建和使用…………………………………………27710.8进一步学习建议…………………………………………279109习题………………………………………………279第三篇 Linux网络和图形界面编程第11章网络编程28211网络编程基本原理…………282111.1网络模型与协议………1282111.2地址……2841.3端口………………………………851114mP协议…………………………2851115用户数据报协议UDP………286111.6传输控制协议TCP…28611.1.7客户机/服务器模型……………28711.2套接字编程287112.1套接字地址结构……288112.2创建套接字………28811.2.3建立连接………28911.24绑定套接字…………………………………………290112.5在套接字上监听“““““““…·……界果29011.26接受连接……"29111.2.7TCP套接字约数据传输……………………29111.2.8UDP套接字的数据传输“a“…………2921129关闭套接字29411.2.10主要系统调用函数……………………………29413一个面向连接的 Client/Server实例………301114编写安全的代码…………3081141网络攻击………………………………3081142缓冲区溢出……399114.3输入检查……………………………………………31011.5编程实践:编程实现端口扫描器实例…31111.6进一步学习建议……………………………31411.7习题314第12章GTK+图形界面编程………31512.1 Linux下的图形界面编程…………15121.1Qt和GTK+““““…………………31512.1.2GTK+简介………315
用户评论
资源不错,谢谢分享,赞一个