![]() |
1
2
这个行为是由posix指定的(这意味着它适用于称自己为“unix”的所有东西,而不仅仅是linux)。 http://pubs.opengroup.org/onlinepubs/9699919799/functions/setpgid.html 说:
规范没有说明这个规则存在的原因,但我相信dbush声明的基本原理是正确的:a 阶段 leader必须始终是流程组的leader;如果它可以移动到另一个流程组,它将不再是流程组的leader,这违反了不变量。 然而,一个过程只是一个过程小组的领导者,而不是一个会话的领导者, 可以 将自己放入另一个流程组(不再是流程组负责人),然后可能将自己从流程组中拉出来,再次成为流程组负责人。实际上,作业控制外壳 有 在某些情况下这样做:注意规范基本原理部分底部的位
posix没有解释为什么作业控制shell会首先更改其进程组,但是 GNU C Library manual section on implementing job control 填补空白:
当然,如果子shell被挂起(例如bash有一个
还请注意,作业控件外壳程序
不
使自己成为
阶段
领袖,即使它不是任何东西的子地狱。会话由负责设置控制终端的任何程序初始化;该程序通常是父程序和预程序-
|
![]() |
2
2
会议领导人总是一个过程小组领导人。如果您要将其移动到另一个流程组,它将不再是流程组负责人,这违反了前面的规则。 |
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 7 月前 |
![]() |
user2138149 · 双栈网络服务器无法按预期处理ipv4请求 7 月前 |
![]() |
Marco · PyCharm Linux系统文件上os.stat异常 8 月前 |