Chinaunix

标题: 能否做到,父进程退出的时候,子进程全都退出? [打印本页]

作者: centos_71    时间: 2015-01-07 21:47
标题: 能否做到,父进程退出的时候,子进程全都退出?
如果我希望linux下面的进程fork出一个子进程,如果父进程退出了,所有的子进程也会退出,如何做到这一点? fork之前指定什么参数吗?

作者: sunlw78    时间: 2015-01-16 15:59
用wait,waitpid函数来处理。
作者: super皮波    时间: 2015-01-16 16:12
回复 2# sunlw78

wait类的系统调用是子进程退出的时候,父进程用于获取子进程的状态,然后系统可以收回子系统的进程描述符的
   
作者: sagarfan    时间: 2015-01-16 22:17
回复 1# centos_71
如果非要这么设计的话,可以在父进程退出前调用kill函数kill(pid,SIGKILL)


   
作者: 哈师大出    时间: 2015-01-17 13:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: MMMIX    时间: 2015-01-17 13:48
回复 4# sagarfan


    另外一种方式是在 fork 出的子进程中使用 Linux 的系统调用 prctl(PR_SET_PDEATHSIG, ...) 设置父进程退出后自动发送给子进程的信号。这样,一是不需要在父进程中记录所有子进程的 PID;另外,即使父进程意外退出,子进程也可以收到相应的信号。
作者: centos_71    时间: 2015-01-17 17:53
MMMIX 发表于 2015-01-17 13:48
回复 4# sagarfan

这个回答很专业,谢谢!
作者: sagarfan    时间: 2015-01-17 23:59
回复 6# MMMIX
恩恩,这种方法考虑的更全面。

   
作者: zsszss0000    时间: 2015-01-19 18:19
不愧是版主,答案就是牛 回复 6# MMMIX


   
作者: sunlw78    时间: 2015-01-27 10:16
回复:super皮波:wait类的系统调用是子进程退出的时候,父进程用于获取子进程的状态,然后系统可以收回子系统的进程描述符的
你说的是对的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2