[英]Can a child process wait for the parent process to terminate in Linux programming in C?
在Linux的C编程中,我知道wait()
函数用于等待子进程终止,但是子进程是否有一些方法(或函数)可以等待父进程终止?
Linux 对此有一个扩展(如非 POSIX 函数)。 查找prctl
(“进程相关控制”)。
使用prctl
,您可以安排孩子在父母去世时收到信号。 查找与prctl
使用的PR_SET_PDEATHSIG
操作代码。
例如,如果您将其设置为SIGKILL
信号,则它有效地为我们提供了一种在父母死亡时让孩子死亡的方法。 但当然,信号可以是孩子可以捕捉到的东西。
prctl
可以做各种其他的事情。 它就像一个ioctl
其目标是进程本身:“进程 ioctl”。
简短的回答:没有。
父进程可以控制其子进程的终端或进程组,这就是我们拥有wait()
和waitpid()
函数的原因。 孩子对其父母没有那种控制权,因此没有任何内置的东西。
如果您真的需要孩子知道其父级何时退出,您可以让父级在atexit()
处理程序中向子级发送信号,并让子级捕获该信号。
在 Linux 中,您可以使用值为 PR_SET_PDEATHSIG 的 prctl 来建立一个信号,当创建它的线程死亡时,该信号将发送到您的进程。 也许你觉得它很有用。
当父进程结束时,子进程被init采用,因此如果ppid()==1或ppid()!=就足以检查子进程,而不是原始的PPID,这意味着父进程已完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.