如何确定类 unix 操作系统(例如 Mac OS X/Linux 2.6)是否实现了 POSIX 信号量?我可以使用 sysconf 获取它吗?
#include <unistd.h>
long sysconf(int name);
我只想在 Linux/Mac OS X 中使用 POSIX 信号量 api(sem_init/sem_wait/sem_post)。我看到 Linux 2.6 和 MAC OS X 10.6.6 都实现了 POSIX 信号量。但是,在编写跨平台应用程序时,如何确定类 unix 操作系统是否实现了 POSIX 信号量。
最佳答案
是的,sysconf 应该用标签回答查询
_POSIX_SEMAPHORES
支持的版本号。在 POSIX 系统上,您还有 getconf
。例如,在我的 linux 机器上,我得到了
>% getconf _POSIX_SEMAPHORES
200809
因此您可以将它集成到构建脚本或类似的东西中。
在 Linux 上,您还应该有一个手册页 posixoptions
。
但要注意始终检查sem_init
的返回。 AFAIR,OS X 总是返回 -1
来简单地实现这一点。
关于c - 我怎样才能知道类 unix 操作系统是否实现了 POSIX 信号量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8464168/