Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么我不能为其信号量集打开带有 4 个信号量的 semget?IE。:
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),或者与 key 对应的信号量集已经存在,并且 nsems 更大,则可以semget返回EINVAL比那组信号量的数量还要多。”
semget
EINVAL
我怀疑你遇到了第二种情况 - 检查你是否已经创建了一个具有相同键和 3 个信号量的集合。