我刚刚编写了一个程序,它会分叉一个进程。子进程只显示“HI”200次。父亲的过程只是说他是父亲。 我打印出两个pids。 当我多次运行我的程序时,我发现父亲的pid保持不变,这是正常的。我不明白为什么孩子的pid不断增加2,正好是2。 我的问题:这是Ubuntu中pid生成的标准方法吗?增加2?
答案 0 :(得分:1)
在Linux 2.6中,PID恰好是单调递增的,但为什么你会得到什么呢?不要依赖任何特定的行为。如果跳过+2,可能只是因为另一个进程发生了一个孩子。或者因为+1已经达到了已经使用的PID。
答案 1 :(得分:0)
找到一个引用here,说vfork()使用pid作为其操作的副产品。同样,在某些情况下,如果你从shell脚本中分叉,fork可能会在你的实际脚本被涉及之前产生一个新的shell,这也会消耗一个pid。
我建议暂停你的程序在一对叉子之间,看看是否有另一个进程占用了那些"缺失"的PID。