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.
#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;
}