UNIXでゼロ操作を待機する方法を理解しようとしています。私はこのコードを持っていますが、指定された値と常に同じ値で待機を停止します。
int main(void){
int sem;
struct sembuf sops[2];
if((sem = semget(IPC_PRIVATE, 1, IPC_CREAT | 0600))==-1){
perror("Error semget");
return 100;
}
fork();
//printf("Empieza la accion\n");
if(semctl(sem,0,SETVAL,2)==-1){
printf("Error semctl\n");
exit(100);
}
printf("Value: %d\n",semctl(sem,0,GETVAL));
sops[0].sem_num=0;
sops[0].sem_op=-1;
sops[0].sem_flg=0;
//WAIT(0)
sops[1].sem_num=0;
sops[1].sem_op=0;
sops[1].sem_flg=0;
printf("Value: %d\n",semctl(sem,0,GETVAL));
if(semop(sem,&sops,2)<0) printf("Error semop\n");
printf("Value: %d\n",semctl(sem,0,GETVAL));
printf("End\n");
}