关于流程的pid

时间:2009-05-05 00:42:31

标签: linux process pid

我有一个有点愚蠢的问题,如果我有一系列创建的进程......这些进程不一定是某种继承,进程的pid必须是数字连续或随机的pid?

7 个答案:

答案 0 :(得分:7)

这由操作系统决定。

通常,它们通常由OS按顺序分配。但是,这种行为不是基于决策的,因为大多数操作系统规范都声明进程ID分配不是确定性的(即:它可能是随机的,并且可能在将来的版本中发生变化等)。

答案 1 :(得分:4)

在Linux上,pids通常在系统范围内按顺序分配,但是它们会定期环绕,并且可能存在由其他不相关进程引起的“间隙”。在极端情况下,您可能会有一个“间隙”宽度足以导致这种环绕。因此,不要假设任何特定的顺序 - 而是明确地跟踪您的父进程或子进程'PID。

答案 2 :(得分:2)

以下是测试系统功能的方法:

for i in $(seq 20); do ps; done | grep ps

“ps”命令的PID是连续的进程,或者接近连续,因为任何其他调用者都可以合理地期望能够产生。

我在Windows上的cygwin终端随机分配它们,我的网站主机按顺序分配它们(偶尔会有间隙,大概是其他用户或服务器运行的进程)。

有些人认为顺序PID分配是一个轻微的安全问题,因为它可能会泄漏多用户系统用户之间的信息。

答案 3 :(得分:1)

在AIX上,你经常会看到更大的(例如7位数)PID并且它们不一定是半顺序分配的(虽然我在测试时似乎以2的增量循环;机器上还有另一个用户,所以它可能意义不大。)

在AIX 5.3机器上进行全新登录:

$ ps
     PID    TTY  TIME CMD
 1060910 pts/27  0:00 -ksh
 1155224 pts/27  0:00 ps
$

答案 4 :(得分:0)

取决于您的平台,但您不应该依赖于您的pid的任何特定订单。

在Windows上,pid通常以递增的数量分配,但随着进程退出,pid可以被回收,您将看到新进程的pid低于旧进程的情况。此外,pid来自与tid相同的命名空间,因此当你启动新进程时,你不会看到pid增加4。

答案 5 :(得分:0)

从您的角度来看,它们将是随机的。系统管理这些数字并在创建进程时分配它们。快速查看我系统上当前的PID,可以看出它们都可以被4 ...

整除

答案 6 :(得分:0)

如果你正在创建那些孩子你会知道pid,pid取决于OS调度程序,你不关心这些东西。