编辑推荐
《Linux高级程序设计(第三版)》全面介绍Linux编程实战的书籍,作者总结多年教学及工程实践,整合Linux程序设计知识点,涵盖了Linux操作系统下C应用编程所有内容,对每一个知识点都用一个应用程序进行介绍。
内容简介
《Linux高级程序设计(第三版)》围绕Linux操作系统“一切都是文件”的特点,讲述了Linux操作系统下应用层“一段执行单元(进程)对系统资源(CPU资源、各类文件资源)的管理”。详细介绍了Linux系统编程环境及编程工具(GCC/Makefile/GDB)、文件管理(文件属性控制、ANSI以及POSIX标准下文件读写操作、终端编程)、进程管理(创建、退出、执行、等待、属性控制)、进程间通信(管道、消息队列、共享内存)、进程间同步机制(信号量)、进程间异步机制(信号)、线程管理(创建、退出、取消等以及属性控制)、线程间同步(互斥锁、读写锁、条件变量)、线程与信号以及BSD socket编程中的TCP、UDP、原始套接口、网络服务器应用开发等内容,并对Linux系统下的音频应用程序开发做了讲解。
《Linux高级程序设计(第三版)》内容丰富、紧扣应用,适合从事Linux下C应用编程的人员阅读,也适合从事嵌入式Linux开发的人员阅读。
作者简介
"《高级程序设计(第3版)》编著者杨宗德、吕光宏、刘雍。 《高级程序设计(第3版)》围绕Linux操作系统“一切都是文件”的特点,讲述了Linux操作系统下应用层“一段执行单元(进程)对系统资源(CPU资源、各类文件资源)的管理”。详细介绍了Linux系统编程环境及编程工具(GCC/Makefile/GDB)、文件管理(文件属性控制、ANSI以及POSIX标准下文件读写操作、终端编程)、进程管理(创建、退出、执行、等待、属性控制)、进程间通信(管道、消息队列、共享内存)、进程间同步机制(信号量)、进程间异步机制(信号)、线程管理(创建、退出、取消等以及属性控制)、线程间同步(互斥锁、读写锁、条件变量)、线程与信号以及BSD socket编程中的TCP、UDP、原始套接口、网络服务器应用开发等内容,并对Linux系统下的音频应用程序开发做了讲解。 《Linux高级程序设计(第3版)》内容丰富、紧扣应用,适合从事Linux下C应用编程的人员阅读,也适合从事嵌入式Linux开发的人员阅读。"}}
目录
- 第1章Linux下C语言开发环境
- 1.1Linux操作系统简介
- 1.1.1Linux操作系统简介
- 1.1.2GNU/Linux简介
- 1.1.3相关术语介绍
- 1.2Linux开发初步
- 1.2.1Linux下C程序标准
- 1.2.2库函数和系统调用
- 1.2.3在线文档介绍
- 1.2.4获取错误信息
- 1.3部分常用工具简介
- 1.3.1tar打包器
- 1.3.2Linux常用命令及工具
- 1.4Linux下编码风格
- 1.4.1GNU编码规范
- 1.4.2Linux内核编码规范
- 第2章Linux下C语言开发工具
- 2.1常用编辑工具
- 2.1.1VIM编辑器
- 2.1.2Emacs编辑器
- 2.1.3SourceInsight工具
- 2.2GCC/GDB编译调试工具基础
- 2.2.1GCC/G++简单介绍
- 2.2.2GDB调试工具简介
- 2.2.3使用GCC编译C程序示例
- 2.2.4使用g++编译C++程序示例
- 2.2.5GDB演示示例
- 第3章Linux进程存储管理
- 3.1Linux程序存储结构与进程结构
- 3.1.1Linux可执行文件结构
- 3.1.2Linux进程结构
- 3.1.3C变量及函数存储类型
- 3.1.4栈和堆的区别
- 3.1.5示例:查看代码中各数据存储位置
- 3.1.6常见内存错误示例分析
- 3.2ANSIC动态内存管理
- 3.2.1内存分配的基本方式
- 3.2.2示例:为程序申请动态内存空间
- 3.2.3内存数据管理函数
- 3.3Valgrind及valkyrie内存管理工具
- 3.3.1Valgrind介绍
- 3.3.2Valgrind安装与使用
- 3.3.3valgrind图形化工具Valkyrie
- 3.3.4内存检测示例
- 3.4Linux进程环境及系统限制
- 3.4.1进程与命令行选项及参数
- 3.4.2进程与环境变量
- 3.4.3Linux系统限制
- 3.4.4Linux时间管理
- 第4章ANSIC文件IO管理
- 4.1文件及文件流
- 4.1.1文件与流的基本概念
- 4.1.2标准流及流主要功能
- 4.1.3文件流指针
- 4.1.4缓冲区类型
- 4.1.5指定流缓冲区
- 4.2ANSIC文件I/O操作
- 4.2.1打开关闭文件
- 4.2.2读/写文件流
- 4.2.3文件流定位
- 4.2.4实现文件复制操作示例
- 4.3流的格式化输入/输出操作
- 4.3.1printf/scanf函数分析
- 4.3.2fprintf/fscanf函数分析
- 4.3.3sprintf函数分析
- 4.3.4sscanf函数分析
- 第5章POSIX文件及目录管理
- 5.1文件描述符与内核文件表项
- 5.1.1文件流与文件描述符的区别
- 5.1.2文件表结构图
- 5.1.3文件描述符与文件流的转换操作
- 5.2POSIX标准下文件IO管理
- 5.2.1创建/打开/关闭文件
- 5.2.2文件控制fcntl
- 5.2.3读/写文件内容
- 5.2.4使用POSIXIO实现大于2G文件复制
- 5.2.5文件定位
- 5.2.6同步内核缓冲区
- 5.2.7映射文件到内存
- 5.2.8锁定/解锁文件
- 5.3目录流基本操作
- 5.3.1打开/关闭目录文件
- 5.3.2读/写目录内容
- 5.3.3定位目录位置
- 5.3.4添加和删除目录
- 5.3.5当前工作路径操作
- 5.3.6文件流、目录流、文件描述符总结
- 5.4应用案例:递归文件目录复制操作
- 5.4.1应用需求及流程图
- 5.4.2示例代码
- 第6章普通文件、连接文件及目录文件属性管理
- 6.1Linux文件系统管理
- 6.1.1Linux下VFS虚拟文件系统
- 6.1.2ext2文件系统结构
- 6.1.3目录文件及常规文件存储方法
- 6.2Linux系统下文件类型及属性
- 6.2.1Linux文件类型及权限
- 6.2.2Linux文件类型
- 6.2.3文件权限修饰位
- 6.2.4文件访问权限位
- 6.3Linux文件属性管理
- 6.3.1读取文件属性
- 6.3.2修改文件权限操作
- 6.3.3修改系统umask值
- 6.3.4修改文件的拥有者及组
- 6.3.5用户名/组名与UID/GID的转换
- 6.3.6创建/删除硬连接
- 6.3.7符号连接文件特殊操作
- 6.3.8文件时间属性修改与时间处理
- 6.4示例:ls?l以排序方式列出目录信息
- 6.4.1需求及知识点涵盖
- 6.4.2流程及源代码实现
- 6.5示例:实现tree系统命令
- 第7章终端及串口编程
- 7.1终端设备类型
- 7.1.1实际的物理串口
- 7.1.2控制台终端
- 7.1.3虚拟终端
- 7.1.4当前终端
- 7.2终端属性控制
- 7.2.1读取/设置终端属性信息
- 7.2.2c_cflag终端控制选项
- 7.2.3c_lflag终端本地选项
- 7.2.4c_iflag终端输入选项
- 7.2.5c_oflag终端输出选项
- 7.2.6c_cc(NCCS)终端控制字符
- 7.2.7IOCTLs控制终端
- 7.2.8进程与终端
- 7.3串口编程
- 7.3.1串口物理设备
- 7.3.2串口终端基本操作
- 7.3.3串口编程示例
- 7.4控制台终端应用基础
- 7.4.1终端属性设置
- 7.4.2控制命令基本格式
- 7.4.3从控制台终端获取信息不回显
- 第8章Linux进程管理与程序开发
- 8.1进程环境及进程属性
- 8.1.1程序、进程与进程资源
- 8.1.2进程状态
- 8.1.3进程基本属性
- 8.1.4进程用户属性
- 8.2进程管理及控制
- 8.2.1创建进程
- 8.2.2在进程中运行新代码
- 8.2.3回收进程用户空间资源
- 8.2.4回收内核空间资源
- 8.2.5孤儿进程与僵死进程
- 8.2.6修改进程用户相关信息
- 8.3Linux特殊进程
- 8.3.1守候进程及其创建过程
- 8.3.2日志信息及其管理
- 8.3.3守候进程应用示例
- 第9章进程间通信——管道
- 9.1进程间通信——PIPE
- 9.1.1无名管道概念
- 9.1.2无名管道文件操作的特殊性
- 9.1.3文件描述符重定向
- 9.1.4实现who|sort
- 9.1.5流重定向
- 9.2进程间通信——FIFO
- 9.2.1有名管道概念
- 9.2.2有名管道管理及其特殊性
- 9.2.3管道基本特点总结
- 第10章Linux异步信号处理机制
- 10.1Linux常见信号与处理
- 10.1.1信号与中断
- 10.1.2信号基本概念
- 10.1.3信号的生命周期
- 10.1.4发送信号
- 10.2安装信号与捕获信号
- 10.2.1信号处理办法
- 10.2.2signal安装信号
- 10.2.3sigaction安装信号
- 10.2.4signal的系统漏洞
- 10.3安装信号与捕获信号
- 10.3.1设置进程屏蔽信号集
- 10.3.2获取当前未决的信号
- 10.3.3信号集合操作
- 10.3.4信号集合操作应用示例
- 10.4等待信号
- 10.4.1pause函数
- 10.4.2sigsuspend函数
- 10.5信号应用实例
- 第11章SystemV进程间通信
- 11.1SystemVIPC基础
- 11.1.1key值和ID值
- 11.1.2拥有者及权限
- 11.2消息队列
- 11.2.1消息队列IPC原理
- 11.2.2Linux消息队列管理
- 11.2.3消息队列应用实例
- 11.3信号量通信机制
- 11.3.1信号量IPC原理
- 11.3.2Linux信号量管理操作
- 11.3.3SEM_UNDO参数的应用
- 11.3.4使用信号量实现生产消费问题
- 11.4共享内存
- 11.4.1共享内存IPC原理
- 11.4.2Linux共享内存管理
- 11.4.3共享内存的权限管理示例
- 11.4.4共享内存处理应用示例
- 第12章Linux多线程编程
- 12.1线程基本概念与线程操作
- 12.1.1线程与进程的对比
- 12.1.2创建线程
- 12.1.3线程退出与等待
- 12.1.4取消线程
- 12.1.5线程与私有数据
- 12.2线程同步机制
- 12.2.1互斥锁通信机制
- 12.2.2条件变量通信机制
- 12.2.3读写锁通信机制
- 12.3多线程异步管理——信号
- 12.3.1线程信号管理
- 12.3.2线程信号应用实例
- 12.4线程属性控制
- 12.4.1获取线程ID
- 12.4.2初始化线程属性对象
- 12.4.3获取/设置线程detachstate属性
- 12.4.4获取/设置线程栈相关属性
- 第13章LinuxSocket网络编程基础
- 13.1网络通信基础
- 13.1.1TCP/IP协议簇基础
- 13.1.2IPv4协议基础
- 13.1.3点分十进制IP地址与二进制IP地址转换
- 13.1.4网络数据包封包与拆包过程
- 13.1.5字节顺序与大小端问题
- 13.2BSDSocket网络通信编程
- 13.2.1BSDTCP通信编程流程
- 13.2.2BSDSocket网络编程API
- 13.3使用TCP实现简单聊天程序
- 13.3.1服务器端代码分析
- 13.3.2客户器端代码分析
- 13.4网络调试工具
- 13.4.1tcpdump的使用
- 13.4.2netstat工具使用
- 13.4.3lsof工具使用
- ……
- 第14章TCP高级应用
- 第15章UDP网络编程应用
- 第16章网络服务器应用设计
- 第17章本地通信与原始套接口
- 第18章音频应用程序开发基础