2012-04-21 33 views
3

所以這個問題真的是「爲什麼time.h在OS X和Linux上不一樣?」但是,我已經爲這些差異而和平了。如何在OS X C代碼中創建異步定時器?

要在「Unix的」系統上創建定時器,我跟着這個教程http://www.helsinki.fi/atk/unix/dec_manuals/DOC_40D/APS33DTE/DOCU_007.HTM#timer-type-sec

這就需要使用的<sys/time.h>和呼叫timer_create(),然後設置爲信號類型的信號處理程序。這我知道該怎麼做。問題是,在OS X上同樣如何實現?

需要注意的關鍵是這些定時器需要實時,即異步排隊,並且必須使用struct sigactionsa_sigaction字段,以便與定時器鬧鐘關聯的元數據可以傳遞給信號處理程序。這在這裏更詳細地描述於http://www.helsinki.fi/atk/unix/dec_manuals/DOC_40D/APS33DTE/DOCU_006.HTM#sigevent-sec

回答

0

你看過setitimer()嗎?

+1

是的,不幸的是這不起作用,因爲我需要定時器是異步的,並且包含關於它們的事件的元數據。這在Linux中使用'siginfo_t'數據結構,'timer_create()'允許我使用'sigevent'數據結構作爲輸入來設置。 – emish 2012-04-23 04:34:25