繁体   English   中英

在 C 语言的 Linux 编程中,子进程可以等待父进程终止吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM