来自APUE:
进程只能设置其自身或其任何子进程的进程组 ID。此外,在子进程调用 exec 函数之一后,它无法更改其子进程之一的进程组 ID。
为什么它不能“在子进程调用其中一个 exec 函数后更改其子进程之一的进程组 ID”?谢谢。
答案1
我不知道“官方”原因,但我猜测这个想法是进程不必期望其 PGID 突然改变。
因此,在 fork 之后这是允许的,以便可以设置 shell 管道,但在execve()
新的二进制文件找到某个状态之后,这应该是永久的(直到新的二进制文件决定更改它)。