为什么我不能用4个信号量打开semget的信号量集?即:
semget(key_t key, int nsems, int semflg);
在nsms为3的情况下调用上面的函数是可以的,但是在nsms为4的情况下,它返回的是负1。
int sempahore = semget((key_t)key,4,IPC_CREAT | MY_PERMS);
仅当我将4改为3时,上述代码才有效
否则errno将返回无效参数
发布于 2013-03-12 23:51:24
根据我的Linux机器上的手册页,如果"nsems小于0或大于每个信号量集的信号量数量限制(SEMMSL),或者与键对应的信号量集已经存在,并且nsems大于该集合中的信号量数量“,则semget
可以返回EINVAL
。
我怀疑你遇到了第二种情况-检查你是否已经创建了一个具有相同键和3个信号量的集合。
https://stackoverflow.com/questions/15374181
复制相似问题