У меня есть очень простой семафорный код, который отлично работает на Linux, но не могу заставить меня нормально работать на OS X ... Он возвращает самые странные результаты ...
#include <iostream>
#include <fcntl.h>
#include <stdio.h>
#include <semaphore.h>
int main()
{
sem_t* test;
test = sem_open("test", O_CREAT, 0, 1);
int value;
sem_getvalue(test, &value);
printf("Semaphore initialized to %d\n", value);
}
Компиляция этого на OS X с g ++ возвращает следующий вывод:
iQudsi:Desktop mqudsi$ g++ test.cpp
iQudsi:Desktop mqudsi$ ./a.out
Semaphore initialized to -1881139893
Принимая во внимание, что на Ubuntu я получаю совершенно более нормальный результат:
iQudsi: Desktop mqudsi$ g++ test.cpp -lrt
iQudsi:Desktop mqudsi$ ./a.out
Semaphore initialized to 1
Я занимался этим 3 часа подряд и не могу понять, почему OS X возвращает такие странные результаты ...
Я пытался использовать пути к файлам в качестве имени семафора, это не имело значения.
Буду признателен за любую помощь, которую смогу получить.