1

据我所知(请原谅我对这个问题的无知),当一个进程fork()

  • 每个孩子都被分配了自己的PID
  • 孩子退出后,父母仍然可以查询孩子的PIDwaitpid()

这是否意味着:

  • 因为这个 PID 仍然可以从父级“查询”,它仍然被锁定并且不能被系统重用?
  • 或者该数字是否只是与父级相关联,以便它可以知道它已退出,并获得退出状态代码,但同时 PID 再次可供系统使用?在那种情况下,这是否意味着这个 PID 不能被这个父进程的子进程重用?这意味着父进程在其生命周期中可以跨越的进程数量有一个上限,这让我感到惊讶。

如果您能为我澄清这一点,我将不胜感激!

4

1 回答 1

3

在大多数 UNIX 上,除非父进程特别要求,否则在等待子进程之前,子进程仍然作为僵尸进程存在于系统进程表中。所以PID不能重复使用。

于 2013-07-05T11:57:08.790 回答