为什么我的信号量集无法打开带有4个信号量的semget?
即:
semget(key_t key, int nsems, int semflg);
使用nsms作为3调用上述函数是可以的,但是使用4则返回负1。
int sempahore = semget((key_t)key,4,IPC_CREAT | MY_PERMS);
以上代码仅在我将4更改为3时有效
其他明智的errno返回无效的参数
最佳答案
根据我的Linux机器上的手册页,如果“nsems小于0或大于每个信号量集(SEMMSL)的信号量限制,或者已经存在与键对应的信号量集,并且nsems,则semget
可以返回EINVAL
大于该集合中的信号灯数量。”
我怀疑您遇到了第二种情况-检查您是否已经创建了一个具有相同密钥和3个信号量的集合。
关于c++ - 在Linux下调用semget()时为EINVAL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15374181/