我在我的程序中 fork 一个进程,这个进程调用一个exec()
函数,然后子进程调用该sleep()
函数。
我想知道该sleep()
函数是否发送某种父级可以检测到的信号,如果是,它发送什么类型的信号?
通常sleep()
是通过调用来实现的,alarm(2)
该调用安排SIGALRM
一旦超时到期就将信号传递给调用进程。
换句话说,信号是在sleep
完成睡眠后发送的,而不是发送给父进程 - 而是发送给调用sleep
. 并且父进程无法拦截传递给其子进程的信号。
不,sleep
它本身不会向父母发送任何类型的信号,它可能会在幕后使用信号来唤醒自己,但这完全是孩子内部的。
如果你想通知父母,你必须在睡觉前自己这样做。这可能很简单:
#include <sys/types.h>
#include <unistd.h>
#include <sys/signal.h>
:
kill (getppid(), SIGHUP);