Linuxでうまく機能する非常に基本的なセマフォコードがいくつかありますが、OSXで正しく実行することはできません...それは奇妙な結果を返します...
#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);
}
これをOSXで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時間続けていますが、OSXがなぜこのような奇妙な結果を返しているのか理解できません...
セマフォ名としてファイルパスを使用してみましたが、違いはありませんでした。
私が得ることができるどんな助けにも感謝します。