部分 III. Linux系统编程
优质
小牛编辑
131浏览
2023-12-01
目录
- 28. 文件与I/O
- 1. 汇编程序的Hello world
- 2. C标准I/O库函数与Unbuffered I/O函数
- 3. open/close
- 4. read/write
- 5. lseek
- 6. fcntl
- 7. ioctl
- 8. mmap
- 29. 文件系统
- 1. 引言
- 2. ext2文件系统
- 2.1. 总体存储布局
- 2.2. 实例剖析
- 2.3. 数据块寻址
- 2.4. 文件和目录操作的系统函数
- 3. VFS
- 3.1. 内核数据结构
- 3.2. dup和dup2函数
- 30. 进程
- 1. 引言
- 2. 环境变量
- 3. 进程控制
- 3.1. fork函数
- 3.2. exec函数
- 3.3. wait和waitpid函数
- 4. 进程间通信
- 4.1. 管道
- 4.2. 其它IPC机制
- 5. 练习:实现简单的Shell
- 31. Shell脚本
- 1. Shell的历史
- 2. Shell如何执行命令
- 2.1. 执行交互式命令
- 2.2. 执行脚本
- 3. Shell的基本语法
- 3.1. 变量
- 3.2. 文件名代换(Globbing):* ? []
- 3.3. 命令代换:`或 $()
- 3.4. 算术代换:$(())
- 3.5. 转义字符
- 3.6. 单引号
- 3.7. 双引号
- 4. bash启动脚本
- 4.1. 作为交互登录Shell启动,或者使用--login参数启动
- 4.2. 以交互非登录Shell启动
- 4.3. 非交互启动
- 4.4. 以sh命令启动
- 5. Shell脚本语法
- 5.1. 条件测试:test [
- 5.2. if/then/elif/else/fi
- 5.3. case/esac
- 5.4. for/do/done
- 5.5. while/do/done
- 5.6. 位置参数和特殊变量
- 5.7. 函数
- 6. Shell脚本的调试方法
- 32. 正则表达式
- 1. 引言
- 2. 基本语法
- 3. sed
- 4. awk
- 5. 练习:在C语言中使用正则表达式
- 33. 信号
- 1. 信号的基本概念
- 2. 产生信号
- 2.1. 通过终端按键产生信号
- 2.2. 调用系统函数向进程发信号
- 2.3. 由软件条件产生信号
- 3. 阻塞信号
- 3.1. 信号在内核中的表示
- 3.2. 信号集操作函数
- 3.3. sigprocmask
- 3.4. sigpending
- 4. 捕捉信号
- 4.1. 内核如何实现信号的捕捉
- 4.2. sigaction
- 4.3. pause
- 4.4. 可重入函数
- 4.5. sig_atomic_t类型与volatile限定符
- 4.6. 竞态条件与sigsuspend函数
- 4.7. 关于SIGCHLD信号
- 34. 终端、作业控制与守护进程
- 1. 终端
- 1.1. 终端的基本概念
- 1.2. 终端登录过程
- 1.3. 网络登录过程
- 2. 作业控制
- 2.1. Session与进程组
- 2.2. 与作业控制有关的信号
- 3. 守护进程
- 35. 线程
- 1. 线程的概念
- 2. 线程控制
- 2.1. 创建线程
- 2.2. 终止线程
- 3. 线程间同步
- 3.1. mutex
- 3.2. Condition Variable
- 3.3. Semaphore
- 3.4. 其它线程间同步机制
- 4. 编程练习
- 36. TCP/IP协议基础
- 1. TCP/IP协议栈与数据包封装
- 2. 以太网(RFC 894)帧格式
- 3. ARP数据报格式
- 4. IP数据报格式
- 5. IP地址与路由
- 6. UDP段格式
- 7. TCP协议
- 7.1. 段格式
- 7.2. 通讯时序
- 7.3. 流量控制
- 37. socket编程
- 1. 预备知识
- 1.1. 网络字节序
- 1.2. socket地址的数据类型及相关函数
- 2. 基于TCP协议的网络程序
- 2.1. 最简单的TCP网络程序
- 2.2. 错误处理与读写控制
- 2.3. 把client改为交互式输入
- 2.4. 使用fork并发处理多个client的请求
- 2.5. setsockopt
- 2.6. 使用select
- 3. 基于UDP协议的网络程序
- 4. UNIX Domain Socket IPC
- 5. 练习:实现简单的Web服务器
- 5.1. 基本HTTP协议
- 5.2. 执行CGI程序