test()という関数が1つあります。この関数を30秒ごとに呼び出したいのですが、私の実装したコードスニペットを見つけてください。C:sigactionタイマーを一時停止する方法
void init_sigaction(void) {
struct sigaction act;
act.sa_handler = test; //test()
act.sa_flags = 0;
sigemptyset(&act.sa_mask);
sigaction(SIGPROF, &act, NULL);
}
void init_time(void) {
struct itimerval val;
val.it_value.tv_sec = 30; //Timer 30 Seconds
val.it_value.tv_usec = 0;
val.it_interval = val.it_value;
setitimer(ITIMER_PROF, &val, NULL);
}
int main()
{
/*Set the handler for the signal SIG to HANDLER */
signal(SIGINT, signal_handler);
init_sigaction();
init_time();
Some_other_function();
}
他の機能を使用しています。他の機能が実行されるまで、sigactionタイマーを一時停止したいと思います。どのように私は中断のための割り込みを実装できますか?あなたは、例えばと、いくつかの信号を遮断する検討することもでき
おかげで、
タイマーの実行を停止するか、シグナルハンドラの実行を延期しますか? – Hasturkun
私はタイマーを停止したい、そして、私の他のプロセスが完了したら、私はタイマーを実行したい。 – Nimit