fork 调用后两个进程具有相同的 PID

fork 调用后两个进程具有相同的 PID

根据fork文档(man 2 fork):

除了以下几点之外,子进程与父进程完全相同:

  • 子进程有自己唯一的进程 ID,并且此 PID 与任何现有进程组 (setpgid(2)) 的 ID 都不匹配。

那么,这是否意味着属于两个不同进程组的两个进程可以具有相同的PID?这对我来说没有意义,但fork强制规定没有新的 PID 等于现有的 PGID,因此可能存在一个非组长进程,其 PID 与 fork 新创建的进程相同,不是吗?

答案1

进程 ID 是唯一的。

POSIXfork()文档:

描述

fork() 函数应创建一个新进程。新进程(子进程)应是调用进程(父进程)的精确副本,除非下面详细说明:

  • 子进程应该有一个唯一的进程ID。
  • 子进程 ID 也不应与任何活动进程组 ID 匹配。
  • 子进程应该有一个不同的父进程ID,它应该是调用进程的进程ID。

...

相关内容