【发布时间】:2015-04-19 14:32:52
【问题描述】:
这听起来像是一个微不足道的问题,但我无法轻易找到解决方案。
这是我的代码:
#include <iostream>
#include <fcntl.h>
#include <semaphore.h>
using namespace std;
int main()
{
sem_t * my_semaphore = sem_open("./my_semaphore", O_CREAT, 0755, 1);
cout<<my_semaphore<<endl;
}
这会打印出 0:信号量未创建。我究竟做错了什么?我在 OSX 环境中测试了这段代码,它运行良好。
【问题讨论】:
-
使用
perror找出错误所在。 (在你伤害自己之前放弃using namespace std;。) -
好的。它说“没有这样的文件或目录。”。 O_CREAT 标志不是应该让它创建信号量吗...?