我遇到了信号量方面的一些基本问题。
#include <iostream>
using namespace std;
#include <semaphore.h>
int main() {
sem_t sem;
sem_init(&sem, 1, 1);
sem_wait(&sem);
sem_wait(&sem);
printf("Return value: %d\n", sem_wait(&sem));
return 0;
}
我希望这段代码永远等待(由于第二个sem_wait)。 相反,它打印出“返回值:-1”,然后退出。 我正在使用Mac(OSX 10.8.5)上的g ++版本4.2.1进行编译。
答案 0 :(得分:1)
OS / X不支持未命名的POSIX信号量。使用sem_open()而不是sem_init()。