gpt4 book ai didi

c - 如何使用semctl设置信号量集中第n个信号量的值

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

我使用 semget 创建了一个 System V 信号量

#define SEM_ID 250
...
sem_set_id = semget(SEM_ID, 1, IPC_CREAT | 0660);
if (sem_set_id == -1) {
perror("main: semget");
exit(1);

现在,根据我的理解,这将创建一个信号量集,其中包含许多信号量。但是如何识别特定的信号量以使用 semctl...

设置其值
int iter=0;
for(iter=0;iter<no_of_jobs;iter++)
{
int rc=semctl(semid,iter,SETVAL, sem_val);
if(rc==-1)
{printf("Error:semctl\n");
exit(1);
}
}

上面的代码对 iter=0 运行但对其他代码运行失败。在 struct semun sem_val 中,我设置了值 sem_val.val=1;

最佳答案

semget() 的第二个参数是信号量集中信号量的数量。您指定了 1,因此您得到了一个信号量。访问一个信号量以外的任何内容都会导致错误。

例如,将 1 更改为 10,您应该可以迭代信号量 0..9(含)。

关于c - 如何使用semctl设置信号量集中第n个信号量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39137770/

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