如果我在linux C程序中生成一个进程,总共有两个进程,一个父进程和一个子进程。我想:如果这两个进程中的一个退出,另一个进程也会退出。
如何实现这一目标? 有没有类似的源代码?
注意:我不想阻止这两个进程,例如,我不希望wait()
阻止父进程谢谢!
答案 0 :(得分:4)
在父进程中,您可以使用waitpid
系统调用。它将阻止,直到孩子退出。
在子进程中,您无法使用waitpid
。一种选择是父亲将在退出时通过发送SIGTERM
通知孩子。但这只有在父亲不会被SIGKILL
杀死的情况下才有效。我建议使用kill
和param 0
定期向父进程发送信号。如果失败,则该过程已终止。
如果sig为0,则不发送信号,但仍然执行错误检查;这可用于检查是否存在进程ID或进程组ID。
答案 1 :(得分:1)
如果孩子退出,则会向父母发送SIGCHLD
。如果父母要死,它应该以某种方式通知孩子,或者至少发送一个SIGTERM
。
答案 2 :(得分:0)
http://linux.die.net/man/2/waitpid
等待任何子进程,然后从waitpid返回时退出。
答案 3 :(得分:-1)
如果父进程退出,则子进程将变为僵尸进程。
如果孩子退出,则可以通过等待系统调用通知父母。您可以通过阅读父级的状态退出父级。