# 部分 III. Linux系统编程
**目录**
+ [28\. 文件与I/O](ch28.html)
+ [1\. 汇编程序的Hello world](ch28s01.html)
+ [2\. C标准I/O库函数与Unbuffered I/O函数](ch28s02.html)
+ [3\. open/close](ch28s03.html)
+ [4\. read/write](ch28s04.html)
+ [5\. lseek](ch28s05.html)
+ [6\. fcntl](ch28s06.html)
+ [7\. ioctl](ch28s07.html)
+ [8\. mmap](ch28s08.html)
+ [29\. 文件系统](ch29.html)
+ [1\. 引言](ch29s01.html)
+ [2\. ext2文件系统](ch29s02.html)
+ [2.1\. 总体存储布局](ch29s02.html#id2857323)
+ [2.2\. 实例剖析](ch29s02.html#id2858019)
+ [2.3\. 数据块寻址](ch29s02.html#id2859212)
+ [2.4\. 文件和目录操作的系统函数](ch29s02.html#id2859394)
+ [3\. VFS](ch29s03.html)
+ [3.1\. 内核数据结构](ch29s03.html#id2860264)
+ [3.2\. dup和dup2函数](ch29s03.html#id2860911)
+ [30\. 进程](ch30.html)
+ [1\. 引言](ch30s01.html)
+ [2\. 环境变量](ch30s02.html)
+ [3\. 进程控制](ch30s03.html)
+ [3.1\. fork函数](ch30s03.html#id2866212)
+ [3.2\. exec函数](ch30s03.html#id2866732)
+ [3.3\. wait和waitpid函数](ch30s03.html#id2867242)
+ [4\. 进程间通信](ch30s04.html)
+ [4.1\. 管道](ch30s04.html#id2867812)
+ [4.2\. 其它IPC机制](ch30s04.html#id2868153)
+ [5\. 练习:实现简单的Shell](ch30s05.html)
+ [31\. Shell脚本](ch31.html)
+ [1\. Shell的历史](ch31s01.html)
+ [2\. Shell如何执行命令](ch31s02.html)
+ [2.1\. 执行交互式命令](ch31s02.html#id2872017)
+ [2.2\. 执行脚本](ch31s02.html#id2872211)
+ [3\. Shell的基本语法](ch31s03.html)
+ [3.1\. 变量](ch31s03.html#id2872666)
+ [3.2\. 文件名代换(Globbing):* ? []](ch31s03.html#id2872839)
+ [3.3\. 命令代换:`或 $()](ch31s03.html#id2872936)
+ [3.4\. 算术代换:$(())](ch31s03.html#id2872971)
+ [3.5\. 转义字符\](ch31s03.html#id2873001)
+ [3.6\. 单引号](ch31s03.html#id2873083)
+ [3.7\. 双引号](ch31s03.html#id2873112)
+ [4\. bash启动脚本](ch31s04.html)
+ [4.1\. 作为交互登录Shell启动,或者使用--login参数启动](ch31s04.html#id2873231)
+ [4.2\. 以交互非登录Shell启动](ch31s04.html#id2873387)
+ [4.3\. 非交互启动](ch31s04.html#id2873571)
+ [4.4\. 以sh命令启动](ch31s04.html#id2873616)
+ [5\. Shell脚本语法](ch31s05.html)
+ [5.1\. 条件测试:test [](ch31s05.html#id2873722)
+ [5.2\. if/then/elif/else/fi](ch31s05.html#id2874121)
+ [5.3\. case/esac](ch31s05.html#id2874366)
+ [5.4\. for/do/done](ch31s05.html#id2874526)
+ [5.5\. while/do/done](ch31s05.html#id2874637)
+ [5.6\. 位置参数和特殊变量](ch31s05.html#id2874685)
+ [5.7\. 函数](ch31s05.html#id2874943)
+ [6\. Shell脚本的调试方法](ch31s06.html)
+ [32\. 正则表达式](ch32.html)
+ [1\. 引言](ch32s01.html)
+ [2\. 基本语法](ch32s02.html)
+ [3\. sed](ch32s03.html)
+ [4\. awk](ch32s04.html)
+ [5\. 练习:在C语言中使用正则表达式](ch32s05.html)
+ [33\. 信号](ch33.html)
+ [1\. 信号的基本概念](ch33s01.html)
+ [2\. 产生信号](ch33s02.html)
+ [2.1\. 通过终端按键产生信号](ch33s02.html#id2884244)
+ [2.2\. 调用系统函数向进程发信号](ch33s02.html#id2884400)
+ [2.3\. 由软件条件产生信号](ch33s02.html#id2884567)
+ [3\. 阻塞信号](ch33s03.html)
+ [3.1\. 信号在内核中的表示](ch33s03.html#id2884694)
+ [3.2\. 信号集操作函数](ch33s03.html#id2884876)
+ [3.3\. sigprocmask](ch33s03.html#id2885022)
+ [3.4\. sigpending](ch33s03.html#id2885205)
+ [4\. 捕捉信号](ch33s04.html)
+ [4.1\. 内核如何实现信号的捕捉](ch33s04.html#id2885289)
+ [4.2\. sigaction](ch33s04.html#id2885439)
+ [4.3\. pause](ch33s04.html#id2885627)
+ [4.4\. 可重入函数](ch33s04.html#id2885983)
+ [4.5\. sig_atomic_t类型与volatile限定符](ch33s04.html#id2886197)
+ [4.6\. 竞态条件与sigsuspend函数](ch33s04.html#id2886686)
+ [4.7\. 关于SIGCHLD信号](ch33s04.html#id2887260)
+ [34\. 终端、作业控制与守护进程](ch34.html)
+ [1\. 终端](ch34s01.html)
+ [1.1\. 终端的基本概念](ch34s01.html#id2890359)
+ [1.2\. 终端登录过程](ch34s01.html#id2891132)
+ [1.3\. 网络登录过程](ch34s01.html#id2891618)
+ [2\. 作业控制](ch34s02.html)
+ [2.1\. Session与进程组](ch34s02.html#id2892071)
+ [2.2\. 与作业控制有关的信号](ch34s02.html#id2892541)
+ [3\. 守护进程](ch34s03.html)
+ [35\. 线程](ch35.html)
+ [1\. 线程的概念](ch35s01.html)
+ [2\. 线程控制](ch35s02.html)
+ [2.1\. 创建线程](ch35s02.html#id2895632)
+ [2.2\. 终止线程](ch35s02.html#id2896029)
+ [3\. 线程间同步](ch35s03.html)
+ [3.1\. mutex](ch35s03.html#id2896462)
+ [3.2\. Condition Variable](ch35s03.html#id2895424)
+ [3.3\. Semaphore](ch35s03.html#id2897332)
+ [3.4\. 其它线程间同步机制](ch35s03.html#id2897423)
+ [4\. 编程练习](ch35s04.html)
+ [36\. TCP/IP协议基础](ch36.html)
+ [1\. TCP/IP协议栈与数据包封装](ch36s01.html)
+ [2\. 以太网(RFC 894)帧格式](ch36s02.html)
+ [3\. ARP数据报格式](ch36s03.html)
+ [4\. IP数据报格式](ch36s04.html)
+ [5\. IP地址与路由](ch36s05.html)
+ [6\. UDP段格式](ch36s06.html)
+ [7\. TCP协议](ch36s07.html)
+ [7.1\. 段格式](ch36s07.html#id2900865)
+ [7.2\. 通讯时序](ch36s07.html#id2900917)
+ [7.3\. 流量控制](ch36s07.html#id2901189)
+ [37\. socket编程](ch37.html)
+ [1\. 预备知识](ch37s01.html)
+ [1.1\. 网络字节序](ch37s01.html#id2902826)
+ [1.2\. socket地址的数据类型及相关函数](ch37s01.html#id2902915)
+ [2\. 基于TCP协议的网络程序](ch37s02.html)
+ [2.1\. 最简单的TCP网络程序](ch37s02.html#id2902690)
+ [2.2\. 错误处理与读写控制](ch37s02.html#id2903656)
+ [2.3\. 把client改为交互式输入](ch37s02.html#id2903862)
+ [2.4\. 使用fork并发处理多个client的请求](ch37s02.html#id2903959)
+ [2.5\. setsockopt](ch37s02.html#id2904007)
+ [2.6\. 使用select](ch37s02.html#id2904122)
+ [3\. 基于UDP协议的网络程序](ch37s03.html)
+ [4\. UNIX Domain Socket IPC](ch37s04.html)
+ [5\. 练习:实现简单的Web服务器](ch37s05.html)
+ [5.1\. 基本HTTP协议](ch37s05.html#id2904532)
+ [5.2\. 执行CGI程序](ch37s05.html#id2904687)
- Linux C编程一站式学习
- 历史
- 前言
- 部分 I. C语言入门
- 第 1 章 程序的基本概念
- 第 2 章 常量、变量和表达式
- 第 3 章 简单函数
- 第 4 章 分支语句
- 第 5 章 深入理解函数
- 第 6 章 循环语句
- 第 7 章 结构体
- 第 8 章 数组
- 第 9 章 编码风格
- 第 10 章 gdb
- 第 11 章 排序与查找
- 第 12 章 栈与队列
- 第 13 章 本阶段总结
- 部分 II. C语言本质
- 第 14 章 计算机中数的表示
- 第 15 章 数据类型详解
- 第 16 章 运算符详解
- 第 17 章 计算机体系结构基础
- 第 18 章 x86汇编程序基础
- 第 19 章 汇编与C之间的关系
- 第 20 章 链接详解
- 第 21 章 预处理
- 第 22 章 Makefile基础
- 第 23 章 指针
- 第 24 章 函数接口
- 第 25 章 C标准库
- 第 26 章 链表、二叉树和哈希表
- 第 27 章 本阶段总结
- 部分 III. Linux系统编程
- 第 28 章 文件与I/O
- 第 29 章 文件系统
- 第 30 章 进程
- 第 31 章 Shell脚本
- 第 32 章 正则表达式
- 第 33 章 信号
- 第 34 章 终端、作业控制与守护进程
- 第 35 章 线程
- 第 36 章 TCP/IP协议基础
- 第 37 章 socket编程
- 附录 A. 字符编码
- 附录 B. GNU Free Documentation License Version 1.3, 3 November 2008
- 参考书目
- 索引