Linux高级程序设计

出版社:杨宗德、吕光宏、 刘雍 人民邮电出版社 (2012-11出版)
出版日期:2012-11
ISBN:9787115292902
页数:486页

书籍目录

目 录 第1章 Linux下C语言开发环境 11.1 Linux操作系统简介 21.1.1 Linux操作系统简介 21.1.2 GNU/Linux简介 31.1.3 相关术语介绍 31.2 Linux开发初步 51.2.1 Linux下C程序标准 51.2.2 库函数和系统调用 71.2.3 在线文档介绍 81.2.4 获取错误信息 91.3 部分常用工具简介 101.3.1 tar打包器 101.3.2 Linux常用命令及工具 111.4 Linux下编码风格 151.4.1 GNU编码规范 161.4.2 Linux内核编码规范 17第2章 Linux下C语言开发工具 192.1 常用编辑工具 202.1.1 VIM编辑器 202.1.2 Emacs编辑器 222.1.3 Source Insight工具 232.2 GCC/GDB编译调试工具基础 272.2.1 GCC/G++简单介绍 282.2.2 GDB调试工具简介 302.2.3 使用GCC编译C程序示例 312.2.4 使用g++编译C++程序示例 322.2.5 GDB演示示例 33第3章 Linux进程存储管理 353.1 Linux程序存储结构与进程结构 363.1.1 Linux可执行文件结构 363.1.2 Linux进程结构 373.1.3 C变量及函数存储类型 393.1.4 栈和堆的区别 443.1.5 示例:查看代码中各数据存储位置 453.1.6 常见内存错误示例分析 483.2 ANSI C动态内存管理 503.2.1 内存分配的基本方式 503.2.2 示例:为程序申请动态内存空间 503.2.3 内存数据管理函数 543.3 Valgrind及valkyrie内存管理工具 563.3.1 Valgrind介绍 573.3.2  Valgrind安装与使用 593.3.3 valgrind图形化工具Valkyrie 613.3.4 内存检测示例 623.4 Linux进程环境及系统限制 643.4.1 进程与命令行选项及参数 643.4.2 进程与环境变量 693.4.3 Linux系统限制 703.4.4 Linux时间管理 72第4章 ANSI C文件IO管理 754.1 文件及文件流 774.1.1 文件与流的基本概念 774.1.2 标准流及流主要功能 784.1.3 文件流指针 794.1.4 缓冲区类型 814.1.5 指定流缓冲区 824.2 ANSI C文件I/O操作 854.2.1 打开关闭文件 854.2.2 读/写文件流 864.2.3 文件流定位 914.2.4 实现文件复制操作示例 924.3 流的格式化输入/输出操作 944.3.1 printf/scanf函数分析 944.3.2 fprintf/fscanf函数分析 954.3.3 sprintf函数分析 964.3.4 sscanf函数分析 97第5章 POSIX文件及目录管理 995.1 文件描述符与内核文件表项 1005.1.1 文件流与文件描述符的区别 1005.1.2 文件表结构图 1015.1.3 文件描述符与文件流的转换操作 1015.2 POSIX标准下文件IO管理 1035.2.1 创建/打开/关闭文件 1045.2.2 文件控制fcntl 1075.2.3 读/写文件内容 1105.2.4 使用POSIX IO实现大于2G文件复制 1115.2.5 文件定位 1125.2.6 同步内核缓冲区 1135.2.7 映射文件到内存 1145.2.8 锁定/解锁文件 1165.3 目录流基本操作 1185.3.1 打开/关闭目录文件 1185.3.2 读/写目录内容 1195.3.3 定位目录位置 1215.3.4 添加和删除目录 1215.3.5 当前工作路径操作 1225.3.6 文件流、目录流、文件描述符总结 1235.4 应用案例:递归文件目录复制操作 1235.4.1 应用需求及流程图 1235.4.2 示例代码 125第6章 普通文件、连接文件及目录文件属性管理 1286.1 Linux文件系统管理 1296.1.1 Linux下VFS虚拟文件系统 1296.1.2 ext2文件系统结构 1306.1.3 目录文件及常规文件存储方法 1326.2 Linux系统下文件类型及属性 1326.2.1 Linux文件类型及权限 1326.2.2 Linux文件类型 1336.2.3 文件权限修饰位 1366.2.4 文件访问权限位 1376.3 Linux文件属性管理 1386.3.1 读取文件属性 1386.3.2 修改文件权限操作 1416.3.3 修改系统umask值 1426.3.4 修改文件的拥有者及组 1436.3.5 用户名/组名与UID/GID的转换 1446.3.6 创建/删除硬连接 1456.3.7 符号连接文件特殊操作 1466.3.8 文件时间属性修改与时间处理 1476.4 示例:ls ?l以排序方式列出目录信息 1496.4.1 需求及知识点涵盖 1496.4.2 流程及源代码实现 1496.5 示例:实现tree系统命令 152第7章 终端及串口编程 1567.1 终端设备类型 1577.1.1 实际的物理串口 1577.1.2 控制台终端 1587.1.3 虚拟终端 1597.1.4 当前终端 1597.2 终端属性控制 1607.2.1 读取/设置终端属性信息 1607.2.2 c_cflag终端控制选项 1617.2.3 c_lflag终端本地选项 1637.2.4 c_iflag终端输入选项 1657.2.5 c_oflag终端输出选项 1667.2.6 c_cc[NCCS]终端控制字符 1667.2.7 IOCTLs控制终端 1677.2.8 进程与终端 1687.3 串口编程 1697.3.1 串口物理设备 1697.3.2 串口终端基本操作 1707.3.3 串口编程示例 1717.4 控制台终端应用基础 1757.4.1 终端属性设置 1757.4.2 控制命令基本格式 1767.4.3 从控制台终端获取信息不回显 178第8章 Linux进程管理与程序开发 1808.1 进程环境及进程属性 1818.1.1 程序、进程与进程资源 1818.1.2 进程状态 1828.1.3 进程基本属性 1838.1.4 进程用户属性 1878.2 进程管理及控制 1908.2.1 创建进程 1908.2.2 在进程中运行新代码 1978.2.3 回收进程用户空间资源 2018.2.4 回收内核空间资源 2038.2.5 孤儿进程与僵死进程 2058.2.6 修改进程用户相关信息 2068.3 Linux特殊进程 2108.3.1 守候进程及其创建过程 2108.3.2 日志信息及其管理 2118.3.3 守候进程应用示例 214第9章 进程间通信——管道 2169.1 进程间通信——PIPE 2189.1.1 无名管道概念 2189.1.2 无名管道文件操作的特殊性 2189.1.3 文件描述符重定向 2219.1.4 实现who|sort 2259.1.5 流重定向 2269.2 进程间通信——FIFO 2289.2.1 有名管道概念 2289.2.2 有名管道管理及其特殊性 2289.2.3 管道基本特点总结 232第10章 Linux异步信号处理机制 23310.1 Linux常见信号与处理 23410.1.1 信号与中断 23410.1.2 信号基本概念 23610.1.3 信号的生命周期 23610.1.4 发送信号 23710.2 安装信号与捕获信号 24210.2.1 信号处理办法 24210.2.2 signal安装信号 24310.2.3 sigaction安装信号 24410.2.4 signal的系统漏洞 24810.3 安装信号与捕获信号 25010.3.1 设置进程屏蔽信号集 25010.3.2 获取当前未决的信号 25110.3.3 信号集合操作 25110.3.4 信号集合操作应用示例 25210.4 等待信号 25610.4.1 pause函数 25610.4.2 sigsuspend函数 25610.5 信号应用实例 258第11章 System V进程间通信 26111.1 System V IPC基础 26311.1.1 key值和ID值 26311.1.2 拥有者及权限 26511.2 消息队列 26511.2.1 消息队列IPC原理 26511.2.2 Linux消息队列管理 26711.2.3 消息队列应用实例 26911.3 信号量通信机制 27311.3.1 信号量IPC原理 27311.3.2 Linux信号量管理操作 27411.3.3 SEM_UNDO参数的应用 27911.3.4 使用信号量实现生产消费问题 28211.4 共享内存 28511.4.1 共享内存IPC原理 28511.4.2 Linux共享内存管理 28611.4.3 共享内存的权限管理示例 28711.4.4 共享内存处理应用示例 288第12章 Linux多线程编程 29312.1 线程基本概念与线程操作 29412.1.1 线程与进程的对比 29412.1.2 创建线程 29512.1.3 线程退出与等待 29712.1.4 取消线程 29912.1.5 线程与私有数据 30212.2 线程同步机制 30512.2.1 互斥锁通信机制 30512.2.2 条件变量通信机制 30812.2.3 读写锁通信机制 31412.3 多线程异步管理——信号 31912.3.1 线程信号管理 31912.3.2 线程信号应用实例 32012.4 线程属性控制 32212.4.1 获取线程ID 32312.4.2 初始化线程属性对象 32412.4.3 获取/设置线程detachstate属性 32512.4.4 获取/设置线程栈相关属性 326第13章 Linux Socket网络编程基础 32813.1 网络通信基础 32913.1.1 TCP/IP协议簇基础 32913.1.2 IPv4协议基础 33013.1.3 点分十进制IP地址与二进制IP地址转换 33313.1.4 网络数据包封包与拆包过程 33513.1.5 字节顺序与大小端问题 34013.2 BSD Socket网络通信编程 34413.2.1 BSD TCP通信编程流程 34413.2.2 BSD Socket网络编程API 34613.3 使用TCP实现简单聊天程序 35113.3.1 服务器端代码分析 35213.3.2 客户器端代码分析 35413.4 网络调试工具 35613.4.1 tcpdump的使用 35613.4.2 netstat工具使用 35913.4.3 lsof工具使用 360第14章 TCP高级应用 36214.1 文件I/O方式比较 36314.2 I/O阻塞与非阻塞操作 36414.2.1 阻塞与非阻塞基本概念 36414.2.2 非阻塞应用示例 36514.3 socket多路复用应用 36814.3.1 select()与pselect函数介绍 36814.3.2 poll与ppoll函数 37014.3.3 多路复用应用示例 37114.4 控制socket文件描述符属性 37614.4.1 set/getsockopt()修改socket属性 37614.4.2 fcntl控制socket 37914.4.3 ioctl控制文件描述符 379第15章 UDP网络编程应用 38315.1 UDP网络编程基础 38415.1.1 UDP网络通信流程 38415.1.2 使用AF_INET实现UDP点对点通信示例 38515.2 UDP广播通信 38815.2.1 广播地址与广播通信 38815.2.2 UDP广播通信示例 39015.3 UDP组播通信 39315.3.1 组播地址与组播通信 39315.3.2 UDP组播应用示例 39415.4 socket信号驱动 39915.4.1 异步信号处理机制流程 39915.4.2 信号驱动方式处理UDP数据 40015.5 域名与IP信息解析 40315.5.1 Linux下域名解析过程 40315.5.2 通过域名返回主机信息 40415.5.3 通过域名和IP返回主机信息 40515.5.4 getaddrinfo获取主机信息 406第16章 网络服务器应用设计 41016.1 迭代服务器设计 41116.1.1 xinetd服务介绍 41116.1.2 时间服务器应用 41216.2 多进程/多线程并发服务器设计 41416.2.1 多进程实现多客户端 41416.2.2 多线程实现多客户端 41816.2.3 基于HTTP的多进程并发文件服务器 41816.3 进程池/线程池服务器设计 42816.3.1 进程池/线程池服务器模型 42816.3.2 线程池文件服务器示例 431第17章 本地通信与原始套接口 44017.1 sock实现本地进程间通信 44117.1.1 使用socket实现本地进程通信 44117.1.2 使用AF_UNIX实现本机数据流 44217.2 本地socket传递文件描述符 44517.2.1 sendmsg/recvmsg函数 44617.2.2 传递文件描述符示例 44617.3 原始套应用程序开发 45017.3.1 原始套接口基本原理 45017.3.2 原始套接口实现ping应用程序 45017.3.3 原始套实现DOS攻击 456第18章 音频应用程序开发基础 45918.1 WAV音频文件格式分析 46018.1.1 数字音频基本参数 46018.1.2 WAV音频文件结构 46018.1.3 读出WAV格式文件头信息 46318.4.4 MP3文件格式 46418.2 OSS音频设备编程 46718.2.1 OSS音频设备基本架构 46718.2.2 OSS音频编程应用示例 46918.3 ALSA音频设备编程 47418.3.1 ALSA基本架构 47418.3.2 alsa-libs基本应用 47618.3.3 ALSA音频编程示例 481

编辑推荐

《Linux高级程序设计(第三版)》全面介绍Linux编程实战的书籍,作者总结多年教学及工程实践,整合Linux程序设计知识点,涵盖了Linux操作系统下C应用编程所有内容,对每一个知识点都用一个应用程序进行介绍。

作者简介

《Linux高级程序设计(第三版)》围绕Linux操作系统“一切都是文件”的特点,讲述了Linux操作系统下应用层“一段执行单元(进程)对系统资源(CPU资源、各类文件资源)的管理”。详细介绍了Linux系统编程环境及编程工具(GCC/Makefile/GDB)、文件管理(文件属性控制、ANSI以及POSIX标准下文件读写操作、终端编程)、进程管理(创建、退出、执行、等待、属性控制)、进程间通信(管道、消息队列、共享内存)、进程间同步机制(信号量)、进程间异步机制(信号)、线程管理(创建、退出、取消等以及属性控制)、线程间同步(互斥锁、读写锁、条件变量)、线程与信号以及BSD socket编程中的TCP、UDP、原始套接口、网络服务器应用开发等内容,并对Linux系统下的音频应用程序开发做了讲解。
  《Linux高级程序设计(第三版)》内容丰富、紧扣应用,适合从事Linux下C应用编程的人员阅读,也适合从事嵌入式Linux开发的人员阅读。


 Linux高级程序设计下载 更多精彩书评



发布书评

 
 


精彩书评 (总计1条)

  •     第3章组织混乱,3.2应该在3.1之前,3.4和内存管理有什么关系?第4章介绍_IO_FILE成员没有必要,因为要不为了移植性直接使用FILE结构,要不直接使用Linux中的文件描述符,细究这些细节没有意义。如果要了解这些内容,还不如看《c程序设计语言》。许多内容拷贝自《UNIX环境高级编程》。许多代码不能运行。5.2.8介绍了flock函数,示例用的是fcntl,而fcntl的锁功能却没有介绍。许多过时函数。许多扩展函数,但没有明确指出。许多章节前后应用过多,不循序渐进。

精彩短评 (总计21条)

  •     很适合linux编程入门的一本书,包含了很多linux服务器编程入门的知识,市面上的这样的书真的很少,正在阅读
  •     相比第一版,内容丰富了很多。如果从事Linux下编程的话,应该算是必备了吧!
  •     这本书非常不错,更新到第三版已经拥有非常高的质量了·········
  •     买书不知道评价啥,只有正版跟盗版之分吧
  •     言简意赅,句句锱铢。看其他书很多无法弄懂的问题,看了这本书,豁然开朗。对于想学习linux嵌入式相关知识的,这本书是首选,必备。
  •     很好,不错,值得拥有
  •     内容丰富,讲解也精辟入里,对学习和工作的帮助很大!
  •     学校的课本,但是学校没有跟我们订。应该还不错吧,看段时间再来追加好了
  •     看过同学的第二版,非常受用,趁卓越搞活动把第三版收下。书的内容基本都是能吸收的那种,看得出来作者很用心,不像国内很多类似书,说了很多正确的废话,基本就是帮助和文档的罗列。
  •     我准备当入门书来买的,从前三章来看的确起到这样的作用了,后续有新感触再与大家分享。
  •     内容丰富,由浅入深,例子特别多。如果从事Linux下编程的话,应该算是必备了吧!
  •     主要是书的内容不错。恩,书的质量也很好。感觉很舒服。
  •     很好!对我帮助很大!
  •     课本啊亲
  •     了解了WIN的API,而不了解LINUX,就像是吕良伟演过的一部电影片名一样。《跛豪》。。清明节期间了解了一样,示例满实用的。。。。这属于无聊时可以拿来乱翻型。。。常看常新。。
  •     第3章组织混乱,3.2应该在3.1之前,3.4和内存管理有什么关系? 第4章介绍_IO_FILE成员没有必要,因为要不为了移植性直接使用FILE结构,要不直接使用Linux中的文件描述符,细究这些细节没有意义。如果要了解这些内容,还不如看《c程序设计语言》。 许多内容拷贝自《UNIX环境高级编程》
  •     内容简洁,附上的代码加深理解。
  •     随便翻看了一半内容。《Linux高级程序设计(第3版)》,用来作Linux C编程的入门书,还不错!,书中提及许多Linux下的编程工具、Linux编程风格(GNU编程规范、Linux编程规范),能增进对GNU文化、Linux操作系统的理解。
  •     经典中的经典,入门的好书。
  •     发过来封面就褶皱的不成样子了,跟旧书似的,又脏又破,也不知道现在卓越怎么会这样
  •     前一部分还可以,内容、讲解逻辑还都清晰;后一部分作者太不认真了,发现了好多错误,而且介绍不够深入,不知道如何配得上“高级”二字。很少写品论,那些明显的错误实在忍无可忍了。
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024