2

我在我的程序中 fork 一个进程,这个进程调用一个exec()函数,然后子进程调用该sleep()函数。

我想知道该sleep()函数是否发送某种父级可以检测到的信号,如果是,它发送什么类型的信号?

4

2 回答 2

4

通常sleep()是通过调用来实现的,alarm(2)该调用安排SIGALRM一旦超时到期就将信号传递给调用进程。

换句话说,信号是在sleep完成睡眠后发送的,而不是发送给父进程 - 而是发送给调用sleep. 并且父进程无法拦截传递给其子进程的信号。

于 2013-11-14T07:59:15.660 回答
3

不,sleep它本身不会向父母发送任何类型的信号,它可能会在幕后使用信号来唤醒自己,但这完全是孩子内部的。

如果你想通知父母,你必须在睡觉前自己这样做。这可能很简单:

#include <sys/types.h>
#include <unistd.h>
#include <sys/signal.h>
:
kill (getppid(), SIGHUP);
于 2013-11-14T07:59:44.900 回答