c - 我怎样才能知道类 unix 操作系统是否实现了 POSIX 信号量?

标签 c posix semaphore

如何确定类 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/

相关文章:

MySQL INSERT INTO 查询在 C 中太慢

c - 为结构数组中的结构成员分配内存后写入无效

c - 分段故障核心转储[C语言,链表]

java - 使用信号量阻塞线程,直到所有其他线程都运行临界区一定次数

c - 进程间信号量有时无法按预期工作

使用信号量的 Java 男女通用浴室程序 - 逻辑问题

c - 通过 SPI 进行 Pic to Pic 通信

c++ - C++。从Linux守护程序获取登录用户名

c - 我应该在 poll() 循环中调用 close()

c++ - 如何将std::function类型分配给sigevent.sigev_notify_function(POSIX计时器)