第1章 简介
1.1 什么是系统编程
1.1.1 需要的背景知识
1.1.2 为什么要用Unix
1.1.3 为什么要使用C
1.2 三个工具
1.2.1 外壳程序
1.2.2 文本编辑器
1.2.3 调试器
1.2.4 集成开发环境(IDE)
1.3 如何进行调试
1.3.1 程序崩溃
1.3.2 程序卡在无限循环中
1.3.3 程序运行中出错
1.3.4 循环动作不正确
1.4 程序开发
1.5 C语言回顾
1.5.1 基本数据类型
1.5.2 基本算术
1.5.3 循环
.1.5.4 条件语句和复合语句
1.5.5 流程控制
问题与练习
第2章 位、字节和数据类型
2.1 位模式
2.1.1 纯数字位模式
2.1.2 符号数字位模式
2.1.3 二进制补码位模式
2.1.4 浮点位模式
2.1.5 ASCII和Unicode位模式
2.1.6 位模式小结
2.2 按位运算
2.2.1 二元逻辑运算
2.2.2 位运算符
2.2.3 位掩码运算
2.3 内存映像
问题和练习
第3章 数组和字符串
3.1 数组
3.2 字符串
3.3 字符串库函数
3.3.1 字符串长度:strlen()
3.3.2 字符串比较:strcmp()
3.3.3 字符串复制:strcpy()
3.3.4 字符串连接:strcat()
3.3.5 字符串打印:sprintf()
3.3.6 字符串函数示例
3.3.7 非库问题
3.4 命令行参数
问题与练习
第4章 指针和结构
4.1 指针
4.2 使用指针
4.2.1 从函数中回传值
4.2.2 指针和数组
4.2.3 动态内存分配
4.2.4 二级指针
4.3 结构
4.4 使用结构
4.4.1 数组和结构
4.4.2 定义和范围
4.4.3 嵌套结构
4.4.4 指针和结构
问题与练习
第5章 输入/输出
5.1 流
5.1.1 在流中传输字节
5.1.2 系统I/O函数
5.1.3 标准流
5.2 缓冲区
5.3 管道
5.3.1 管道链接(pipeline chaining)
5.3.2 程序测试
5.4 文件
5.4.1 文件指针
5.4.2 文件属性
5.4.3 目录
5.5 设备
问题与练习
第6章 程序管理
6.1 程序建立
6.1.1 目标代码和链接
6.1.2 编译
6.1.3 生成文件(Makefiles)
6.1.4 其他建立工具
6.2 代码组织
6.2.1 函数
6.2.2 多个文件
6.2.3 变量的作用域
6.2.4 注释、缩进和变量名
6.2.5 预处理
6.2.6 类型定义(Typedefs)
6.2.7 讨论
6.3 程序分派方法
6.3.1 档案
6.3.2 软件包
问题与练习
第7章 系统调用
7.1 操作的种类(Families of Operations)
7.2 库和系统调用
7.3 进程系统调用
7.3.1 进程
7.3.2 fork()
7.3.3 exec()类
7.3.4 wait()
7.4 信号系统调用
7.4.1 signal()
7.4.2 kill()
7.5 套接字系统调用
7.5.1 网络概念和系统命令
7.5.2 客户/服务器模型(Client-Server Model)
7.5.3 示例
问题与练习
第8章 库
8.1 使用库
8.1.1 头文件
8.1.2 库文件
8.2 库的目的
8.3 C标准库
8.4 curses库
8.4.1 I/O控制
8.4.2 动态图形
8.5 X库
8.5.1 窗口
8.5.2 二维图形
8.5.3 图形特征
8.5.4 用户输入
8.5.5 字体
8.6 生成一个库
8.7 使用库时易犯的错误
问题与练习
第9章 脚本语言
9.1 使用脚本语言
9.2 外壳脚本编程
9.2.1 输入/输出
9.2.2 变量
9.2.3 循环
9.2.4 条件语句
9.2.5 外壳外部程序
9.2.6 其他功能
9.3 Perl
9.3.1 输入/输出
9.3.2 变量
9.3.3 循环和条件
9.3.4 模式替换(Pattern Subtitution)
9.3.5 其他功能
9.4 MATLAB
9.4.1 输入/输出
9.4.2 变量
9.4.3 循环和条件
9.4.4 内置的数学函数
9.4.5 绘图
9.4.6 其他功能
9.5 讨论
问题与练习
附录A ASCII表
附录B 常用外壳程序命令
附录C 系统程序