为什么在子进程调用 exec 函数之一后,进程无法更改其子进程之一的进程组 ID?

为什么在子进程调用 exec 函数之一后,进程无法更改其子进程之一的进程组 ID?

来自APUE:

进程只能设置其自身或其任何子进程的进程组 ID。此外,在子进程调用 exec 函数之一后,它无法更改其子进程之一的进程组 ID。

为什么它不能“在子进程调用其中一个 exec 函数后更改其子进程之一的进程组 ID”?谢谢。

答案1

我不知道“官方”原因,但我猜测这个想法是进程不必期望其 PGID 突然改变。

因此,在 fork 之后这是允许的,以便可以设置 shell 管道,但在execve()新的二进制文件找到某个状态之后,这应该是永久的(直到新的二进制文件决定更改它)。

相关内容