根据fork
文档(man 2 fork
):
除了以下几点之外,子进程与父进程完全相同:
- 子进程有自己唯一的进程 ID,并且此 PID 与任何现有进程组 (setpgid(2)) 的 ID 都不匹配。
那么,这是否意味着属于两个不同进程组的两个进程可以具有相同的PID?这对我来说没有意义,但fork
强制规定没有新的 PID 等于现有的 PGID,因此可能存在一个非组长进程,其 PID 与 fork 新创建的进程相同,不是吗?
答案1
进程 ID 是唯一的。
描述
fork() 函数应创建一个新进程。新进程(子进程)应是调用进程(父进程)的精确副本,除非下面详细说明:
- 子进程应该有一个唯一的进程ID。
- 子进程 ID 也不应与任何活动进程组 ID 匹配。
- 子进程应该有一个不同的父进程ID,它应该是调用进程的进程ID。
...