第一部分 入门 3
第1章 Linux的发展史 3
1.1 Unix自由软件简史 3
1.2 Linux的发展 4
1.3 Unix系统的基本家谱 5
1.4 Linux的家谱 6
第2章 许可证与版权 7
2.1 版权 7
2.2 许可证 8
2.3 自由软件许可证 9
第3章 有关Linux的更多信息 11
3.1 Linux文件概观 11
3.2 其他手册 13
3.3 源代码 13
3.4 Linux(和其他)新闻组 13
3.5 邮件列表 14
3.6 其他文件 15
3.7 你的发布销售商 16
第4章 开发工具 19
4.1 编辑器 19
第二部分 开发环境和工具 19
4.2 make 21
4.3 GNU调试程序 25
第5章 gcc选项和扩展 29
5.1 gcc选项 29
5.2 头文件 31
6.1 错误程序 33
第6章 存储器调试工具 33
6.2 电子篱笆 34
6.3 检验程序 38
6.4 mpr和mchech() 40
第7章 程序库的创建和使用 43
7.1 静态程序库 43
7.2 共享程序库 43
7.3 共享程序库的设计 44
7.5 共享程序库的安装 46
7.4 共享程序库的创建 46
7.6 使用共享程序库 48
第8章 Linux开发环境 50
8.1 了解系统调用 50
8.2 寻找头文件和程序库文件 56
第三部分 系统编程 59
第9章 进程模型 59
9.1 定义进程 59
9.2 进程属性 60
9.3 进程信息 65
9.4 进程基本元素 69
9.5 简单子进程 74
9.6 会话和进程组 77
9.7 关于ladsh 79
9.8 创建克隆 90
第10章 简单的文件操作 91
10.1 文件模式 93
10.2 基本的文件操作 97
10.3 查询和改变信息节点信息 106
10.4 处理目录项 115
10.5 文件描述符操作 120
10.6 创建未命名管道 121
10.7 对ladsh添加重定向信息 122
第11章 目录操作 125
11.1 当前工作目录 125
11.3 创建和删除目录 127
11.2 更改根目录 127
11.4 读取目录内容 128
11.5 文件名匹配 129
11.6 增加目录及匹配 134
第12章 高级文件处理 138
12.1 输入输出多重操作 138
12.2 内存映射 145
12.3 文件封锁 151
12.4 分散/集中读写 158
13.1 信号的概念 160
第13章 信号处理 160
13.2 Linux(和POSIX)信号系统的API 163
13.3 有效信号 168
13.4 编写信号处理程序 171
13.5 重新打开记录文件 172
第14章 作业控制 175
14.1 作业控制基础 175
14.2 ladsh中的作业控制 177
15.1 tty操作 182
第15章 终端和伪终端 182
15.2 termios概述 184
15.3 termios实例 186
15.4 termios调试 199
15.5 termios索引 200
15.6 伪终端 213
第16章 用Scoket联网 222
16.1 协议支持 222
16.2 实用函数 224
16.3 基本Socket操作 225
16.4 UNIX域Socket 228
16.5 用TCP/IP联网的机器 237
16.6 Socket错误 249
第17章 时间 251
17.1 表示时间和日期 251
17.2 使用计时器 257
18.1 伪随机数 260
第18章 随机数 260
18.2 密码与随机数 261
第19章 虚拟控制台编程 263
19.1 入门 264
19.2 发出蜂鸣声 265
19.3 判断终端是否为虚拟控制台 266
19.4 寻找当前虚拟控制台 266
19.5 管理虚拟控制台的切换 267
19.6 综合例子:open命令 269
20.1 性能数据库 271
第20章 Linux控制台 271
20.2 图示符、字符和映射 273
20.3 Linux控制台性能 273
20.4 直接写屏 280
第四部分 开发库 285
第21章 字符串的匹配 285
21.1 匹配任意字符串 285
21.2 正则表达式 286
22.1 输入处理 290
第22章 使用S-Lang处理终端 290
22.2 输出处理 292
第23章 Berkely db程序库 300
23.1 概述 300
23.2 基本操作 301
23.3 读取记录 303
23.4 修改数据库 304
23.5 例子 305
24.1 popt的基本用法 312
第24章 解析命令行选项 312
24.2 错误处理 315
24.3 选项别名 317
24.4 解析参数字符串 318
24.5 处理外部参数 318
24.6 应用例子 318
第25章 运行时的动态载入 319
25.1 动态载入接口 319
26.1 ID-名称的翻译 323
第26章 名称与用户数据库 323
26.2 修改系统数据库 329
附录A 直接访问I/O端口 330
A.1 可移植的I/O端口访问 330
A.2 直接I/O端口访问 331
附录B ladsh源代码 333
附录C GNU通用公共许可证 352
C.1 序言 352
C.2 有关复制、发布和修改的条款和条件 353
C.3 如何将这些条款用到你的新程序 356
词汇表 358