首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux下调用semget()时的EINVAL

Linux下调用semget()时的EINVAL
EN

Stack Overflow用户
提问于 2013-03-13 07:21:28
回答 1查看 1.4K关注 0票数 1

为什么我不能用4个信号量打开semget的信号量集?即:

代码语言:javascript
复制
semget(key_t key, int nsems, int semflg); 

在nsms为3的情况下调用上面的函数是可以的,但是在nsms为4的情况下,它返回的是负1。

代码语言:javascript
复制
int sempahore = semget((key_t)key,4,IPC_CREAT | MY_PERMS);

仅当我将4改为3时,上述代码才有效

否则errno将返回无效参数

EN

回答 1

Stack Overflow用户

发布于 2013-03-13 07:51:24

根据我的Linux机器上的手册页,如果"nsems小于0或大于每个信号量集的信号量数量限制(SEMMSL),或者与键对应的信号量集已经存在,并且nsems大于该集合中的信号量数量“,则semget可以返回EINVAL

我怀疑你遇到了第二种情况-检查你是否已经创建了一个具有相同键和3个信号量的集合。

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

https://stackoverflow.com/questions/15374181

复制
相关文章

相似问题

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