只要进程不死,进程 PID 是否保证保持不变?

Rei*_*iik 9 linux process pid

我正在用 Linux 做一些模拟工作,我现在正在处理的代码只在这样一个假设下工作,即一旦内核为进程分配了一个 PID,该 PID 将保持不变,直到该进程被终止. 我认为这是真的,但由于我对 Linux 世界有点陌生,我只想看看是否有任何我应该注意的特殊情况。谢谢!

xai*_*zek 11

是的,这是有保证的。即使它的映像将被exec系统调用替换为另一个进程,它也将具有相同的 PID 。

  • @MartinThoma,所有[man凭证](http://man7.org/linux/man-pages/man7/credentials.7.html#DESCRIPTION)都说PID是在进程创建时分配的,并在`execve( )`。由于 PID 仅在进程创建时分配,因此 PID 会持续存在。 (2认同)

dmc*_*ten 11

嗯...主要是

正如其他海报所说,任何特定过程都会无限期地保留它的 PID。即使通过一个或多个exec.

但是,希望在 unix 机器上逃避该保证的程序员完全没有问题。他会很简单fork,忽略女儿中的HUP信号,然后杀死母亲进程。其结果将是女儿继续使用新的 PID,并显示该进程更改了它的 PID。