我正在尝试使用 setitimer 发送一个 SIGALRM,然后调用我的处理程序函数打印到标准输出。我已经在互联网上搜索了好几个小时,但没有明确说明应该如何使用 setitimer。我尝试了各种组合,但似乎都不起作用。在我的代码中,我使用的是套接字和 pthread,但我认为它与问题并不真正相关,因为我试图通过一个信号设置警报,无论如何这都会停止所有线程,所以我将保留该代码简单。
void handle_alarm(int sig){
printf("Printing Info\n");
}
int main(int argc, char**argv){
struct itimerval it_val;
signal(SIGALRM, handle_alarm);
it_val.it_value.tv_sec = 1;
it_val.it_value.tv_usec = 1000000;
it_val.it_interval = it_val.it_value;
setitimer(ITIMER_REAL, &it_val, NULL);
while(1){}
return 0;
}
它应该每秒简单地打印到终端,但事实并非如此。谁能给我任何建议?