Funzioni semafori "system V" Manuale di Linux(man)

di il
3 risposte

Funzioni semafori "system V" Manuale di Linux(man)

Ciao a tutti, sono uno studente di Ingegneria Informatica che sta preparando l'esame di Sistemi Operativi.
In particolar modo mi chiedevo se per le funzioni per array di semafori in System V (SEM_SET, SEM_DEL, SEM_P, SEM_V, ecc.) esiste una sezione nel manuale per programmatori Linux a cui si accede da terminale digitando "man <funzione>".
Stesso problema del manuale per quanto riguarda le varie pthread_attr_, come ad esempio la pthread_attr_setdetached.

Spero di essere stato chiaro,- in tal caso non esitate a chiedere info aggiuntive- e di non aver sbagliato sezione del forum.
Grazie in anticipo.

3 Risposte

  • Re: Funzioni semafori "system V" Manuale di Linux(man)

    Per la verità non tanto, ovviamente non esistono "veri" semafori system V (sono UNIX, non Linux), bensì implementazioni POSIX tra le quali anche quella per Linux.
    Se ho ben capito (cosa di cui dubito) ti serve documentarti su
        #include <sys/ipc.h> 
        #include <sys/sem.h>
  • Re: Funzioni semafori "system V" Manuale di Linux(man)

    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);
    }
    
    
  • Re: Funzioni semafori "system V" Manuale di Linux(man)

    Per quanto ne so, no
    da man puoi ottenere essenzialmente le funzioni di libc e libm, oltre un po' di system calls.
    nulla ti vieta, se sei curioso, di scaricarteli ftp://ftp.pluto.it/pub/pluto/ildp/man (le ultime ovviamente), estrarle e grep-parne il contenuto
Devi accedere o registrarti per scrivere nel forum
3 risposte