Mac OS X POSIX不兼容吗? (timer_settime)

时间:2014-12-14 20:53:08

标签: macos unix posix

我用C ++编写了一个使用Ubuntu下的timer_settime函数的程序,然后让我的朋友尝试在Mac OS X下编译它。timer_settime的手册页说这个函数符合POSIX.1-2001,但在OS X(声称符合POSIX)下,g ++会产生编译错误。网络搜索显示OS X API中没有此功能。

这是否意味着OS X不完全符合POSIX,或者我是否误解了POSIX兼容性意味着什么?

编辑:我查看了POSIX draft并在第2063页的系统界面的字母顺序列表中找到了这个函数,紧挨着标准C函数(例如printf),因此它看起来不像对我来说,timer_settime是标准的某种延伸。

1 个答案:

答案 0 :(得分:5)

事实证明,正如Ken Thomases建议的那样,timer_settime等高级计时器功能确实是POSIX实时扩展的一部分。引用此功能的文档的更改历史记录:

第6期

timer_getoverrun(),timer_gettime()和timer_settime()函数被标记为Timers选项的一部分。

第7期

timer_getoverrun(),timer_gettime()和timer_settime()函数从Timers选项移动到Base。

最新的POSIX标准POSIX.1-2008第7期最近于2013年发布。我朋友的计算机运行的OS X 10.9也于2013年底发布,因此我认为它确实如此。不符合最新标准。但是,2014年底发布的最新OS X v10.10" Yosemite"的维基百科says完全符合POSIX标准。

然而,毕竟,当某些功能被默默地标记为“扩展”时,我仍然不明白应该如何编写可移植代码。按标准,手册页没有提到这一重要事实。