2012-04-21 70 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