第1章 入门
1.1 UNIX、Linux和GNU简介
1.2 Linux程序设计
1.3 获得帮助
1.4 小结
第2章 shell程序设计
2.1 为什么使用shell编程
2.2 一点哲学
2.3 什么是shell
2.4 管道和重定向
2.5 作为程序设计语言的shell
2.6 shell的语法
2.7 迈向图形化:dialog工具
2.8 综合应用
2.9 小结
第3章 文件操作
3.1 Linux文件结构
3.2 系统调用和设备驱动程序
3.3 库函数
3.4 底层文件访问
3.5 标准I/O库
3.6 格式化输入和输出
3.7 文件和目录的维护
3.8 扫描目录
3.9 错误处理
3.10 /proc文件系统
3.11 高级主题:fcntl和mmap
3.12 小结
第4章 Linux环境
4.1 程序参数
4.2 环境变量
4.3 时间和日期
4.4 临时文件
4.5 用户信息
4.6 主机信息
4.7 日志
4.8 资源和限制
4.9 小结
第5章 终端
5.1 对终端进行读写
5.2 与终端进行对话
5.3 终端驱动程序和通用终端接口
5.4 termios结构
5.5 终端的输出
5.6 检测击键动作
5.7 虚拟控制台
5.8 伪终端
5.9 小结
第6章 使用curses函数库管理基于文本的屏幕
6.1 用curses函数库进行编译
6.2 基本概念
6.3 初始化和重置函数
6.4 输出到屏幕
6.5 从屏幕读取
6.6 清除屏幕
6.7 移动光标
6.8 字符属性
6.9 键盘
6.10 窗口
6.11 子窗口
6.12 keypad模式
6.13 彩色显示
6.14 pad
6.15 CD唱片应用程序
6.16 小结
第7章 数据管理
7.1 内存管理
7.2 文件锁定
7.3 数据库
7.4 CD唱片应用程序
7.5 小结
第8章 MySQL
8.1 安装
8.2 MySQL管理
8.3 使用C语言访问MySQL数据
8.4 CD数据库应用程序
8.5 小结
第9章 开发工具
9.1 多个源文件带来的问题
9.2 make命令和makefile文件
9.3 源代码控制
9.4 编写使用手册
9.5 发行软件
9.6 RPM软件包
9.7 其他软件包格式
9.8 开发环境
9.9 小结
第10章 调试
10.1 错误类型
10.2 常用调试技巧
10.3 使用gdb进行调试
10.4 其他调试工具
10.5 断言
10.6 内存调试
10.7 小结
第11章 进程和信号
11.1 什么是进程
11.2 进程的结构
11.3 启动新进程
11.4 信号
11.5 小结
第12章 POSIX线程
12.1 什么是线程
12.2 第一个线程程序
12.3 同时执行
12.4 同步
12.5 线程的属性
12.6 取消一个线程
12.7 多线程
12.8 小结
第13章 进程间通信:管道
13.1 什么是管道
13.2 进程管道
13.3 将输出送往popen
13.4 pipe调用
13.5 父进程和子进程
13.6 命名管道:FIFO
13.7 CD数据库应用程序
13.8 小结
第14章 信号量、共享内存和消息队列
14.1 信号量
14.2 共享内存
14.3 消息队列
14.4 CD数据库应用程序
14.5 IPC状态命令
14.6 小结
第15章 套接字
15.1 什么是套接字
15.2 套接字连接
15.3 网络信息
15.4 多客户
15.5 数据报
15.6 小结
第16章 用GTK+进行GNOME编程
16.1 X窗口系统简介
16.2 GTK+简介
16.3 事件、信号和回调函数
16.4 包装盒
16.5 GTK+窗口部件
16.6 GNOME窗口部件
16.7 GNOME菜单
16.8 对话框
16.9 CD数据库应用程序
16.10 小结
第17章 用Qt进行KDE编程
17.1 KDE和Qt简介
17.2 安装Qt
17.3 信号和槽
17.4 Qt 窗口部件
17.5 对话框
17.6 菜单和工具栏
17.7 使用KDE/Qt编写CD数据库应用程序
17.8 小结
第18章 设备驱动程序
18.1 编写设备驱动程序
18.2 设备
18.3 字符设备
18.4 字符设备驱动程序示例:schar
18.5 时间和jiffies
18.6 内存管理
18.7 I/O端口
18.8 块设备
18.9 调试
18.10 可移植性
18.11 内核源代码剖析
18.12 小结
第19章 Linux标准
19.1 C编程语言
19.2 接口和LSB
19.3 文件系统层次标准
19.4 进一步学习标准
19.5 小结