gpt4 book ai didi

c - 信号量计数器 : program hangs

转载 作者:行者123 更新时间:2023-11-30 17:39:54 27 4
gpt4 key购买 nike

我想使用以下代码创建一个信号量计数器:

union semun arg_assistant;
int max_ass = atoi(argv[1]);
printf("Num massimo di assistant %d\n", max_ass);
fflush(stdout);
if ((sem_a = semget(IPC_PRIVATE, 1, 0600)) == -1) {
perror("semget");
exit(EXIT_FAILURE);
}
arg_assistant.val = max_ass;
if (semctl(sem_a, 0, SETALL, arg_assistant) == -1) {
perror("semctl");
exit(EXIT_FAILURE);
}

当我执行程序时,没有错误,但它挂起并且不会创建此 sem。关于可能出现的问题有什么建议吗?我在使用猎鹰方面犯了一些错误吗?谢谢

最佳答案

来自documentation

SETALL

Set semval for all semaphores of the set using arg.array,

对于SETALL,您需要值数组

    unsigned short int  sem_array[1] ;
sem_array[0] = max_ass;
arg_assistant.array = sem_array;

if (semctl(sem_a, 0, SETALL, arg_assistant) == -1) {
perror("semctl");
exit(EXIT_FAILURE);
}

sem_array[1] 因为您只创建了一个信号量。

关于c - 信号量计数器 : program hangs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21662355/

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