第1章 Linux常用命令 1
1.1 帮助命令 2
1.2 文件系统命令 4
1.3 系统管理常用命令 19
1.4 网络操作常用命令 22
1.5 网络安全常用命令 25
1.6 字符串显示命令 32
1.7 Shell的环境变量 34
1.8 文本编辑器vi/vim 37
1.9 命令行的执行方式 41
1.10 安装rpm形式的软件包 42
1.11 图形化安装软件 43
思考与实验 44
第2章 Shell编程 47
2.1 Bash脚本的建立和运行 48
2.1.1 Shell命令行 48
2.1.2 Bash脚本的建立 48
2.2 Shell程序的位置参数与变量 50
2.2.1 Shell程序的位置参数 51
2.2.2 环境变量和用户定义变量 54
2.2.3 变量声明和赋值 54
2.2.4 变量引用和单双引号使用 56
2.2.5 命令替换 57
2.2.6 变量的输入 57
2.3 控制结构语句 58
2.3.1 顺序结构的语句 59
2.3.2 if-then-elif-else-fi语句 59
2.3.3 for语句 64
2.3.4 while语句 68
2.3.5 until语句 70
2.3.6 case语句 71
2.4 其他几个常用语句 75
2.4.1 break和continue语句 75
2.4.2 exit语句 75
2.4.3 printf语句 76
2.5 数值处理 77
2.5.1 let命令 78
2.5.2 $((expression))扩展 78
2.5.3 expr命令 80
2.6 数 组 82
2.7 函 数 86
2.8 综合实例 89
思考与实验 101
第3章 Linux系统C语言开发工具 104
3.1 第一个Linux环境下的C语言程序 105
3.2 编译C语言程序 106
3.2.1 gcc编译器 106
3.2.2 gcc编译流程 108
3.2.3 gcc编辑器的主要参数 111
3.2.4 函数库 116
3.3 make工程文件 121
3.3.1 make命令 121
3.3.2 make规则 122
3.3.3 编写makefile文件 123
3.3.4 Makefile 中的变量 127
3.4 gdb调试工具 130
思考与实验 137
第4章 Linux环境下系统函数的使用 140
4.1 数学函数的使用 141
4.2 字符函数的使用 144
4.3 系统时间与日期函数的使用 147
4.4 环境控制函数 154
4.5 内存分配函数 156
4.6 数据结构中常用函数 162
思考与实验 166
第5章 文件I/O操作 170
5.1 Linux系统文件和文件系统 171
5.1.1 Linux文件类型 171
5.1.2 Linux文件权限 174
5.1.3 Linux文件的其他属性 177
5.2 不带缓存的文件I/O操作 181
5.2.1 文件的创建 181
5.2.2 文件的打开和关闭 182
5.2.3 文件的读写操作 184
5.2.4 文件的非阻塞操作 187
5.2.5 函数fcntl应用及文件上锁 190
5.3 带缓存的流文件I/O操作 195
5.3.1 流文件的打开和关闭 196
5.3.2 流文件的读写操作 198
5.3.3 文件的定位 203
5.4 特殊文件的操作 206
5.4.1 目录文件的操作 206
5.4.2 链接文件的操作 210
思考与实验 213
第6章 进程控制 217
6.1 进程简介 218
6.2 Linux进程控制 219
6.2.1 进程的相关函数 221
6.2.2 进程创建 221
6.2.3 进程终止 228
6.2.4 僵尸进程 230
6.3 Linux守护进程 240
6.3.1 守护进程及其特性 240
6.3.2 编写守护进程的要点 241
6.3.3 守护进程的编写 242
思考与实验 252
第7章 进程通信 253
7.1 进程间通信 255
7.2 信号 256
7.2.1 信号及其使用简介 256
7.2.2 信号操作的相关函数 258
7.3 管道 270
7.3.1 无名管道操作 271
7.3.2 命名管道 275
7.3.3 高级管道操作 284
7.4 消息队列 289
7.5 共享内存 297
7.5.1 内存映射 298
7.5.2 UNIX System V共享内存 301
思考与实验 310
第8章 线程 314
8.1 线程概述 315
8.2 线程创建 316
8.3 线程同步与互斥 322
8.3.1 互斥锁 323
8.3.2 条件变量 332
8.3.3 信号量 342
思考与实验 351
第9章 网络程序设计 356
9.1 TCP/IP简介 357
9.1.1 TCP/IP概述 357
9.1.2 TCP/IP模块结构 357
9.1.3 TCP/UDP传输方式 358
9.2 网络编程 358
9.2.1 端 口 358
9.2.2 socket端口 359
9.2.3 socket套接口 359
9.2.4 socket套接口的数据结构 360
9.2.5 基于TCP协议的客户端/服务器程序的常用函数 361
9.2.6 TCP编程 361
9.2.7 UDP编程 379
9.3 网络高级编程 385
思考与实验 396
第10章 Linux的图形编程 408
10.1 Linux的图形编程简介 409
10.2 安装和使用SDL图形开发库 410
10.3 初始化图形模式 410
10.4 基本绘图函数的应用 416
10.5 图片与文字显示 429
10.6 动画程序设计 437
10.7 三维绘图 447
10.8 游戏程序设计初步 454
思考与实验 463
第11章 设备驱动程序设计基础 482
11.1 设备驱动程序的概念 483
11.2 驱动程序的设计流程 485
11.2.1 字符驱动程序设计流程 485
11.2.2 驱动程序流程设计举例 486
11.3 Linux字符设备驱动程序设计 489
11.3.1 字符设备驱动程序数据结构 489
11.3.2 字符设备驱动程序的基本框架 493
11.4 字符设备驱动程序实例——虚拟字符设备 494
思考与实验 500
第12章 串行通信 508
12.1 串行通信概述 509
12.1.1 同步通信 509
12.1.2 异步通信 509
12.2 串行通信程序的设计 510
12.2.1 串行通信程序设计流程 510
12.2.2 打开通信端口 511
12.2.3 设置串口属性 512
12.2.4 串口通信程序设计 515
思考与实验 521
第13章 程序设计实例 524
13.1 Shell程序设计实例 525
13.2 系统函数的应用实例 528
13.3 文件操作 533
13.4 进程控制实例 537
13.5 进程通信 541
13.6 网络程序设计 551
13.7 图形程序设计 566
13.8 驱动程序设计 580
13.9 串口通信程序设计 582
附录 585