Mam taki kod, do opuszczania semafora (oznaczania na 1):
// wyznaczam jednoznaczny klucz
key_t klucz = ftok(".", 'a');
if (klucz < 0) {
char *komunikat = strerror(errno);
printf("ERROR: %s", komunikat);
return 0;
} else {
printf("%d \n", klucz);
}
int idZestawu = semget(klucz, 1, IPC_CREAT | 0777);
if (idZestawu < 0) {
printf("ERROR");
return 0;
} else {
printf("%d \n", idZestawu);
}
struct sembuf semOp;
semOp.sem_num = 0;
semOp.sem_op = 1;
semOp.sem_flg = 0;
int status = semop(idZestawu, &semOp, 1);
if (status < 0) {
printf("ERROR! Nie mogę opuścić/podnieść semafora \n");
}
Nie wiem jednak jak w drugim procesie sprawdzić jaka wartość jest w semOp.sem_op.
Oczywiście funkcje ftok() i semget() zwracają mi te same wartości co w programie powyżej.