Linux是世界上流行的源操作系统。Linux系统编程技术将使你能够使用自己的系统程序扩展Linux操作系统,并与系统上的其他程序行通信。 本书首先探讨了Linux文件系统及其基本命令、内置手册页、GNU编译器集合(GCC)和Linux系统调用。然后,你将了解如何处理程序中的错误,并学习如何捕获错误并印错误相关信息。本书介绍了在系统上读写文件的多种方法,包括使用流和文件描述符。随着学习的不断深,你将深研究创建程、创建僵尸程和守护程序,并学习使用systemd处理守护程序的方法。之后,你将了解如何创建共享库,并探索不同类型的程间通信(IPC)。在后续的章节中,你还将学习如何使用POSIX线程编写程序,以及如何使用GNU调试器(GDB)和Valgrind调试程序。 学完本书后,你将能够在Linux系统中发自己的系统程序,包括守护程、工具、客户端和过滤器。 通过阅读本书,你将: ?了解如何使用各种系统调用为Linux系统编写程序。 ?深研究POSIX函数的工作原理。 ?理解并学会使用信号、管道、IPC和流程管理等关键概念。 ?了解如何集成程序与Linux系统。 ?探索高级主题,例如,文件系统操作、创建共享库和调试程序。 ?全面了解如何使用Valgrind调试程序。
售 价:¥
纸质售价:¥81.70购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
The Translator's Words 译者序
Preface 前言
About the author 关于作者
About the reviser 关于审校者
第1章 获取必要的工具并编写第一个Linux程序
1.1 技术要求
1.2 安装GCC和GNU Make
1.3 安装GDB和Valgrind
1.4 在Linux中编写一个简单的C程序
1.5 编写一个解析命令行选项的程序
1.6 在内置手册页中查找信息
1.7 搜索手册以获取信息
第2章 使你的程序易于脚本化
2.1 技术要求
2.2 返回值以及如何读取它们
2.3 使用有意义的返回值退出程序
2.4 重定向标准输入、标准输出和标准错误
2.5 使用管道连接程序
2.6 写入标准输出和标准错误
2.7 从标准输入读取
2.8 编写一个管道友好的程序
2.9 将结果重定向到文件
2.10 读取环境变量
第3章 深入探索Linux中的C语言
3.1 技术要求
3.2 使用GNU编译器套件链接库
3.3 切换C标准
3.4 使用系统调用
3.5 获取Linux和类UNIX头文件信息
3.6 定义功能测试宏
3.7 编译过程的4个步骤
3.8 使用Make编译
3.9 使用GCC选项编写一个通用的Makefile
3.10 编写一个简单的Make file
3.11 编写一个更高级的Makefile
第4章 处理程序中的错误
4.1 技术要求
4.2 为什么错误处理在系统编程中很重要
4.3 处理常见的错误
4.4 错误处理和errno
4.5 处理更多errno宏
4.6 使用errno和strerror()
4.7 使用errno和perror()
4.8 返回错误值
第5章 使用文件I/O和文件系统操作
5.1 技术要求
5.2 读取索引节点信息并学习文件系统
5.3 创建软链接和硬链接
5.4 创建文件并更新时间戳
5.5 删除文件
5.6 获得访问权限和所有权
5.7 设置访问权限和所有权
5.8 使用文件描述符写入文件
5.9 使用文件描述符读取文件
5.10 使用流写入文件
5.11 使用流读取文件
5.12 使用流读写二进制数据
5.13 使用lseek()在文件中移动
5.14 使用fseek()在文件中移动
第6章 创建进程和使用作业控制
6.1 技术要求
6.2 探索如何创建进程
6.3 在Bash中使用作业控制
6.4 使用信号控制和终止进程
6.5 在进程中使用execl()替换运行的程序
6.6 创建新进程
6.7 在创建的进程中执行新程序
6.8 使用system()启动一个新进程
6.9 创建僵尸进程
6.10 了解孤儿进程
6.11 创建守护进程
6.12 实现信号处理程序
第7章 使用systemd处理守护进程
7.1 技术要求
7.2 了解systemd
7.3 为守护进程编写单元文件
7.4 启用和禁用服务,以及启动和停止服务
7.5 为systemd创建现代守护进程
7.6 使新的守护进程成为systemd服务
7.7 查阅日志
第8章 创建共享库
8.1 技术要求
8.2 库及其重要性
8.3 创建静态库
8.4 使用静态库
8.5 创建动态库
8.6 在系统上安装动态库
8.7 在程序中使用动态库
8.8 编译静态链接程序
第9章 终端I/O及改变终端行为
9.1 技术要求
9.2 查看终端信息
9.3 使用stty改变终端的设置
9.4 调查TTY和PTY设备,并向它们写入数据
9.5 检查是否是TTY设备
9.6 创建一个PTY
9.7 关闭密码提示回显
9.8 读取终端的大小
第10章 使用不同类型的IPC
10.1 技术要求
10.2 使用IPC信号——为守护进程构建客户端
10.3 使用管道通信
10.4 FIFO——在shell中使用它
10.5 FIFO——构建发送者
10.6 FIFO——构建接收者
10.7 消息队列——构建发送者
10.8 消息队列——构建接收者
10.9 在父子进程间使用共享内存通信
10.10 在不相关的进程中使用共享内存
10.11 UNIX套接字编程——构建发送者
10.12 UNIX套接字编程——构建接收者
第11章 在程序中使用线程
11.1 技术要求
11.2 编写第一个线程化程序
11.3 从线程中读取返回值
11.4 触发竞态条件
11.5 使用互斥锁来防止竞态条件
11.6 更有效的互斥锁编程
11.7 使用条件变量
第12章 调试程序
12.1 技术要求
12.2 开始GDB
12.3 使用GDB进入函数内部
12.4 使用GDB观察内存
12.5 在运行期间修改变量
12.6 在新创建的程序中使用GDB
12.7 在多线程中调试程序
12.8 使用Valgrind找到一个简单的内存泄漏
12.9 使用Valgrind找到缓冲区溢出
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜