第1章 Linux基础 1
1.1 Linux的起源、发展和分类 1
1.1.1 Linux的起源、特点和版本号 1
1.1.2 Linux的结构 4
1.1.3 Linux操作系统的分类 6
1.1.4 Linux中的几个术语 11
1.2 Linux的Shell 13
1.2.1常见的Shell 13
1.2.2 Shell和终端 14
1.2.3 Shell的工作方式 14
1.2.4 Shell的启动 15
1.3 Shell的使用基础 15
1.3.1 Shell命令的标准格式 15
1.3.2 Shell的通配符 16
1.3.3 Shell中的引号 18
1.3.4 Shell中的注释符 19
1.4 Linux的常用命令 20
1.4.1文件操作命令 20
1.4.2目录操作命令 32
1.4.3其他常用命令 37
第2章 在Linux中编写C语言代码 45
2.1 Linux中C语言程序开发流程和工具介绍 45
2.1.1 C语言程序开发流程 45
2.1.2 C语言的开发工具 46
2.2 Linux中的C语言编译器gcc 46
2.2.1 gcc的安装 46
2.2.2 gcc的使用 47
2.3 Linux中的代码编辑器vim 51
2.3.1启动与退出vim 51
2.3.2 vim的命令行模式 53
2.3.3 vim的插入模式 56
2.3.4 vim的底行模式 56
2.3.5 vim的应用实例 57
2.4 Linux中的调试环境gdb 59
2.4.1 gdb功能简介 60
2.4.2 gdb的调用 60
2.4.3 gdb运行模式的选择 62
2.4.4 gdb应用实例 63
第3章 Linux编程进阶 64
3.1 Linux如何执行一个程序 64
3.2 Linux的程序存储空间 66
3.3 Linux C的mam函数 67
3.4 Linux的出错处理 69
3.5 Linux C的标准输入和输出函数 73
3.5.1标准输出函数printf 73
3.5.2标准输入函数scanf 75
3.5.3标准输入/输出函数应用实例 76
3.6 Linux C的内存分配 77
3.7 Linux C的系统调用和库函数 78
3.8 Linux库函数的说明和应用实例 86
3.8.1平方根函数 87
3.8.2随机数产生函数 88
3.8.3大小写字母测试函数 89
3.8.4系统时间和日期函数 90
3.8.5系统登录用户名操作函数 94
3.8.6单字符输出函数 96
3.8.7求“不大于”整数函数 97
3.8.8“拆分”浮点数函数 98
3.8.9字符串转换函数 99
3.8.10字符串复制函数 101
3.8.11字符串长度计算函数 102
3.8.12字符串连接函数 103
3.8.13字符串复制函数 104
3.8.14字符串比较函数 106
3.8.15 字符串查找函数 107
3.8.16内存分配函数 109
3.8.17内存映射函数 110
第4章 Linux的文件编程 114
4.1 Linux文件系统简介 114
4.1.1 Linux文件系统基础 115
4.1.2 Linux文件类型介绍 120
4.2 Linux的基本文件操作函数 124
4.2.1打开文件函数 124
4.2.2关闭文件函数 127
4.2.3创建文件函数 129
4.2.4写文件函数 130
4.2.5文件偏移定位函数 131
4.2.6 读文件函数 134
4.3 Linux的高级文件操作函数 136
4.3.1文件状态操作函数 136
4.3.2时间相关函数 138
4.3.3文件的访问权限说明 141
4.3.4测试文件访问权限函数 142
4.3.5 umask函数 144
4.3.6 chmod函数和fchmod函数 146
4.3.7 rename函数 148
4.3.8文件的其他高级操作函数 150
4.4目录文件操作 155
4.4.1 mkdir和rmdir函数 155
4.4.2 chdir、fchdir和getcmd函数 158
4.4.3 opendir、closedir和readdir函数 160
第5章 Linux的流编程 166
5.1 Linux流操作的基础 166
5.1.1流和文件的关系 166
5.1.2流的结构和操作流程 168
5.1.3标准流介绍 169
5.2流的打开和关闭 169
5.3流的缓冲方式和缓冲区设置 172
5.3.1流的缓冲方式 172
5.3.2流的缓冲区设置方式 175
5.4流的读写 178
5.4.1字符读写 178
5.4.2行读写 180
5.4.3二进制读写 182
5.4.4流的出错处理 185
5.4.5流的冲洗 186
5.5流的定位 187
5.5.1 ftell和fseek函数 187
5.5.2 ftello和fseeko函数 189
5.5.3 fgetpos和fsetpos函数 190
5.6流的格式化输出和输入 191
5.6.1格式化输出 192
5.6.2格式化输入 192
5.6.3格式化参数 193
5.6.4格式化输入输出应用实例 197
5.7临时文件 198
第6章 Linux的进程 202
6.1 Linux进程基础 202
6.1.1 Linux进程及其执行过程 202
6.1.2 Linux进程的描述符和标识符 205
6.1.3 Linux进程的用户 208
6.1.4 Linux进程的调度 209
6.1.5 Linux中进程执行的流程 209
6.2 Linux的进程控制 210
6.2.1进程的创建 211
6.2.2进程的执行 220
6.2.3进程的退出 227
6.2.4进程的销毁 229
6.3 Linux进程的其他操作 234
6.3.1更改用户ID和组ID 234
6.3.2进程组、会话和特性 236
6.3.3 system函数 241
6.3.4进程会计 243
6.3.5进程时间 245
第7章 Linux的线程 251
7.1 Linux线程基础 251
7.1.1线程的运行方式 251
7.1.2线程的标识符 252
7.1.3用户态线程和核心态线程 253
7.1.4编译带线程的代码 253
7.2线程的操作 254
7.2.1线程的创建 254
7.2.2线程的退出 256
7.2.3线程的阻塞 258
7.2.4线程的取消和清理 261
7.2.5线程分离 265
7.2.6函数比较 266
7.3线程的私有数据处理 267
7.3.1创建键函数 267
7.3.2取消键关联函数 268
7.3.3解决键冲突函数 268
7.3.4键关联函数 268
7.3.5线程私有数据地址获取函数 269
7.3.6私有数据处理应用实例 269
7.4线程的属性 271
7.4.1线程属性对象的初始化和销毁函数 271
7.4.2线程堆栈大小相关函数 272
7.4.3线程堆栈地址函数 272
7.4.4线程的拆卸状态函数 272
7.4.5线程的作用域函数 273
7.4.6线程的继承调度函数 273
7.4.7线程的调度策略函数 274
7.4.8线程的调度参数函数 274
7.4.9线程属性应用实例 275
7.5线程的同步方式 277
7.5.1互斥锁 277
7.5.2条件变量 281
第8章 Linux的信号和进程间通信 287
8.1 Linux的进程通信和信号基础 287
8.1.1 Linux的进程通信 287
8.1.2信号机制和信号 288
8.1.3信号的工作方式 290
8.1.4 Linux中的信号说明 291
8.1.5信号的注册 294
8.1.6可重入函数 303
8.2信号的基础操作 305
8.2.1发送信号 305
8.2.2信号的定时 311
8.2.3进程退出信号 314
8.3 Linux的信号集 315
8.4信号的阻塞和挂起 317
第9章 Linux的管道、命名管道和进程间通信 320
9.1 Linux的管道基础 320
9.1.1管道的基本概念 320
9.1.2管道的实现方法 321
9.1.3管道读写操作规则 323
9.1.4管道的特点 323
9.2 Linux的管道操作 324
9.2.1管道的创建和应用 324
9.2.2管道的高级操作函数 333
9.3 Linux命名管道基础 335
9.3.1使用命名管道 336
9.3.2命名管道的常用工作方式 337
9.3.3命名管道的打开和读写 339
9.4 Linux命名管道的操作 341
9.4.1命名管道的创建 341
9.4.2命名管道的读写 342
第10章 Linux的System V IPC进程通信 347
10.1 Linux的System V IPC进程通信基础 347
10.1.1 System V IPC的操作函数 347
10.1.2 System V IPC的标识符和关键字 348
10.1.3 ipc_perm的结构和权限 350
10.1.4创建System V IPC对象过程 352
10.1.5 System V IPC的缺点 352
10.1.6 System V IPC的操作命令 354
10.2消息队列 355
10.2.1消息队列基础 355
10.2.2创建消息队列 357
10.2.3消息队列的发送和接收 359
10.2.4消息队列的控制 364
10.3信号量 367
10.3.1信号量基础 368
10.3.2信号量的相关函数 370
10.3.3信号量的应用 374
10.4共享内存 377
10.4.1共享内存基础 377
10.4.2共享内存的相关操作 378
10.4.3共享内存的应用实例 382