进程ID会被回收吗?如果达到最大id怎么办?

bit*_*ask 8 process kernel

进程 ID 严格增加,但是如果您的系统运行时间足够长并且有很多进程终止和启动,您可能会在某个时候达到底层整数类型的限制(在我的系统上它似乎是一个有符号整数),其中不存在更大的pid。这是否会导致旧的未使用的 ID(完成的进程)被回收(即第二次分发)?如果有人正在等待该PID终止,但在没有检查looong时间?

Dav*_*rtz 8

我所知道的任何类 UNIX 操作系统上的进程 ID 都没有严格增加。你的问题是基于一个错误的假设。

对进程 ID的唯一要求是:

在进程生命周期结束之前,系统不得重用进程 ID。此外,如果存在一个进程组ID 等于该进程ID 的进程组,则该进程ID 不会被系统重用,直到该进程组生命周期结束。非系统进程的进程不应有进程 ID 1。

  • 不,那是不可能的。该进程直到它向其父进程报告其退出值才结束。这是它的工作之一,在它完成之前,它还没有完成。 (2认同)