Il prof, ci fa implementare queste definizioni di funzione e poi ci fa usare le funzioni.
Io volevo sapere se esiste un manuale nel terminale per visualizzare tutte le informazioni relative.
Ad esempio se nel terminale scrivo "man fgets" mi spunta tutta la spiegazione sull'fgets, i valori di ritorno, gli errori, la descrizione.
#include<sys/sem.h>
union semun{
int val;
struct semid_ds *buf;
unsigned short *array;
};
int SEM_SET(int sem_id, int sem_num, int sem_val)
{
union semun sem_union;
sem_union.val = sem_val;
if (semctl(sem_id, sem_num, SETVAL, sem_union) == -1)
return(-1);
return(0);
}
void SEM_DEL(int sem_id, int sem_num)
{
union semun sem_union;
if (semctl(sem_id, sem_num, IPC_RMID, sem_union) == -1)
fprintf(stderr, "Failed to delete semaphore\n");
}
int SEM_P(int sem_id, int sem_num) //wait lock
{
struct sembuf sem_b;
sem_b.sem_num = sem_num;
sem_b.sem_op = -1; /* P() */
sem_b.sem_flg = SEM_UNDO;
if (semop(sem_id, &sem_b, 1) == -1) {
fprintf(stderr, "P() failed\n");
return(-1);
}
return(0);
}
int SEM_V(int sem_id, int sem_num) //signal unlock
{
struct sembuf sem_b;
sem_b.sem_num = sem_num;
sem_b.sem_op = 1; /* V() */
sem_b.sem_flg = SEM_UNDO;
if (semop(sem_id, &sem_b, 1) == -1) {
fprintf(stderr, "V() failed\n");
return(-1);
}
return(0);
}