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

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

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

答案1

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

唯一的对进程 ID 的要求是:

在进程生命周期结束之前,系统不得重复使用进程 ID。另外,如果存在进程组ID与该进程ID相同的进程组,则在进程组生存期结束之前,系统不得重用该进程ID。非系统进程的进程的进程 ID 不得为 1。

相关内容