第1篇 基 础 篇
第1章 Linux简介以及Shell编程基础( 教学视频:140分钟) 2
1.1 Linux系统概述 2
1.1.1 Linux发展简史 2
1.1.2 Linux系统组成 3
1.1.3 使用Linux的优势 4
1.1.4 Linux的应用领域 4
1.1.5 Linux发行版的种类 5
1.2 图形化界面操作 5
1.2.1 系统登录、注销与关闭系统 6
1.2.2 系统管理 6
1.2.3 操作文件与目录 7
1.3 命令行界面操作 8
1.3.1 系统登录与退出 8
1.3.2 操作文件与目录 9
1.3.3 压缩与解压缩文件 20
1.3.4 常用网络操作 22
1.3.5 用户管理和操作 24
1.3.6 系统管理常见操作 25
1.4 Shell脚本编程基础 30
1.4.1 创建Shell脚本 30
1.4.2 Shell中的特殊字符 31
1.4.3 使用Shell变量 32
1.4.4 条件测试 34
1.4.5 Shell中的结构控制语句 35
1.4.6 定义Shell函数 40
1.5 小结 41
1.6 本章习题 41
第2章 C语言基础( 教学视频:90分钟) 42
2.1 C语言概述 42
2.1.1 C语言的四大特点 42
2.1.2 程序的基本结构 42
2.1.3 程序的开发流程 43
2.2 C语言数据处理 44
2.2.1 数据的表达方式——数据类型 44
2.2.2 常用运算符 46
2.2.3 程序的基础——表达式 48
2.3 语句类型 49
2.3.1 表达式语句 49
2.3.2 选择语句if/switch 49
2.3.3 循环语句for/while/do...while 52
2.3.4 跳转语句goto/continue/break 55
2.3.5 复合语句和空语句 57
2.4 数据的集合--数组 57
2.4.1 使用一维数组 58
2.4.2 使用二维数组和多维数组 59
2.4.3 字符数组和字符串 61
2.5 C语言的预处理 62
2.5.1 宏定义define 62
2.5.2 文件包含include 64
2.5.3 条件编译 65
2.6 小结 66
2.7 本章习题 67
第3章 深入C语言( 教学视频:89分钟) 68
3.1 保存地址值的变量--指针 68
3.1.1 使用指针 68
3.1.2 指针和数组的互换 72
3.1.3 指针的集合——指针数组 74
3.2 函数 76
3.2.1 定义与声明函数 76
3.2.2 调用函数与参数传递 77
3.2.3 变量在函数中的作用域 78
3.2.4 变量的存储类型 80
3.2.5 外部函数和内部函数 82
3.2.6 函数的递归 83
3.2.7 使用函数指针 85
3.3 结构体、共用体和枚举 86
3.3.1 不同类型数据的集合——结构体 86
3.3.2 共用同一内存的数据集合——共用体 91
3.3.3 罗列数据的集合——枚举 92
3.4 小结 94
3.5 本章习题 94
第4章 文本编辑器( 教学视频:80分钟) 95
4.1 使用VI编辑器 95
4.1.1 启动VI 95
4.1.2 切换VI的工作模式 96
4.1.3 保存文件和退出 98
4.1.4 移动光标 99
4.1.5 滚动屏幕 101
4.1.6 输入、删除与修改文本 103
4.1.7 复制与粘贴文本 106
4.1.8 查找与替换文本 108
4.1.9 其他功能 111
4.2 VI高效编辑程序技巧 112
4.2.1 在程序中跳转 112
4.2.2 补全关键字 113
4.2.3 缩进源代码 113
4.3 使用Emacs编辑器 115
4.3.1 启动/退出Emacs 115
4.3.2 打开与保存文件 116
4.3.3 移动光标与滚动屏幕 117
4.3.4 编辑文本 118
4.3.5 查找与替换文本 118
4.3.6 切分窗口 119
4.3.7 使用帮助功能 120
4.4 小结 120
4.5 本章习题 120
第5章 使用GCC编译器( 教学视频:46分钟) 122
5.1 安装GCC 122
5.2 GCC常用选项 122
5.2.1 编译程序 122
5.2.2 设置警告信息 125
5.2.3 设置优化级别 128
5.2.4 设置连接器 129
5.2.5 其他功能选项 132
5.3 小结 133
5.4 本章习题 133
第6章 调试工具( 教学视频:54分钟) 134
6.1 安装GDB 134
6.2 使用GDB 134
6.2.1 启动/退出GDB 134
6.2.2 载入程序 135
6.2.3 列出源代码 135
6.2.4 执行程序 136
6.2.5 使用帮助功能 137
6.3 设置断点与管理断点 138
6.3.1 设置断点 138
6.3.2 查看断点信息 139
6.3.3 删除断点 139
6.3.4 删除指定行上的断点 140
6.3.5 禁用指定的断点 140
6.3.6 设置观察点 140
6.4 显示数据与修改变量值 141
6.4.1 准备示例程序 141
6.4.2 显示变量或表达式的值 142
6.4.3 自动显示变量或表达式的值 143
6.4.4 查看变量的数据类型 144
6.4.5 修改变量的值 144
6.5 执行命令和调用函数 145
6.5.1 单步执行 145
6.5.2 退出被调用的函数 145
6.5.3 执行到指定行 146
6.5.4 跳转执行 146
6.5.5 强制调用函数 147
6.6 其他常用操作 147
6.6.1 查看堆栈信息 147
6.6.2 查看源程序信息 148
6.6.3 查看寄存器 148
6.6.4 查看程序的汇编代码 148
6.7 小结 149
6.8 本章习题 149
第7章 Linux C基本应用( 教学视频:75分钟) 151
7.1 字符串的操作 151
7.1.1 字符判断 151
7.1.2 初始化字符串 153
7.1.3 复制字符串 153
7.1.4 比较字符串 155
7.1.5 查找字符/字符串 157
7.1.6 连接与分割字符串 158
7.2 数据转换 160
7.2.1 字母大小写转换 160
7.2.2 转换字符串 161
7.3 分配与释放内存 163
7.3.1 分配内存 163
7.3.2 释放内存 164
7.3.3 更改已分配内存的大小 165
7.4 时间和日期 165
7.4.1 获取时间和日期 165
7.4.2 时间和日期的格式转换 167
7.4.3 计算时间差 169
7.5 其他应用 169
7.5.1 命令行参数分析 170
7.5.2 获取用户和用户组信息 172
7.5.3 环境变量操作 175
7.6 小结 177
7.7 本章习题 177
第2篇 应 用 篇
第8章 文件系统编程( 教学视频:52分钟) 180
8.1 Linux文件系统简介 180
8.2 使用文件 180
8.2.1 创建或打开文件 180
8.2.2 关闭文件 184
8.2.3 读写文件 184
8.2.4 其他文件操作函数 188
8.3 文件属性操作 190
8.3.1 获取文件属性 190
8.3.2 设置文件属性 194
8.4 目录操作 195
8.4.1 创建目录文件 196
8.4.2 打开和关闭目录 197
8.4.3 读取目录 197
8.4.4 获取和更改当前工作目录 198
8.5 小结 199
8.6 本章习题 199
第9章 标准输入输出( 教学视频:45分钟) 201
9.1 标准输入输出的基本操作 201
9.1.1 打开文件 201
9.1.2 关闭文件 202
9.1.3 清空缓冲区 202
9.1.4 设置缓冲区属性 203
9.2 非格式化输入输出 203
9.2.1 单字节输入输出 204
9.2.2 字符串输入输出 207
9.2.3 数据块输入输出 209
9.3 格式化输入输出 212
9.4 小结 217
9.5 本章习题 217
第10章 进程操作( 教学视频:69分钟) 219
10.1 进程的概念 219
10.1.1 进程的组成 219
10.1.2 进程的状态 220
10.2 Linux进程信息的组成 221
10.2.1 Linux进程的状态 221
10.2.2 进程调度信息 222
10.2.3 进程的标识符 222
10.2.4 进程间通信 223
10.2.5 进程链接信息 223
10.2.6 进程的时间和定时器信息 223
10.2.7 进程的文件系统信息 224
10.2.8 进程的其他信息 224
10.3 Linux C之进程控制 225
10.3.1 使用system()函数创建进程 225
10.3.2 使用管道创建新进程 226
10.3.3 获取进程信息 227
10.3.4 使用fork()函数复制进程 229
10.3.5 使用vfork()和exec()函数创建进程 233
10.3.6 终止进程 236
10.4 守护进程 238
10.4.1 创建守护进程 238
10.4.2 守护进程的输出 241
10.5 小结 243
10.6 本章习题 243
第11章 进程间通信( 教学视频:82分钟) 244
11.1 管道 244
11.1.1 管道如何工作 244
11.1.2 使用匿名管道 244
11.1.3 使用命名管道 248
11.2 信号 252
11.2.1 信号如何工作 252
11.2.2 信号的类型 253
11.2.3 处理信号 254
11.2.4 发送信号 257
11.2.5 使用信号集 261
11.3 消息队列 262
11.3.1 创建或打开消息队列 262
11.3.2 控制消息队列 264
11.3.3 读/写消息队列 265
11.4 信号量 269
11.4.1 创建或打开信号量集 269
11.4.2 控制信号量 270
11.4.3 操作信号量 271
11.5 共享内存 273
11.5.1 创建或打开共享内存 273
11.5.2 读/写共享内存 275
11.6 小结 277
11.7 本章习题 277
第12章 多线程编程( 教学视频:40分钟) 279
12.1 什么是线程 279
12.2 线程的基本操作 280
12.2.1 创建线程 280
12.2.2 合并线程 281
12.2.3 终止线程 282
12.2.4 线程属性 287
12.3 线程的同步 290
12.3.1 使用互斥量 290
12.3.2 使用条件变量 292
12.3.3 使用信号量 295
12.4 小结 297
12.5 本章习题 297
第13章 网络编程( 教学视频:56分钟) 299
13.1 计算机网络基础知识 299
13.1.1 什么是OSI参考模型 299
13.1.2 什么是TCP/IP协议栈 300
13.2 套接字编程基础 301
13.2.1 套接字编程原理 301
13.2.2 创建套接字 302
13.2.3 绑定套接字 303
13.2.4 监听网络端口 304
13.2.5 接收连接请求 305
13.2.6 建立连接 305
13.2.7 面向连接的数据传输 305
13.2.8 面向无连接的数据传输 306
13.2.9 关闭套接字 306
13.3 数据流套接字实例 307
13.3.1 构建服务器端 307
13.3.2 构建客户端 308
13.3.3 调试程序 310
13.4 数据报套接字实例 310
13.4.1 构建服务器端 310
13.4.2 构建客户端 311
13.4.3 调试程序 312
13.5 服务器模型 313
13.5.1 循环服务器 313
13.5.2 并发服务器 314
13.5.3 多路复用I/O并发服务器 316
13.6 域名系统 318
13.6.1 通过域名获取主机信息 318
13.6.2 通过地址获取主机信息 319
13.6.3 获取本地主机信息 320
13.7 小结 320
13.8 本章习题 320
第14章 Linux GUI编程( 教学视频:68分钟) 321
14.1 GTK+/Gnome开发简介 321
14.1.1 第一个GTK+应用程序 321
14.1.2 信号连接回调函数 323
14.2 常用GTK+构件 325
14.2.1 使用容器构件 325
14.2.2 使用按钮构件 329
14.2.3 使用标签构件 332
14.2.4 使用文本及文本输入构件 333
14.2.5 使用进度条构件 337
14.2.6 使用组合框 340
14.2.7 使用对话框 343
14.3 GUI生成器Glade 348
14.3.1 Glade软件界面 348
14.3.2 创建应用程序界面 349
14.3.3 C语言代码联编 350
14.4 小结 352
14.5 本章习题 352
第3篇 案 例 篇
第15章 客户端/服务器端程序( 教学视频:15分钟) 354
15.1 服务器端程序设计 354
15.2 客户端程序设计 358
15.2.1 字符界面客户端程序 358
15.2.2 图形界面客户端程序 360
15.3 小结 363