一个会话里有多个进程组运行着,当会话首进程(可能是login shell)
终止(可能是被kill或shell退出引起),那么此时该会话里的进程会怎样,会收到
哪些信号,是否全程成为孤进程组?
应该是会成为orphan process group。如果已经处于STOP状态,会收到HUP+CONT信号。
void sig(int nr)
{
printf("%d: got %dn", getpid(), nr);
}
void show(void)
{
printf("pid=%d, ppid=%d, pgid=%d, sid=%dn", getpid(), getppid(), getpgid(0), getsid(0));
}
int main()
{
signal(SIGHUP, sig);
fork();
show();
setpgid(0, 0);
show();
kill(getpid(), SIGTSTP);
perror("kill");
show();
}
setsid a
pid=19464, ppid=1, pgid=19464, sid=19464
pid=19464, ppid=1, pgid=19464, sid=19464
pid=19465, ppid=19464, pgid=19464, sid=19464
pid=19465, ppid=19464, pgid=19465, sid=19464
kill: Operation not permitted
pid=19464, ppid=1, pgid=19464, sid=19464
19465: got 1 <------------------- here
kill: Success
pid=19465, ppid=1, pgid=19465, sid=19464
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。