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