前言
第1章 Linux编程基础
1.1 编程基础
1.1.1 C语言的历史
1.1.2 vi简介
1.1.3 gcc的安装与启用
1.2 Unux下C程序的开发步骤
1.2.1 设计程序和编写源代码
1.2.2 编译源代码
1.2.3 运行
1.2.4 调试
1.2.5 修改与维护
1.3 小结
第2章 从C到C++
2.1 C++基础知识
2.1.1 C++语言介绍
2.1.2 C++程序的基本结构
2.1.3 编译与运行
2.2 类
2.2.1 类的概念
2.2.2 构造函数和析构函数
2.2.3 类成员
2.2.4 友员、嵌套与结构
2.3 派生
2.3.1 派生类
2.3.2 访问基类中的成员
2.3.3 多继承
2.4 小结
第3章 Linux开发环境
3.1 Linux下开发环境
3.1.1 Linux下开发环境简介
3.1.2 集成开发环境
3.2 集成软件开发环境WipeOut
3.2.1 WipeOut的组件和特性
3.2.2 版本浏览器
3.2.3 WipeOut的所见即所得
3.2.4 版本控制
3.2.5 编辑器
3.2.6 语法醒目性
3.2.7 Make-Shell
3.2.8 调试器
3.2.9 编写自己的WipeOut组件
3.3 小结
第4章 Linux符号调试器gdb
4.1 gdb介绍
4.2 gdb使用
4.2.1 gdb基本命令
4.2.2 启动方式
4.2.3 命令说明
4.2.4 运行gdb的详细说明
4.2.5 gdb调试步骤
4.2.6 模式的选择
4.2.7 退出gdb
4.2.8 Shell命令
4.2.9 Command语法
4.2.10 输入的技巧
4.2.11 得到帮助
4.2.12 在gdb下运行程序
4.2.13 停止和继续
4.2.14 断点、观察点和异常
4.3 简单实例
4.4 小结
第5章 开发工具GNU make
5.1 make简介
5.2 多文件项目
5.2.1 为什么分解项目
5.2.2 什么时候分解项目
5.2.3 如何分解项目
5.2.4 对于常见错误的注释
5.2.5 重新编译多文件项目
5.3 GNU make工具
5.3.1 基本makefile结构
5.3.2 编写make规则
5.3.3 makefile变量
5.3.4 隐含规则
5.3.5 假象目的
5.3.6 函数
5.3.7 makefile实例
5.4 GNU automake
5.4.1 开始之前
5.4.2 简单的例子
5.4.3 深入了解
5.4.4 通用性概念
5.4.5 实例软件包
5.4.6 编辑configure.in文件
5.4.7 编辑makefile.am文件
5.4.8 使用makefile
5.5 小结
第6章 gawk开发
6.1 gawk介绍
6.2 初识gawk
6.2.1 基本格式
6.2.2 执行方法
6.3 gawk脚本
6.3.1 gawk内部变量
6.3.2 分解输入
6.3.3 字段
6.3.4 将记录分解成字段
6.4 打印输出
6.4.1 print打印
6.4.2 输出分隔
6.4.3 printf打印
6.5 gawk模式
6.6 控制结构
6.7 内部函数
6.7.1 数值方面的内部函数
6.7.2 字符串方面的内部函数
6.7.3 输入输出的内部函数
6.8 自定义的函数
6.8.1 函数定义的格式
6.8.2 函数定义的例子
6.9 几个实例
6.10 小结
第7章 深入认识Linux系统
7.1 Linux系统
7.2 Linux系统内核
7.3 登录login
7.3.1 init进程
7.3.2 登录过程
7.4 文件系统
7.4.1 根文件系统
7.4.2 /etc目录
7.4.3 /dev目录
7.4.4 /usr文件系统
7.4.5 /var文件系统
7.4.6 /proc文件系统
7.5 程序和进程
7.6 用户标识
7.7 信号
7.8 系统中的时间
7.8.1 硬件时钟和软件时钟
7.8.2 显示和设置时钟
7.8.3 时钟错误
7.9 系统调用
7.10 小结
第8章 文件和目录
8.1 文件和目录介绍
8.2 获取信息节点
8.3 文件类型
8.4 文件访问权限
8.5 access函数
8.6 umask函数
8.7 改变访问权限
8.8 改变所有者
8.9 Linux文件系统
8.10 链接、删除和重命名
8.11 符号链接
8.12 文件时间及utime函数
8.13 创建和删除目录
8.14 读取目录
8.15 目录操作函数
8.16 小结
第9章 Linux进程控制
9.1 产生子进程
9.2 程序分解
9.3 程序分解实例
9.3.1 fork实例一
9.3.2 fork实例二
9.3.3 fork实例三
9.3.4 fork实例四
9.4 线程
9.5 线程实例
9.6 信号
9.7 Signals实例
9.8 小结
第10章 多线程编程
10.1 多线程编程简介
10.1.1 线程基础
10.1.2 定义多线程术语
10.1.3 多进程程序的特点
10.2 多进程编程技巧
10.2.1 主要程序结构
10.2.2 选择主体分叉点
10.2.3 进程间关系处理
10.3 多线程的益处
10.4 多线程编程
10.4.1 线程函数库
10.4.2 创建线程
10.4.3 获取线程号
10.4.4 放弃执行
10.4.5 挂起或继续执行线程
10.4.6 向线程发信号
10.4.7 设置本线程的信号掩码
10.4.3 终止线程
10.4.9 等待线程结束
10.4.10 简单的例程
10.4.11 维护线程专有数据
10.4.12 高级特性
10.5 使用同步对象编程
10.5.1 互斥锁
10.5.2 条件变量
10.5.3 多读单写锁
10.5.4 信号量
10.5.5 进程间同步
10.5.6 同步原语的比较
10.6 编译和调试
10.6.1 编译多线程应用程序
10.6.2 调试多线程应用程序
10.7 编程指南
10.7.1 重新认识全局变量
10.7.2 静态局部变量
10.7.3 线程同步
10.7.4 避免死锁
10.7.5 基本注意事项
10.7.6 关于多处理器
10.8 常用多线程系统函数
10.9 小结
第11章 Linux进程间通信
11.1 半双工管道
11.1.1 用C语言创建管道
11.1.2 使用管道
11.1.3 原子操作
11.2 命名管道(FIFOs)
11.2.1 创建命名管道
11.2.2 操作命名管道
11.2.3 阻塞动作
11.2.4 SIGPIPE信号
11.3 进程间通信
11.3.1 IPC标识符
11.3.2 IPC键(key)
11.3.3 ipcs命令
11.3.4 ipcrm命令
11.4 消息队列
11.4.1 内部数据结构
11.4.2 消息队列的系统函数
11.4.3 msgtool的实例
11.5 信号
11.5.1 内部数据结构
11.5.2 信号系统函数
11.5.3 信号集实例
11.6 内存共享
11.7 小结
第12章 Linux网络编程基础
12.1 socket基本概念
12.2 端口和socket
12.3 socket程序设计
12.4 进程间通信
12.5 网络理论
12.6 小结