第1章 Linux常用命令 1
1.1 帮助命令 2
1.2 文件系统命令 5
1.3 系统管理常用命令 18
1.4 网络操作常用命令 21
1.5 网络安全常用命令 24
1.6 字符串显示命令 31
1.7 Shell的环境变量 32
1.8 文本编辑器vi/vim 35
1.9 命令行的执行方式 39
1.10 安装rpm形式的软件包 40
1.11 图形化安装软件 41
第2章 shell编程 45
2.1 bash脚本的建立和运行 46
2.1.1 shell命令行 46
2.1.2 bash脚本的建立 46
2.2 shell程序的位置参数与变量 48
2.2.1 shell程序的位置参数 48
2.2.2 环境变量和用户定义变量 51
2.2.3 变量声明和赋值 52
2.2.4 变量引用和引号使用 53
2.2.5 命令替换 55
2.2.6 变量的输入 56
2.3 控制结构语句 57
2.3.1 顺序结构的语句 57
2.3.2 if-then-elif-else-fi语句 57
2.3.3 for语句 62
2.3.4 while语句 65
2.3.5 until语句 67
2.3.6 case语句 68
2.4 其他几个常用语句 71
2.4.1 break和continue语句 71
2.4.2 exit语句 71
2.4.3 printf语句 72
2.5 数值处理 74
2.5.1 let命令 74
2.5.2 $((expression))扩展 75
2.5.3 expr命令 76
2.6 数组 79
2.7 函数 82
2.8 调试脚本程序 85
2.9 综合实例 86
第3章 Linux系统C语言开发工具 104
3.1 第一个Linux环境下的C语言程序 105
3.2 编译C语言程序 106
3.2.1 gcc编译器 106
3.2.2 gcc编译流程 107
3.2.3 gcc编辑器的主要参数 110
3.2.4 函数库 116
3.3 make工程文件 120
3.3.1 make命令 120
3.3.2 make规则 121
3.3.3 编写makefile文件 122
3.3.4 Makefile中的变量 126
3.4 gdb调试工具 130
第4章 Linux环境下系统函数的使用 139
4.1 数学函数的使用 140
4.2 字符函数的使用 143
4.3 系统时间与日期函数的使用 146
4.4 环境控制函数 152
4.5 内存分配函数 155
4.6 数据结构中常用函数 160
第5章 文件I/O操作 168
5.1 Linux系统文件和文件系统 169
5.1.1 Linux文件类型 169
5.1.2 Linux文件权限 171
5.1.3 Linux文件的其他属性 175
5.2 不带缓存的文件I/O操作 179
5.2.1 文件的创建 179
5.2.2 文件的打开和关闭 180
5.2.3 文件的读写操作 182
5.2.4 文件的非阻塞操作 185
5.2.5 函数fcntl应用及文件上锁 188
5.3 带缓存的流文件I/O操作 194
5.3.1 流文件的打开和关闭 194
5.3.2 流文件的读写操作 196
5.3.3 文件的定位 202
5.4 特殊文件的操作 204
5.4.1 目录文件的操作 204
5.4.2 链接文件的操作 209
第6章 进程控制 216
6.1 进程简介 217
6.2 Linux进程控制 218
6.2.1 进程的相关函数 219
6.2.2 进程创建 220
6.2.3 进程终止 227
6.2.4 僵尸进程 229
6.3 Linux进程控制 239
6.3.1 守护进程及其特性 239
6.3.2 编写守护进程的要点 240
6.3.3 守护进程的编写 241
第7章 进程通信 253
7.1 进程间通信 254
7.2 信号 254
7.2.1 信号及其使用简介 255
7.2.2 信号操作的相关函数 257
7.3 管道 267
7.3.1 无名管道操作 268
7.3.2 命名管道 272
7.3.3 高级管道操作 281
7.4 消息队列 284
7.5 共享内存 291
7.5.1 内存映射 291
7.5.2 UNIX System V共享内存 294
第8章 线程 303
8.1 线程概述 304
8.2 线程创建 305
8.3 线程同步与互斥 311
8.3.1 互斥锁 311
8.3.2 条件变量 316
8.3.3 信号量 322
第9章 网络程序设计 330
9.1 TCP/IP简介 331
9.1.1 TCP/IP概述 331
9.1.2 TCP/IP模块结构 331
9.1.3 TCP/UDP传输方式 332
9.2 网络编程 332
9.2.1 端口 332
9.2.2 socket端口 333
9.2.3 socket套接口 333
9.2.4 socket套接口的数据结构 334
9.2.5 基于TCP协议的客户端/服务器程序的常用函数 335
9.2.6 TCP编程 335
9.2.7 UDP编程 352
9.3 网络高级编程 358
第10章 Linux的图形编程 379
10.1 Linux的图形编程简介 380
10.2 安装和使用SDL图形开发库 381
10.3 初始化图形模式 381
10.4 基本绘图函数的应用 387
10.5 图片与文字显示 400
10.6 动画 408
10.7 三维绘图 417
10.8 游戏程序入门 424
第11章 设备驱动程序设计基础 452
11.1 设备驱动程序的概念 453
11.1.1 设备的分类 453
11.2 驱动程序的设计流程 455
11.2.1 字符驱动程序设计流程 455
11.2.2 驱动程序流程设计举例 457
11.3 Linux字符设备驱动程序设计 459
11.3.1 字符设备驱动程序数据结构 459
11.3.2 字符设备驱动程序的基本框架 463
11.4 字符设备驱动程序实例——虚拟字符设备 465
第12章 串行通信 478
12.1 串行通信概述 479
12.1.1 同步通信 479
12.1.2 异步通信 479
12.2 串行通信程序的设计 480
12.2.1 串行通信程序设计流程 480
12.2.2 打开通信端口 481
12.2.3 设置串口属性 482
12.2.4 串口通信程序设计 485
第13章 程序设计实例 494
13.1 Shell程序设计实例 495
13.2 系统函数的应用实例 498
13.3 文件操作 503
13.4 进程控制实例 507
13.5 进程通信 512
13.6 网络程序设计 521
13.7 图形程序设计 536
13.8 驱动程序设计 549
13.9 串口通信程序设计 551
附录 554