我使用setitimer
函數爲了設置ITIMER_VIRTUAL
定時器,使用指針struct itimerval
。這是一個虛擬計時器(只有當過程有控制時才運行),並在信號到達零點時發送一個SIGVTALRM
信號。 我的問題是 - 在撥打setitimer
後,有什麼方法可以禁用活動計時器,所以當計時器結束時這個信號不會關閉?或者是現在忽略它的唯一方法是設置SIGNAL MASK命令程序忽略該信號?禁用活動itimer
謝謝!
我使用setitimer
函數爲了設置ITIMER_VIRTUAL
定時器,使用指針struct itimerval
。這是一個虛擬計時器(只有當過程有控制時才運行),並在信號到達零點時發送一個SIGVTALRM
信號。 我的問題是 - 在撥打setitimer
後,有什麼方法可以禁用活動計時器,所以當計時器結束時這個信號不會關閉?或者是現在忽略它的唯一方法是設置SIGNAL MASK命令程序忽略該信號?禁用活動itimer
謝謝!
根據手冊頁,再次調用setitimer()
,使用相同的定時器句柄和itimerval結構的it_value
字段設置爲零。
可以immeditately禁用它:
it_value設置爲0,應禁用計時器,無論it_interval的價值。
或之後下一個火災:it_interval設置爲0的下一次期滿之後應禁用計時器
(假定it_value的非零)。
撥打settimer
並設置it_value
到0
停止計時器。
謝謝你的回答。原來我的問題是由於嘗試通過調用'setitimer()'使用不同的'struct itimerval',並將其'it_value'設置爲零來禁用計時器而引起的。相反,我應該將原來的struct itimerval的'it_value'改爲零,並重置'setitimer()'函數。 – Mosheke 2012-04-27 15:41:14