
| 《Linux高级程序设计(第2版)》主要涵养了Linux下C应用层程序开发的大部分内容。编程基本工具GCC/GDB的使用方法,库文件的管理。ANSI标准I/O管理、POSIX标准I/O管理、普通文件和目录管理以及内存管理。进程管理及进程间通信机制,包括同一台主机通信机制(无名管道、命名管道、信号、信号量、消息队列以及共享内存),网络主机间通信机制(socket)。线程管理及线程问通信机制,包括互斥锁、条件变量、信号灯、信号和读写锁。由浅入深,按理沦分析→实际操作→案例分析的顺序组织内容作者多年教学及工程实践的总结,整合了Linux程序设计的绝大多数知识点,涵盖Linux操作系统下C语言应用程序设计的所有关键内容内容丰富 总结作者多年教学及工程经验,整合Linux程序设汁的绝大多数知识点,涵盖Linux操作系统下C语言应用程序设计的所有关键内容。循序渐进避开大量理论,按知识体系介绍→应用函数分析→应用案例开发的顺序写作,读者可以针对每个知识点进行编程演练。案例指导 《Linux高级程序设计(第2版)》遵循案例教学思想,每一个知识点都对应一个应用程序,且所有代码都在教学实践过程中使用过,读者可以直接编译调试。紧扣应用 《Linux高级程序设计(第2版)》所采用的开发平台为2.6内核,开发工具为GCC 4.0。 |
| 第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 在线文档介绍91.2.4 获取错误信息101.3 部分常用工具简介111.3.1 tar打包器111.3.2 Linux常用命令及工具121.4 Linux下编码风格 161.4.1 GNU编码规范 161.4.2 Linux内核编码规范 17第2章 Linux下C语言开发工具 202.1 常用编辑工具222.1.1 VIM编辑器222.1.2 Emacs编辑器 242.1.3 SourceInsight工具 252.2 GCC编译工具 292.2.1 GCC/G++简介 302.2.2 头文件及预处理结果分析 342.3 Make工具与Makefile文件 362.3.1 Make工具简介 362.3.2 Makefile常用规则 392.4 常用调试工具 412.4.1 GDB调试工具简介 412.4.2 GDB演示示例 422.4.3 GDB调试器常用语法 432.4.4 strace 452.4.5 GCC程序开发过程实例 462.5 Linux库文件使用与创建 492.5.1 Linux系统库文件管理的基本策略 492.5.2 Linux下静态库的创建与使用 502.5.3 Linux下共享库创建及使用 522.5.4 静态库与共享库的区别 542.6 Autoconf/Automake自动化工具 542.6.1 Autoconf/Automake工具介绍 542.6.2 Autoconf/Automake工具使用示例 55第3章 Linux进程存储管理 613.1 Linux程序存储结构与进程结构 623.1.1 Linux可执行文件结构 623.1.2 Linux进程结构 633.1.3 C变量及函数存储类型 643.1.4 栈和堆的区别 693.1.5 示例:查看代码中各数据存储位置 703.1.6 常见内存错误示例分析 733.2 ANSIC内存管理API函数 743.2.1 内存分配的基本方式 743.2.2 示例:为程序申请动态内存空间 743.2.3 内存数据管理函数 783.3 常用Linux内存管理及调试工具 803.3.1 mcheck函数 803.3.2 Valgrind内存检测工具 823.4 Linux进程环境及系统限制 853.4.1 进程与命令参数 853.4.2 进程与环境变量 903.4.3 Linux系统限制 913.4.4 Linux时间管理 93第4章 ANSIC文件管理 964.1 文件及文件流 984.1.1 文件与流的基本概念 984.1.2 标准流及流主要功能 994.1.3 文件流指针 1004.1.4 缓冲区类型 1014.1.5 指定流缓冲区 1034.2 ANSIC标准文件I/O操作 1054.2.1 打开关闭文件 1054.2.2 读写文件流 1074.2.3 文件流定位 1114.2.4 实现文件拷贝操作示例 1134.3 格式化输入/输出函数操作 1144.3.1 printf/scanf函数分析 1144.3.2 fprintf/fscanf函数分析 1154.3.3 sprintf函数分析 1164.3.4 sscanf函数分析 118第5章 POSIX文件及目录管理 1215.1 文件描述符与内核文件表项 1225.1.1 文件流与文件描述符的区别 1225.1.2 文件表结构图 1235.1.3 文件描述符与文件流的转换操作 1235.2 POSIX标准下文件IO管理 1255.2.1 创建/打开/关闭文件1265.2.2 文件控制fcntl 1295.2.3 读/写文件内容 1315.2.4 使用POSIXIO实现文件拷贝 1335.2.5 文件定位 1345.2.6 同步内核缓冲区 1355.2.7 映射文件到内存 1365.3 目录文件基本操作 1375.3.1 打开/关闭目录文件 1385.3.2 读写目录内容 1385.3.3 定位目录位置 1405.3.4 添加删除目录 1405.3.5 当前工作路径操作 141第6章 普通文件.连接文件及目录文件属性管理 1436.1 Linux文件系统管理 1446.1.1 Linux下VFS虚拟文件系统 1446.1.2 ext2文件系统结构 1456.1.3 目录文件及常规文件存储方法1476.2 Linux系统下文件类型及属性1476.2.1 Linux文件类型及权限1476.2.2 Linux文件类型1486.2.3 文件权限修饰位 1516.2.4 文件访问权限位 1526.3 Linux文件属性管理 1536.3.1 读取文件属性 1536.3.2 修改文件权限操作 1566.3.3 修改系统umask值 1576.3.4 修改文件的拥有者及组 1586.3.5 用户名/组名与UID/GID的转换 1596.3.6 创建/删除硬连接 1606.3.7 符号连接文件特殊操作 1616.3.8 文件时间属性修改与时间处理 1626.4 应用示例:实现1s-1基本操作 1646.4.1 需求及知识点涵盖 1646.4.2 流程及源代码实现 164第7章 Linux进程管理与程序开发 1697.1 进程环境及进程属性 1707.1.1 进程资源 1707.1.2 进程状态 1707.1.3 进程基本属性 1727.1.4 进程用户属性 1767.2 进程管理及控制 1797.2.1 创建进程 1797.2.2 在进程中运行新代码 1857.2.3 等待进程结束 1897.2.4 退出进程 1917.2.5 修改进程用户相关信息 1947.2.6 进程调度管理函数 1977.3 Linux特殊进程 2027.3.1 守候进程及其创建过程 2027.3.2 日志信息及其管理 2037.3.3 守候进程应用示例 2057.3.4 孤儿进程与僵死进程 207第8章 进程间通信——管道和信号 2108.1 进程间通信——PIPE 2128.1.1 无名管道概念 2128.1.2 无名管道管理及应用 2128.1.3 文件描述符重定向 2 158.1.4 实现who|sort 2188.1.5 流重定向 2 208.2 进程间通信——FIFO 2 218.2.1 有名管道概念 2 218.2.2 有名管道管理及应用 2228.2.3 管道基本特点总结 2258.3 信号中断处理 2268.3.1 Linux常见信号与处理 2268.3.2 产生信号 2298.3.3 信号处理与signal安装信号 2338.3.4 sigaction安装信号 2348.3.5 信号集与屏蔽信号 2388.3.6 等待信号 2448.3.7 信号应用示例 246第9章 SystemV进程间通信 2509.1 SystemVIPC基础 2529.1.1 key值和ID值 2529.1.2 拥有者及权限 2549.2 消息队列 2549.2.1 消息队列IPC原理 2549.2.2 Linux消息队列管理 2579.2.3 消息队列应用实例 2599.3 信号量通信机制 2649.3.1 信号量IPC原理 2649.3.2 Linux信号量管理操作 2659.3.3 SEM_UNDO参数的应用 2709.3.4 使用信号量实现生产消费问题 2729.4 共享内存 2759.4.1 共享内存IPC原理 2759.4.2 Linux共享内存管理 2769.4.3 共享内存的权限管理示例 2789.4.4 共享内存处理应用示例 2799.4.5 共享内存处理应用示例 281第10章 Linux多线程编程 28510.1 线程基本概念与线程操作 28610.1.1 线程与进程的对比 28610.1.2 创建线程 28710.1.3 线程退出与等待 28810.1.4 取消线程 29110.1.5 线程与私有数据 29410.2 线程属性控制 29710.2.1 线程ID 29810.2.2 初始化线程属性对象 29810.2.3 获取/设置线程detachstate属性 29910.2.4 获取/设置线程栈相关属性 30010.2.5 线程属性控制实例 30110.3 线程调度策略 30310.3.1 获取/设置线程属性调度属性 30310.3.2 获取/设置指定线程调度属性 305第11章 线程间同步机制 30911.1 互斥锁通信机制 31011.1.1 互斥锁基本原理 31011.1.2 互斥锁基本操作 31011.1.3 互斥锁应用实例 31111.2 条件变量通信机制 31311.2.1 条件变量基本原理 31311.2.2 条件变量基本操作 3 1511.2.3 条件变量应用实例 3 1611.3 读写锁通信机制 3 2011.3.1 读写锁基本原理 3 2011.3.2 读写锁基本操作 3 2011.3.3 读写锁应用实例 32211.4 线程与信号 3 2511.4.1 线程信号管理 3 2511.4.2 线程信号应用实例 3 26第12章 Linuxsocket网络编程 3 2912.1 网络通信基础 3 3012.1.1 TCP/IP协议簇基础 3 3012.1.2 IPV4协议基础 3 3112.1.3 网络数据包封包与拆包过程3 3412.2 BSDSocket网络通信编程 33912.2.1 BSDTCP通信编程流程 33912.2.2 BSDUDP通信编程流程 34112.2.3 BSDSocket网络编程API 34212.2.4 使用AF_UNIX实现本机数据流通信示例 34912.2.5 使用AF_INET实现UDP点对点通信示例 35212.3 使用TCP实现简单聊天程序 35412.3.1 服务器端代码分析 35512.3.2 客户器端代码分析 357第13章 网络编程工具介绍 35913.1 地址处理函数说明 36013.1.1 大小端问题与网络字节顺序 36013.1.2 字节顺序处理函数 36113.1.3 点分十进制IP地址与二进制IP地址转换 36313.1.4 通过IP地址获取网络ID和主机ID 36513.2 域名与IP信息解析 36513.2.1 Linux下域名解析过程 36513.2.2 通过域名返回主机信息 36613.2.3 通过域名和IP返回主机信息 36713.2.4 getaddrinfo获取主机信息 36813.3 控制socket文件描述符属性 37113.3.1 set/getsockopt()修改socket属性 37113.3.2 fcntl控制socket 37413.3.3 ioctl控制文件描述符 37413.4 网络调试工具 37713.4.1 tcpdump的使用 37813.4.2 netstat工具使用 38013.4.3 lsof工具使用 381第14章 网络编程高级应用 38314.1 I/O阻塞与非阻塞操作应用 38414.1.1 非阻塞处理方法 38414.1.2 非阻塞应用示例 38414.2 socket多路复用技术 38814.2.1 select()函数介绍 38814.2.2 pselect()函数 39014.2.3 多路选择应用示例 39014.3 socket信号驱动 39614.3.1 各类I/O操作比较 39614.3.2 SIGIO信号处理机制 39714.3.3 UDP信号驱动实现应用示例 39814.4 UDP广播与组播通信 40114.4.1 广播地址与广播通信 40114.4.2 组播地址与组播通信 40314.4.3 UDP广播应用示例 40414.4.4 UDP组播应用示例 40714.5 原始套接口基本应用 41214.5.1 原始套接口基本原理 41214.5.2 原始套接口应用示例 412第15章 构建网络服务器 4 1515.1 多客户端实现 4 1615.1.1 多进程实现多客户端 4 1615.1.2 多线程实现多客户端 4 2015.2 基于xinetd的网络服务应用 4 2015.2.1 xinetd服务介绍 4 2115.2.2 应用示例 42215.3 构建简单的HTTP网络服务器 42315.3.1 服务器运行及测试结果 4 2415.3.2 主函数运行流程 4 2515.3.3 支撑函数 4 27 |
商品评论(0条)