### 1.1.1 干什么 `unistd.h` 是 POSIX(可移植操作系统接口)规定的标准头文件,在 Linux 上由 glibc 提供声明。它把进程创建、程序替换、文件描述符读写、身份查询等最贴近内核的操作封装为 C 函数。它不提供复杂算法,只负责把用户态动作递交内核执行。可以把它理解为程序向操作系统请求能力的总入口。 它的职责边界是这样的。用户态代码经 glibc 封装后,由 `unistd.h` 声明的函数把调用号与参数摆入寄存器,执行陷入指令进入内核。内核完成操作后,经返回指令交还结果。网络套接字、内存映射、信号等专项能力,分别由各自头文件提供,不在本库展开。 ### 1.1.2 谁在调 * Nginx 的 master/worker 进程模型底层调 `fork()` 派生 worker。 * Redis 的 BGSAVE 后台快照经 `fork()` 创建子进程执行持久化。 * PHP-FPM 的 worker 进程池经 `fork()` 管理并发单元。 * 上层语言的进程派生最终落到本库:Java `Runtime.exec()`、Go `os/ex