【发布时间】:2016-08-25 06:05:13
【问题描述】:
我使用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;
【问题讨论】: