setitimer を使用して SIGALRM を送信しようとしています。SIGALRM は、ハンドラー関数を呼び出して stdout に出力します。私は何時間もインターネットを精査してきましたが、 setitimer の使用方法について明確な指示がありません。さまざまな組み合わせを試しましたが、どれもうまくいかないようです。私のコードではソケットと pthreads を使用していますが、信号を介してアラームを設定しようとしているため、問題に本当に関連しているとは思いません。とにかくすべてのスレッドを停止するので、そのコードは省略しますシンプルさ。
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;
}
毎秒端末に出力するだけですが、そうではありません。誰でもアドバイスをもらえますか?