进程组的 id (pgid) 就是进程组组长(group leader)的 pid. 当一个进程 fork 的时候, 子进程默认是和父进程在同一个进程组的....答案之前说了:实际上, SIGINT 并不只会发送给前台进程, 而是发送给前台进程组中的每一个进程. 而父进程和子进程当前所在的组正是前台进程组....相关函数
getsid(pid) - 获得指定 pid 对应的 sid
setsid() - 创建新的session
其中需要注意的是, setsid 不能由 group leader 进程来调用, 因为这样会导致同一个...leader 退出可能造成 orphaned process group, 因此在shell中, 一般情况下会造成进程退出的情况
Orphaned Process Group
当一个 group leader...整个过程非常复杂, 在 GNU C lib 中提供了 daemon() 函数来实现这些步骤, 然而讽刺的是, 由于步骤实在太多了, 系统提供的 daemon 函数竟然忘了其中几步, 所以不推荐使用...