在 C 中,为什么 child 进程没有自动收割?

In C, Why are child processes not reaped automatically?

说明一下,我不是问怎么收割一个进程。

在 C 中,parent 进程必须显式地获取创建的 child,即使 child 通过执行 exit() 函数调用退出。

我了解到在收获child的同时,可能需要获取child的退出状态。 事实上,这是可以从 child 过程 中获得的唯一信息。那么,为什么 OS 不只是存储退出状态(一个整数),而是仍然存储与 child 关联的所有内存直到被回收?

你提问的前提是错误的。 OS 仅存储退出状态(和资源使用报告),但最重要的是,它还会保留 pid 直到您等待它。最后一部分很重要,因为如果在等待原始进程之前将 pid 重新分配给新进程,则不可能将其用作请求退出状态的标识符。