繁体   English   中英

信号量计数器:程序挂起

[英]Semaphore counter: program hangs

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

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。 关于可能是什么问题的任何建议? 我会误以为是错误的吗? 解冻

文档

设置

使用arg.array为集合的所有信号量设置semval,

对于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]您只创建了一个信号量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM