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

pyt*_*on3 5 c unix linux

在Linux的C编程中,我知道该wait()函数用于等待子进程终止,但是有一些方法(或函数)让子进程等待父进程终止吗?

Kaz*_*Kaz 5

Linux有一个扩展(如非POSIX函数).查找prctl("与过程相关的控制").

有了prctl,您可以安排孩子在父母去世时获得信号.查找使用的PR_SET_PDEATHSIG操作代码prctl.

例如,如果你将它设置为SIGKILL信号,它有效地为我们提供了一种方法,让孩子在父母去世时死亡.但是,当然,信号可能是孩子可以捕获的东西.

prctl可以做各种其他事情.它就像一个ioctl目标就是流程本身:一个"流程ioctl".


dbu*_*ush 4

简短的回答:不。

父进程可以控制其子进程的终端或进程组,这就是我们拥有wait()waitpid()函数的原因。孩子对其父母没有这种控制权,因此没有内置任何东西。

如果您确实需要子级知道其父级何时退出,则可以让父级在atexit()处理程序中向子级发送信号,并让子级捕获该信号。