2014-07-04 59 views
1

我正在嘗試編寫一個基準,它從內核收到一個信號,告訴它調整它的參數。我試圖研究一種主動式還是反應式方法最適合。創建新信號或複用SIGALRM?

在主動方法中,我使用setitimer定期設置警報,並強制基準測試到目前爲止的性能並重新進行自我調整。

在被動方法中,內核定期監視進程並在進程表現不佳時發出信號。

由於我一直在使用setitimer功能,並且由於setitimer導致SIGALRM,所以我要求內核在反應式方法中拋出SIGALRM。這一直工作正常。但是,現在我需要使用SIGALRM在特定的時間段內運行基準測試。

有沒有辦法複用SIGALRM以達到兩個目的 - 執行定時運行並終止以重新調整。是否有類似於setitimer的函數/系統調用,允許用戶設置鬧鐘,但使用自定義信號?

回答

1

是的。你想看看timer_create/timer_settime等等家庭的電話。

timer_create的第二個參數是struct sigevent。其中的字段sigev_signo可以設置爲在定時器到期時發送特定的信號編號。