我正在尝试编写一个简单的信号量程序,并在 OSX 中发现了一些不同的东西。我使用 Mountain Lion 和最新的 Xcode 版本。忘记了缺少大括号的语法错误..因为我下面有更多代码,没有复制完整的片段,
基本上我除了用 sem_wait 停止而不超出的代码。
代码编译输出如下
Output:
-------
Semaphore wait failed with ret code: -1, and err: 9.
Semaphore init failed with ret code: -1, and err: 9.
回溯到错误码9,就是EBADF
我的程序是
int main(int argc, char * argv[])
{
pthread_t tid1, tid2;
int rc;
rc = sem_unlink(&mutex);
rc = sem_open(&mutex, O_CREAT,O_RDWR,0);
rc = sem_wait(&mutex);
if(rc == 0) {
printf("Semaphore try wait ok!. \n");
} else {
printf("Semaphore wait failed with ret code: %d, and err: %d. \n",
rc, errno);
}
if(rc != SEM_FAILED) {
printf("Semaphore init ok!. \n");
} else {
printf("Semaphore init failed with ret code: %d, and err: %d. \n",
rc, errno);
return 0;
}
这里的任何帮助都是非常宝贵的。