2012-04-27 4 views
0

setitimer関数を使用して、struct itimervalへのポインタを使用してITIMER_VIRTUALタイマーを設定しています。これは仮想タイマーです(プロセスが制御権を持っている場合にのみ実行されます)、0に達するとSIGVTALRMシグナルが送信されます。 私の質問は - setitimerを呼び出した後、アクティブなタイマーを無効にする方法があるので、タイマーが終了したらこの信号は消えませんか?それを無視する唯一の方法は、この信号を無視するようにプログラムに指示する信号マスクを設定することですか?アクティブなitimerを無効にする

ありがとうございます!

答えて

0

マニュアルページによれば、同じタイマーハンドルとitimerval構造体のit_valueフィールドがゼロに設定された状態で、もう一度setitimer()を呼び出してください。

あなたはimmeditatelyそれを無効にすることができます:0にit_valueを設定

にかかわらずにit_intervalの値に、タイマーを無効にするものとします。

それとも次の火災後:

その次の満了後、タイマを無効にしなければなら0ににit_intervalを設定する(it_valueがゼロであると仮定した場合)。

+0

お返事ありがとうございます。私の問題は、別の 'struct itimerval'を使って' setitimer() 'を呼び出してタイマーを無効にしようとしたことが原因であることが判明しました。そのit_valueはゼロに設定されています。代わりに、私は元の 'struct itimerval'の' it_value'をゼロに変更し、 'setitimer()'関数をリセットするだけでした。 – Mosheke

0

settimerと呼び出し、it_value0と設定してタイマーを停止します。