gpt4 book ai didi

c - C 中用于共享内存的信号量无法初始化

转载 作者:太空宇宙 更新时间:2023-11-03 23:49:44 24 4
gpt4 key购买 nike

命令 semctl 始终返回 -1(在控制台中返回“Fail2”)。我做错了什么?

union semun{
int val;
struct semid_ds *buf;
unsigned short int *array;
struct seminfo *__buf;
} forsem;
forsem.val = 0;


int sem;
if((sem= semget(key, 1, 0666 | IPC_CREAT) == -1)) {
fprintf(stderr, "Fail1");
}

if (semctl(sem, 0, SETVAL, forsem) == -1) {
fprintf(stderr, "Fail2");
}

Errno 写入无效参数

最佳答案

你犯了一个简单的错误:在

if((sem= semget(key, 1, 0666 | IPC_CREAT) == -1)) {
fprintf(stderr, "Fail1");
}

你应该写

if((sem= semget(key, 1, 0666 | IPC_CREAT)) == -1) {
fprintf(stderr, "Fail1");
}

注意到括号了吗?

顺便说一下,错误是 EIDRM 因为 sem 在您的代码中是 0,而不是 Invalid Argument

关于c - C 中用于共享内存的信号量无法初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23298700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com