第1章 获取必要的工具并编写
第一个Linux程序 1
1.1 技术要求 1
1.2 安装GCC和GNU Make 2
1.2.1 准备工作 3
1.2.2 实践步骤 3
1.2.3 它是如何工作的 4
1.3 安装GDB和Valgrind 5
1.3.1 准备工作 5
1.3.2 实践步骤 5
1.3.3 它是如何工作的 6
1.4 在Linux中编写一个简单的
C程序 7
1.4.1 准备工作 7
1.4.2 实践步骤 7
1.4.3 它是如何工作的 8
1.4.4 更多 9
1.5 编写一个解析命令行选项
的程序 10
1.5.1 准备工作 10
1.5.2 实践步骤 10
1.5.3 它是如何工作的 12
1.6 在内置手册页中查找信息 13
1.6.1 准备工作 13
1.6.2 实践步骤 14
1.6.3 它是如何工作的 14
1.6.4 更多 15
1.7 搜索手册以获取信息 15
1.7.1 准备工作 15
1.7.2 实践步骤 15
1.7.3 它是如何工作的 15
1.7.4 更多 16
第2章 使你的程序易于脚本化 17
2.1 技术要求 18
2.2 返回值以及如何读取它们 18
2.2.1 准备工作 18
2.2.2 实践步骤 18
2.2.3 它是如何工作的 20
2.2.4 更多 21
2.2.5 参考 21
2.3 使用有意义的返回值退出程序 21
2.3.1 准备工作 21
2.3.2 实践步骤 21
2.3.3 它是如何工作的 24
2.3.4 更多 25
2.4 重定向标准输入、标准输出
和标准错误 25
2.4.1 准备工作 25
2.4.2 实践步骤 25
2.4.3 它是如何工作的 27
2.4.4 更多 28
2.5 使用管道连接程序 28
2.5.1 准备工作 28
2.5.2 实践步骤 28
2.5.3 它是如何工作的 29
2.5.4 更多 30
2.5.5 参考 30
2.6 写入标准输出和标准错误 30
2.6.1 实践步骤 30
2.6.2 它是如何工作的 32
2.6.3 更多 32
2.7 从标准输入读取 33
2.7.1 准备工作 33
2.7.2 实践步骤 33
2.7.3 它是如何工作的 34
2.7.4 更多 35
2.8 编写一个管道友好的程序 36
2.8.1 准备工作 36
2.8.2 实践步骤 36
2.8.3 它是如何工作的 38
2.8.4 更多 39
2.9 将结果重定向到文件 39
2.9.1 准备工作 40
2.9.2 实践步骤 40
2.9.3 它是如何工作的 43
2.9.4 更多 44
2.10 读取环境变量 44
2.10.1 准备工作 44
2.10.2 实践步骤 45
2.10.3 它是如何工作的 46
2.10.4 更多 47
第3章 深入探索Linux中的C语言 48
3.1 技术要求 49
3.2 使用GNU编译器套件
链接库 49
3.2.1 准备工作 49
3.2.2 实践步骤 49
3.2.3 它是如何工作的 52
3.2.4 更多 53
3.3 切换C标准 54
3.3.1 准备工作 54
3.3.2 实践步骤 54
3.3.3 它是如何工作的 56
3.3.4 更多 57
3.4 使用系统调用 57
3.4.1 准备工作 58
3.4.2 实践步骤 58
3.4.3 它是如何工作的 60
3.4.4 更多 61
3.5 获取Linux和类UNIX头
文件信息 61
3.5.1 准备工作 61
3.5.2 实践步骤 62
3.5.3 它是如何工作的 63
3.5.4 更多 63
3.6 定义功能测试宏 63
3.6.1 准备工作 64
3.6.2 实践步骤 64
3.6.3 它是如何工作的 67
3.6.4 更多 68
3.7 编译过程的4个步骤 68
3.7.1 准备工作 68
3.7.2 实践步骤 68
3.7.3 它是如何工作的 71
3.8 使用Make编译 72
3.8.1 准备工作 72
3.8.2 实践步骤 73
3.8.3 它是如何工作的 74
3.9 使用GCC选项编写一个
通用的Makefile 74
3.9.1 准备工作 74
3.9.2 实践步骤 75
3.9.3 它是如何工作的 75
3.9.4 更多 75
3.10 编写一个简单的Make file 76
3.10.1 准备工作 76
3.10.2 实践步骤 76
3.10.3 它是如何工作的 77
3.11 编写一个更高级的Makefile 77
3.11.1 准备工作 78
3.11.2 实践步骤 78
3.11.3 它是如何工作的 82
第4章 处理程序中的错误 84
4.1 技术要求 85
4.2 为什么错误处理在系统编程
中很重要 85
4.2.1 准备工作 85
4.2.2 实践步骤 85
4.2.3 它是如何工作的 87
4.3 处理常见的错误 87
4.3.1 准备工作 87
4.3.2 实践步骤 88
4.3.3 它是如何工作的 90
4.4 错误处理和errno 90
4.4.1 准备工作 91
4.4.2 实践步骤 91
4.4.3 它是如何工作的 92
4.5 处理更多errno宏 93
4.5.1 准备工作 93
4.5.2 实践步骤 93
4.5.3 它是如何工作的 94
4
展开