当一个进程调用sleep函数时,它会发出一个信号吗?

时间:2013-11-14 07:53:08

标签: c linux signals sleep

我正在我的程序中执行一个进程,此进程调用exec()函数,然后子进程调用sleep()函数。

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

2 个答案:

答案 0 :(得分:4)

通常sleep()是通过调用alarm(2)来实现的,{{3}}会在超时到期后安排将SIGALRM信号传递给调用进程。

换句话说,信号在sleep完成休眠后发送,而不是发送到父进程 - 而是处理调用sleep的信号。父母过程不能拦截传递给孩子的信号。

答案 1 :(得分:3)

不,sleep本身不会向父母发送任何信号,它可能会使用封面下的信号唤醒自己,但这完全是孩子的内心。

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

#include <sys/types.h>
#include <unistd.h>
#include <sys/signal.h>
:
kill (getppid(), SIGHUP);