nikpez
Ominide
1 min. di lettura
Vota 3 / 5

Concetti Chiave

  • Il programma in C crea e inizializza un semaforo utilizzando la libreria System V IPC.
  • Il semaforo è identificato con la chiave definita SEM_NUMBER con il valore 2012.
  • Viene utilizzata la funzione semget per ottenere l'identificatore del semaforo, con permessi di creazione 0666.
  • La funzione semctl è utilizzata per impostare il valore iniziale del semaforo a 0.
  • Se si verifica un errore nella creazione o nell'inizializzazione, vengono stampati messaggi di errore appropriati.
Programma C - Semaforo

#include
#include
#include
#include

/* IDENTIFICATORE DEL SEMAFORO */
#define SEM_NUMBER 2012

int main()
{
int id;

union semun {
int val;
struct semid_ds *buf;
ushort * array;
} argument;

argument.val = 0;

/* int semget(SEM_NUMBER_t SEM_NUMBER, int nsems, int semflg); */
/* CREATO 1 SEMAFORO CON CHIAVE SEM_NUMBER */
id = semget(SEM_NUMBER, 1, 0666 | IPC_CREAT);

if(id {
fprintf(stderr, "Impossibile attivare il semaforo.\n");
return 1;
}

/* int semctl(int semid, int semnum, int cmd, ...); */

if( semctl(id, 0, SETVAL, argument) {
fprintf( stderr, "Impossibile settare il valore 0 nel semaforo.\n");
}
else
{
fprintf(stderr, "Semaforo %d inizializzato.\n", SEM_NUMBER);
}

return 0;
}

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community