首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sem_open导致非法查找错误

Sem_open导致非法查找错误
EN

Stack Overflow用户
提问于 2012-05-02 08:05:34
回答 1查看 452关注 0票数 0

我正在努力解决读者-作家问题问题。下面的函数应该创建命名的信号量。

代码语言:javascript
运行
复制
void createSems(void){

if((sem_counter = sem_open("counter", O_CREAT, 0660, 1)) == SEM_FAILED)
    printErrorAndKill("sem_open_counter");
if((sem_reader = sem_open("reader", O_CREAT, 0660, 1)) == SEM_FAILED)
    printErrorAndKill("sem_open_reader");    
if((sem_writer = sem_open("writer", O_CREAT, 0660, 1)) == SEM_FAILED)
    printErrorAndKill("sem_open_writer");  
if((sem_writer = sem_open("mutex1", O_CREAT, 0660, 1)) == SEM_FAILED)
    printErrorAndKill("mutex1");
if((sem_writer = sem_open("mutex2", O_CREAT, 0660, 1)) == SEM_FAILED)
    printErrorAndKill("mutex2");
if((sem_writer = sem_open("mutex3", O_CREAT, 0660, 1)) == SEM_FAILED)
    printErrorAndKill("mutex3");

}

void printErrorAndKill (const char *functionName){    
perror(functionName);
printf("%s: %s\n",functionName, strerror(errno));
exit(1);
}

一切都如期而至,我的10.7.3英镑。但是当我在学校服务器上测试它时,我得到了以下输出。

代码语言:javascript
运行
复制
sem_open_reader: Permission denied
sem_open_reader: Illegal seek

每次都成功地创建了第一个信号量。我试着搜索这个错误,但是没有成功,也没有任何与sem_open的连接。

,我的问题是,当我创建信号量时,我是不是做错了什么,还是问题出在其他地方?

更新

我做了更多的测试,最终发现这与非法搜捕无关。我去掉了“perror(FunctionName)”一行,只是为了找出问题仅仅是权限问题。有些名字是在我们学校的操作系统上保留的,所以我只需要带一些更相关的名字。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-02 08:28:08

“非法查找”消息可能是由perror()引起的。我的系统上的perror手册页说:“请注意,在成功的库调用之后,errno是未定义的:这个调用很可能会改变这个变量,即使它成功了,例如,因为它内部使用了其他一些失败的库函数。”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10409901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档