![进程id会被回收吗?如果达到最大 id 怎么办?](https://linux22.com/image/19370/%E8%BF%9B%E7%A8%8Bid%E4%BC%9A%E8%A2%AB%E5%9B%9E%E6%94%B6%E5%90%97%EF%BC%9F%E5%A6%82%E6%9E%9C%E8%BE%BE%E5%88%B0%E6%9C%80%E5%A4%A7%20id%20%E6%80%8E%E4%B9%88%E5%8A%9E%EF%BC%9F.png)
进程 ID 严格增加,但如果您的系统运行足够长的时间并且有很多进程终止和启动,您可能在某些时候达到底层整数类型的限制(在我的系统上它似乎是一个有符号 int),其中不会存在更大的 pid。这是否会导致旧的未使用的ID(已完成的进程)被回收(即第二次分发)?如果有人正在等待 pid 终止但没有签入怎么办?龙时间?
答案1
在我所知道的任何类 UNIX 操作系统上,进程 ID 都不是严格递增的。你的问题是基于一个错误的假设。
唯一的对进程 ID 的要求是:
在进程生命周期结束之前,系统不得重复使用进程 ID。另外,如果存在进程组ID与该进程ID相同的进程组,则在进程组生存期结束之前,系统不得重用该进程ID。非系统进程的进程的进程 ID 不得为 1。