sigaction没有执行SIGALRM信号对应的动作


   
  #include <stdio.h>
  
#include <signal.h>
#include <unistd.h>

void sig_alarm(int signo)
{
printf("sig_alarm running\n");
return;
}

int main()
{
struct sigaction sa;
sa.sa_handler = sig_alarm;
sigaction(SIGALRM, &sa, NULL);

alarm(4);

while (1) {
printf("waiting for sig_alarm\n");
}

return 0;
}

预期效果,4s后执行sig_alarm()函数。
但是实际上一直在输出waiting for sig_alarm;
是什么原因,请大神指教。

c

绝望的番茄 12 years, 9 months ago

while (1) {
printf("waiting for sig_alarm\n");
}
这里输出太快了,肉眼很容易忽略那个信号处理函数的printf吧,可以导出到log中搜索一下,还是有打印sig_alarm running的。

while (1) {
sleep(1);
printf("waiting for sig_alarm\n");
}
这样比较容易观察一点吧。。

じ星辰Ж泪葉 answered 12 years, 9 months ago

Your Answer