程国钢. 张玉兰. Linux C 编程从基础到实践. 清华大学出版社. 第一版
在图书馆偶然发现的书。正好现在学了操作系统,也会用一些 Web 框架,但是这二者之间的桥梁, Linux 的系统调用以及其他面向用户态的 API ,值得先了解一下。
因此准备花个 6 天左右的时间,把重点的几章看看,也不需要记录详细的 API (毕竟有大量 Linux 文档),就是记录个思想、留个印象。
书中提供的代码我放在 ./sample/ 。
2022年6月4日略读完了我想读的内容,很可惜的是除了在“网络编程”的 NTP 协议里出现了个 select
,剩下的地方并没有出现我想要看到的多路复用技术。但起码明确了 TCP 这类协议已经由 Linux 内核负责了,我们只需要处理其提供的 API 比如 bind
, listen
, accept
, connect
, send
, recv
等等就可以了。
- 杂记
- 第 6 章 Linux 的流
- 第 7 章 Linux 的进程
- 第 8 章 Linux 的信号
- 第 9 章 Linux 的进程同步机制——管道和 IPC
- 第 10 章 Linux 的线程
- 第 11 章 Linux 的网络编程
总体上给我感觉就是实践中很常见的“文件读写”。毕竟工作中都不会直接 open
,而是采用带有缓冲区的 fopen
系列。
最大的收获莫过于认识了会话 session 与前台进程组。
- 进程的状态、描述符、标识符
- 进程的操作: fork, exec, vfork, _exit, atexit
- Linux 的进程组和会话(前台进程组)
- 更改进程用户、 system 、 acct 、 time
- Linux 信号/软中断执行过程
- 注册信号 singal, sigaction
- 发送信号 kill, raise, sigqueue
- 定时信号 alarm, 退出信号 abort
- Linux 信号集 sigemptyset, sigfillset, sigaddset, sigdelset, sigismember
- 信号阻塞和挂起 sigprocmask, sigsuspend 、信号的精确定时 setitimer 以及避免在信号处理中调用不可重入函数