0

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;

}

毎秒端末に出力するだけですが、そうではありません。誰でもアドバイスをもらえますか?

4

1 に答える 1