如何在10秒后始终处理ctrl c信号

时间:2016-03-28 23:19:05

标签: c linux signals sleep

当用户按下ctrl c时,根据我的要求,我应该在10秒后处理它。

为此我在实际工作的信号处理函数内添加了sleep(10)。 我不确定它是如何工作的。它是实现它的正确方法。如果在信号处理程序中调用它,将会休息。我真的很想知道它是如何工作的。实现这个的正确方法是什么

signal_hanlder(int sig num)
{
    sleep(10);
    my_handler();
}

1 个答案:

答案 0 :(得分:1)

如果您希望线程继续运行,请使用alarm()在10秒后安排唤醒。

signal(SIGALRM, my_handler);

void signal_handler(int sig_num) {
    alarm(10);
}