所以这个问题真的是“为什么 time.h 在 OS X 和 Linux 上不一样?” 但是,我已经接受了这些差异。
要在“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 上实现的?
需要注意的关键是这些计时器需要是实时的,即异步排队并且必须使用sa_sigaction
a 的字段struct sigaction
,以便可以将与计时器警报关联的元数据传递给信号处理程序。这在http://www.helsinki.fi/atk/unix/dec_manuals/DOC_40D/APS33DTE/DOCU_006.HTM#sigevent-sec有更详细的描述。