封面
版权信息
内容简介
译者序
前言
关于作者
关于审校者
第1章 获取必要的工具并编写第一个Linux程序
1.1 技术要求
1.2 安装GCC和GNU Make
1.2.1 准备工作
1.2.2 实践步骤
1.2.3 它是如何工作的
1.3 安装GDB和Valgrind
1.3.1 准备工作
1.3.2 实践步骤
1.3.3 它是如何工作的
1.4 在Linux中编写一个简单的C程序
1.4.1 准备工作
1.4.2 实践步骤
1.4.3 它是如何工作的
1.4.4 更多
1.5 编写一个解析命令行选项的程序
1.5.1 准备工作
1.5.2 实践步骤
1.5.3 它是如何工作的
1.6 在内置手册页中查找信息
1.6.1 准备工作
1.6.2 实践步骤
1.6.3 它是如何工作的
1.6.4 更多
1.7 搜索手册以获取信息
1.7.1 准备工作
1.7.2 实践步骤
1.7.3 它是如何工作的
1.7.4 更多
第2章 使你的程序易于脚本化
2.1 技术要求
2.2 返回值以及如何读取它们
2.2.1 准备工作
2.2.2 实践步骤
2.2.3 它是如何工作的
2.2.4 更多
2.2.5 参考
2.3 使用有意义的返回值退出程序
2.3.1 准备工作
2.3.2 实践步骤
2.3.3 它是如何工作的
2.3.4 更多
2.4 重定向标准输入、标准输出和标准错误
2.4.1 准备工作
- APP免费
2.4.2 实践步骤
- APP免费
2.4.3 它是如何工作的
- APP免费
2.4.4 更多
- APP免费
2.5 使用管道连接程序
- APP免费
2.5.1 准备工作
- APP免费
2.5.2 实践步骤
- APP免费
2.5.3 它是如何工作的
- APP免费
2.5.4 更多
- APP免费
2.5.5 参考
- APP免费
2.6 写入标准输出和标准错误
- APP免费
2.6.1 实践步骤
- APP免费
2.6.2 它是如何工作的
- APP免费
2.6.3 更多
- APP免费
2.7 从标准输入读取
- APP免费
2.7.1 准备工作
- APP免费
2.7.2 实践步骤
- APP免费
2.7.3 它是如何工作的
- APP免费
2.7.4 更多
- APP免费
2.8 编写一个管道友好的程序
- APP免费
2.8.1 准备工作
- APP免费
2.8.2 实践步骤
- APP免费
2.8.3 它是如何工作的
- APP免费
2.8.4 更多
- APP免费
2.9 将结果重定向到文件
- APP免费
2.9.1 准备工作
- APP免费
2.9.2 实践步骤
- APP免费
2.9.3 它是如何工作的
- APP免费
2.9.4 更多
- APP免费
2.10 读取环境变量
- APP免费
2.10.1 准备工作
- APP免费
2.10.2 实践步骤
- APP免费
2.10.3 它是如何工作的
- APP免费
2.10.4 更多
- APP免费
第3章 深入探索Linux中的C语言
- APP免费
3.1 技术要求
- APP免费
3.2 使用GNU编译器套件链接库
- APP免费
3.2.1 准备工作
- APP免费
3.2.2 实践步骤
- APP免费
3.2.3 它是如何工作的
- APP免费
3.2.4 更多
- APP免费
3.3 切换C标准
- APP免费
3.3.1 准备工作
- APP免费
3.3.2 实践步骤
- APP免费
3.3.3 它是如何工作的
- APP免费
3.3.4 更多
- APP免费
3.4 使用系统调用
- APP免费
3.4.1 准备工作
- APP免费
3.4.2 实践步骤
- APP免费
3.4.3 它是如何工作的
- APP免费
3.4.4 更多
- APP免费
3.5 获取Linux和类UNIX头文件信息
- APP免费
3.5.1 准备工作
- APP免费
3.5.2 实践步骤
- APP免费
3.5.3 它是如何工作的
- APP免费
3.5.4 更多
- APP免费
3.6 定义功能测试宏
- APP免费
3.6.1 准备工作
- APP免费
3.6.2 实践步骤
- APP免费
3.6.3 它是如何工作的
- APP免费
3.6.4 更多
- APP免费
3.7 编译过程的4个步骤
- APP免费
3.7.1 准备工作
- APP免费
3.7.2 实践步骤
- APP免费
3.7.3 它是如何工作的
- APP免费
3.8 使用Make编译
- APP免费
3.8.1 准备工作
- APP免费
3.8.2 实践步骤
- APP免费
3.8.3 它是如何工作的
- APP免费
3.9 使用GCC选项编写一个通用的Makefile
- APP免费
3.9.1 准备工作
- APP免费
3.9.2 实践步骤
- APP免费
3.9.3 它是如何工作的
- APP免费
3.9.4 更多
- APP免费
3.10 编写一个简单的Make file
- APP免费
3.10.1 准备工作
- APP免费
3.10.2 实践步骤
- APP免费
3.10.3 它是如何工作的
- APP免费
3.11 编写一个更高级的Makefile
- APP免费
3.11.1 准备工作
- APP免费
3.11.2 实践步骤
- APP免费
3.11.3 它是如何工作的
- APP免费
第4章 处理程序中的错误
- APP免费
4.1 技术要求
- APP免费
4.2 为什么错误处理在系统编程中很重要
- APP免费
4.2.1 准备工作
- APP免费
4.2.2 实践步骤
- APP免费
4.2.3 它是如何工作的
- APP免费
4.3 处理常见的错误
- APP免费
4.3.1 准备工作
- APP免费
4.3.2 实践步骤
- APP免费
4.3.3 它是如何工作的
- APP免费
4.4 错误处理和errno
- APP免费
4.4.1 准备工作
- APP免费
4.4.2 实践步骤
- APP免费
4.4.3 它是如何工作的
- APP免费
4.5 处理更多errno宏
- APP免费
4.5.1 准备工作
- APP免费
4.5.2 实践步骤
- APP免费
4.5.3 它是如何工作的
- APP免费
4.5.4 更多
- APP免费
4.6 使用errno和strerror()
- APP免费
4.6.1 准备工作
- APP免费
4.6.2 实践步骤
- APP免费
4.6.3 更多
- APP免费
4.7 使用errno和perror()
- APP免费
4.7.1 准备工作
- APP免费
4.7.2 实践步骤
- APP免费
4.7.3 更多
- APP免费
4.8 返回错误值
- APP免费
4.8.1 准备工作
- APP免费
4.8.2 实践步骤
- APP免费
4.8.3 它是如何工作的
- APP免费
4.8.4 更多
- APP免费
第5章 使用文件I/O和文件系统操作
- APP免费
5.1 技术要求
- APP免费
5.2 读取索引节点信息并学习文件系统
- APP免费
5.2.1 准备工作
- APP免费
5.2.2 实践步骤
- APP免费
5.2.3 它是如何工作的
- APP免费
5.3 创建软链接和硬链接
- APP免费
5.3.1 准备工作
- APP免费
5.3.2 实践步骤
- APP免费
5.3.3 它是如何工作的
- APP免费
5.3.4 更多
- APP免费
5.4 创建文件并更新时间戳
- APP免费
5.4.1 准备工作
- APP免费
5.4.2 实践步骤
- APP免费
5.4.3 它是如何工作的
- APP免费
5.4.4 更多
- APP免费
5.5 删除文件
- APP免费
5.5.1 准备工作
- APP免费
5.5.2 实践步骤
- APP免费
5.5.3 它是如何工作的
- APP免费
5.6 获得访问权限和所有权
- APP免费
5.6.1 准备工作
- APP免费
5.6.2 实践步骤
- APP免费
5.6.3 它是如何工作的
- APP免费
5.7 设置访问权限和所有权
- APP免费
5.7.1 准备工作
- APP免费
5.7.2 实践步骤
- APP免费
5.7.3 它是如何工作的
- APP免费
5.7.4 更多
- APP免费
5.8 使用文件描述符写入文件
- APP免费
5.8.1 准备工作
- APP免费
5.8.2 实践步骤
- APP免费
5.8.3 它是如何工作的
- APP免费
5.8.4 更多
- APP免费
5.9 使用文件描述符读取文件
- APP免费
5.9.1 准备工作
- APP免费
5.9.2 实践步骤
- APP免费
5.9.3 它是如何工作的
- APP免费
5.9.4 更多
- APP免费
5.10 使用流写入文件
- APP免费
5.10.1 准备工作
- APP免费
5.10.2 实践步骤
- APP免费
5.10.3 它是如何工作的
- APP免费
5.10.4 参考
- APP免费
5.11 使用流读取文件
- APP免费
5.11.1 准备工作
- APP免费
5.11.2 实践步骤
- APP免费
5.11.3 它是如何工作的
- APP免费
5.11.4 更多
- APP免费
5.12 使用流读写二进制数据
- APP免费
5.12.1 准备工作
- APP免费
5.12.2 实践步骤
- APP免费
5.12.3 它是如何工作的
- APP免费
5.12.4 更多
- APP免费
5.13 使用lseek()在文件中移动
- APP免费
5.13.1 准备工作
- APP免费
5.13.2 实践步骤
- APP免费
5.13.3 它是如何工作的
- APP免费
5.14 使用fseek()在文件中移动
- APP免费
5.14.1 准备工作
- APP免费
5.14.2 实践步骤
- APP免费
5.14.3 它是如何工作的
- APP免费
5.14.4 更多
- APP免费
第6章 创建进程和使用作业控制
- APP免费
6.1 技术要求
- APP免费
6.2 探索如何创建进程
- APP免费
6.2.1 准备工作
- APP免费
6.2.2 实践步骤
- APP免费
6.2.3 它是如何工作的
- APP免费
6.2.4 更多
- APP免费
6.3 在Bash中使用作业控制
- APP免费
6.3.1 准备工作
- APP免费
6.3.2 实践步骤
- APP免费
6.3.3 它是如何工作的
- APP免费
6.4 使用信号控制和终止进程
- APP免费
6.4.1 准备工作
- APP免费
6.4.2 实践步骤
- APP免费
6.4.3 它是如何工作的
- APP免费
6.4.4 参考
- APP免费
6.5 在进程中使用execl()替换运行的程序
- APP免费
6.5.1 准备工作
- APP免费
6.5.2 实践步骤
- APP免费
6.5.3 它是如何工作的
- APP免费
6.5.4 参考
- APP免费
6.6 创建新进程
- APP免费
6.6.1 准备工作
- APP免费
6.6.2 实践步骤
- APP免费
6.6.3 它是如何工作的
- APP免费
6.6.4 更多
- APP免费
6.7 在创建的进程中执行新程序
- APP免费
6.7.1 准备工作
- APP免费
6.7.2 实践步骤
- APP免费
6.7.3 它是如何工作的
- APP免费
6.8 使用system()启动一个新进程
- APP免费
6.8.1 准备工作
- APP免费
6.8.2 实践步骤
- APP免费
6.8.3 它是如何工作的
- APP免费
6.9 创建僵尸进程
- APP免费
6.9.1 准备工作
- APP免费
6.9.2 实践步骤
- APP免费
6.9.3 它是如何工作的
- APP免费
6.9.4 更多
- APP免费
6.10 了解孤儿进程
- APP免费
6.10.1 准备工作
- APP免费
6.10.2 实践步骤
- APP免费
6.10.3 它是如何工作的
- APP免费
6.10.4 参考
- APP免费
6.11 创建守护进程
- APP免费
6.11.1 准备工作
- APP免费
6.11.2 实践步骤
- APP免费
6.11.3 它是如何工作的
- APP免费
6.11.4 更多
- APP免费
6.12 实现信号处理程序
- APP免费
6.12.1 准备工作
- APP免费
6.12.2 实践步骤
- APP免费
6.12.3 它是如何工作的
- APP免费
6.12.4 更多
- APP免费
第7章 使用systemd处理守护进程
- APP免费
7.1 技术要求
- APP免费
7.2 了解systemd
- APP免费
7.2.1 准备工作
- APP免费
7.2.2 实践步骤
- APP免费
7.2.3 它是如何工作的
- APP免费
7.2.4 更多
- APP免费
7.2.5 参考
- APP免费
7.3 为守护进程编写单元文件
- APP免费
7.3.1 准备工作
- APP免费
7.3.2 实践步骤
- APP免费
7.3.3 它是如何工作的
- APP免费
7.3.4 更多
- APP免费
7.3.5 参考
- APP免费
7.4 启用和禁用服务,以及启动和停止服务
- APP免费
7.4.1 准备工作
- APP免费
7.4.2 实践步骤
- APP免费
7.4.3 它是如何工作的
- APP免费
7.5 为systemd创建现代守护进程
- APP免费
7.5.1 准备工作
- APP免费
7.5.2 实践步骤
- APP免费
7.5.3 它是如何工作的
- APP免费
7.5.4 参考
- APP免费
7.6 使新的守护进程成为systemd服务
- APP免费
7.6.1 准备工作
- APP免费
7.6.2 实践步骤
- APP免费
7.6.3 它是如何工作的
- APP免费
7.7 查阅日志
- APP免费
7.7.1 准备工作
- APP免费
7.7.2 实践步骤
- APP免费
7.7.3 它是如何工作的
- APP免费
7.7.4 参考
- APP免费
第8章 创建共享库
- APP免费
8.1 技术要求
- APP免费
8.2 库及其重要性
- APP免费
8.2.1 准备工作
- APP免费
8.2.2 实践步骤
- APP免费
8.2.3 它是如何工作的
- APP免费
8.2.4 更多
- APP免费
8.3 创建静态库
- APP免费
8.3.1 准备工作
- APP免费
8.3.2 实践步骤
- APP免费
8.3.3 它是如何工作的
- APP免费
8.3.4 参考
- APP免费
8.4 使用静态库
- APP免费
8.4.1 准备工作
- APP免费
8.4.2 实践步骤
- APP免费
8.4.3 它是如何工作的
- APP免费
8.5 创建动态库
- APP免费
8.5.1 准备工作
- APP免费
8.5.2 实践步骤
- APP免费
8.5.3 它是如何工作的
- APP免费
8.5.4 更多
- APP免费
8.5.5 参考
- APP免费
8.6 在系统上安装动态库
- APP免费
8.6.1 准备工作
- APP免费
8.6.2 实践步骤
- APP免费
8.6.3 它是如何工作的
- APP免费
8.7 在程序中使用动态库
- APP免费
8.7.1 准备工作
- APP免费
8.7.2 实践步骤
- APP免费
8.7.3 它是如何工作的
- APP免费
8.7.4 更多
- APP免费
8.7.5 参考
- APP免费
8.8 编译静态链接程序
- APP免费
8.8.1 准备工作
- APP免费
8.8.2 实践步骤
- APP免费
8.8.3 它是如何工作的
- APP免费
第9章 终端I/O及改变终端行为
- APP免费
9.1 技术要求
- APP免费
9.2 查看终端信息
- APP免费
9.2.1 准备工作
- APP免费
9.2.2 实践步骤
- APP免费
9.2.3 它是如何工作的
- APP免费
9.2.4 参考
- APP免费
9.3 使用stty改变终端的设置
- APP免费
9.3.1 准备工作
- APP免费
9.3.2 实践步骤
- APP免费
9.3.3 它是如何工作的
- APP免费
9.4 调查TTY和PTY设备,并向它们写入数据
- APP免费
9.4.1 实践步骤
- APP免费
9.4.2 它是如何工作的
- APP免费
9.4.3 更多
- APP免费
9.4.4 参考
- APP免费
9.5 检查是否是TTY设备
- APP免费
9.5.1 准备工作
- APP免费
9.5.2 实践步骤
- APP免费
9.5.3 它是如何工作的
- APP免费
9.5.4 参考
- APP免费
9.6 创建一个PTY
- APP免费
9.6.1 准备工作
- APP免费
9.6.2 实践步骤
- APP免费
9.6.3 它是如何工作的
- APP免费
9.6.4 参考
- APP免费
9.7 关闭密码提示回显
- APP免费
9.7.1 准备工作
- APP免费
9.7.2 实践步骤
- APP免费
9.7.3 它是如何工作的
- APP免费
9.7.4 更多
- APP免费
9.8 读取终端的大小
- APP免费
9.8.1 准备工作
- APP免费
9.8.2 实践步骤
- APP免费
9.8.3 它是如何工作的
- APP免费
9.8.4 更多
- APP免费
9.8.5 参考
- APP免费
第10章 使用不同类型的IPC
- APP免费
10.1 技术要求
- APP免费
10.2 使用IPC信号——为守护进程构建客户端
- APP免费
10.2.1 准备工作
- APP免费
10.2.2 实践步骤
- APP免费
10.2.3 它是如何工作的
- APP免费
10.2.4 参考
- APP免费
10.3 使用管道通信
- APP免费
10.3.1 准备工作
- APP免费
10.3.2 实践步骤
- APP免费
10.3.3 它是如何工作的
- APP免费
10.3.4 参考
- APP免费
10.4 FIFO——在shell中使用它
- APP免费
10.4.1 准备工作
- APP免费
10.4.2 实践步骤
- APP免费
10.4.3 它是如何工作的
- APP免费
10.4.4 更多
- APP免费
10.4.5 参考
- APP免费
10.5 FIFO——构建发送者
- APP免费
10.5.1 准备工作
- APP免费
10.5.2 实践步骤
- APP免费
10.5.3 它是如何工作的
- APP免费
10.5.4 参考
- APP免费
10.6 FIFO——构建接收者
- APP免费
10.6.1 准备工作
- APP免费
10.6.2 实践步骤
- APP免费
10.6.3 它是如何工作的
- APP免费
10.6.4 参考
- APP免费
10.7 消息队列——构建发送者
- APP免费
10.7.1 准备工作
- APP免费
10.7.2 实践步骤
- APP免费
10.7.3 它是如何工作的
- APP免费
10.7.4 参考
- APP免费
10.8 消息队列——构建接收者
- APP免费
10.8.1 准备工作
- APP免费
10.8.2 实践步骤
- APP免费
10.8.3 它是如何工作的
- APP免费
10.8.4 参考
- APP免费
10.9 在父子进程间使用共享内存通信
- APP免费
10.9.1 准备工作
- APP免费
10.9.2 实践步骤
- APP免费
10.9.3 它是如何工作的
- APP免费
10.9.4 参考
- APP免费
10.10 在不相关的进程中使用共享内存
- APP免费
10.10.1 准备工作
- APP免费
10.10.2 实践步骤
- APP免费
10.10.3 它是如何工作的
- APP免费
10.10.4 参考
- APP免费
10.11 UNIX套接字编程——构建发送者
- APP免费
10.11.1 准备工作
- APP免费
10.11.2 实践步骤
- APP免费
10.11.3 它是如何工作的
- APP免费
10.11.4 参考
- APP免费
10.12 UNIX套接字编程——构建接收者
- APP免费
10.12.1 准备工作
- APP免费
10.12.2 实践步骤
- APP免费
10.12.3 它是如何工作的
- APP免费
10.12.4 参考
- APP免费
第11章 在程序中使用线程
- APP免费
11.1 技术要求
- APP免费
11.2 编写第一个线程化程序
- APP免费
11.2.1 准备工作
- APP免费
11.2.2 实践步骤
- APP免费
11.2.3 它是如何工作的
- APP免费
11.2.4 更多
- APP免费
11.2.5 参考
- APP免费
11.3 从线程中读取返回值
- APP免费
11.3.1 准备工作
- APP免费
11.3.2 实践步骤
- APP免费
11.3.3 它是如何工作的
- APP免费
11.4 触发竞态条件
- APP免费
11.4.1 准备工作
- APP免费
11.4.2 实践步骤
- APP免费
11.4.3 它是如何工作的
- APP免费
11.5 使用互斥锁来防止竞态条件
- APP免费
11.5.1 准备工作
- APP免费
11.5.2 实践步骤
- APP免费
11.5.3 它是如何工作的
- APP免费
11.5.4 参考
- APP免费
11.6 更有效的互斥锁编程
- APP免费
11.6.1 准备工作
- APP免费
11.6.2 实践步骤
- APP免费
11.6.3 它是如何工作的
- APP免费
11.7 使用条件变量
- APP免费
11.7.1 准备工作
- APP免费
11.7.2 实践步骤
- APP免费
11.7.3 它是如何工作的
- APP免费
11.7.4 参考
- APP免费
第12章 调试程序
- APP免费
12.1 技术要求
- APP免费
12.2 开始GDB
- APP免费
12.2.1 准备工作
- APP免费
12.2.2 实践步骤
- APP免费
12.2.3 它是如何工作的
- APP免费
12.2.4 更多
- APP免费
12.3 使用GDB进入函数内部
- APP免费
12.3.1 准备工作
- APP免费
12.3.2 实践步骤
- APP免费
12.3.3 它是如何工作的
- APP免费
12.4 使用GDB观察内存
- APP免费
12.4.1 准备工作
- APP免费
12.4.2 实践步骤
- APP免费
12.4.3 它是如何工作的
- APP免费
12.4.4 更多
- APP免费
12.4.5 参考
- APP免费
12.5 在运行期间修改变量
- APP免费
12.5.1 准备工作
- APP免费
12.5.2 实践步骤
- APP免费
12.5.3 它是如何工作的
- APP免费
12.6 在新创建的程序中使用GDB
- APP免费
12.6.1 准备工作
- APP免费
12.6.2 实践步骤
- APP免费
12.6.3 它是如何工作的
- APP免费
12.6.4 更多
- APP免费
12.7 在多线程中调试程序
- APP免费
12.7.1 准备工作
- APP免费
12.7.2 实践步骤
- APP免费
12.7.3 它是如何工作的
- APP免费
12.7.4 更多
- APP免费
12.7.5 参考
- APP免费
12.8 使用Valgrind找到一个简单的内存泄漏
- APP免费
12.8.1 准备工作
- APP免费
12.8.2 实践步骤
- APP免费
12.8.3 它是如何工作的
- APP免费
12.8.4 参考
- APP免费
12.9 使用Valgrind找到缓冲区溢出
- APP免费
12.9.1 准备工作
- APP免费
12.9.2 实践步骤
- APP免费
12.9.3 它是如何工作的
- APP免费
12.9.4 更多
- APP免费
作者简介
- APP免费
封底
更新时间:2023-07-24 18:22:37