Funzione sem_open 3 c

Funzione sem_open 3 c
Un semaforo specificato e un thread sono associati dal metodo sem_open (). L'IP fornito dall'argomento a sem. Qui discuteremo della copertura della funzione SEM_OPEN con l'implementazione di Ubuntu.

Sintassi della funzione SEM_OPEN 3 C

# sem

Descrizione della funzione sem_open ()

Viene fatto un collegamento tra un semaforo definito e un framework utilizzando il metodo sem_open (). La posizione è ottenuta mediante l'uso della funzione sem_open () insieme al termine semaforo che consente al sistema di fare riferimento al semaforo corrispondente con l'etichetta specificata. Fino a quando il semaforo non viene terminato correttamente da una funzione SEM Close () o da qualsiasi altro metodo del dirigente, può ancora essere utilizzato dalla funzione. L'operazione alla funzione sem_open () determina se il semaforo è generato o accessibile solo, a seconda del parametro OfLag. Gli elementi di flag elencati di seguito possono essere configurati nel parametro OFLAG:

O_Creat Flag:

Se un semaforo non si presentasse ancora, viene stabilito usando questo flag. O_Creat non ha alcun impatto se il semaforo è presente e specificato, ad eccezione di quello che viene menzionato nell'o_excl. Si forma invece un semaforo etichettato se utilizziamo la funzione sem_open (). I parametri di 3 ° e 4 ° per l'attributo O_Creat sono modalità di formato T, il suo contenuto e del tipo di dati non firmato intero.

Un valore approssimativo dei dati viene utilizzato per costruire il semaforo. I semafori devono avere i valori iniziali che sono maggiori o equivalenti al valore SEM max. L'ID utente efficiente del programma è assegnato come ID univoco del semaforo. O l'ID standard del computer o l'ID gruppo efficiente del framework è fornito come ID gruppo del semaforo.

Oltre a quelli configurati nella maschera di inizializzazione del formato file del sistema, i byte di autorizzazione del semaforo sono tutti assegnati al valore della modalità argomento. L'impatto è ambiguo ogni volta che vengono forniti gli elementi in una modalità anziché i flag di accesso al file. Altre metodologie possono collegarsi al semaforo invocando la funzione sem_open () con un valore simile del titolo. Successivamente, il nome semaforo definito è formato dalla funzione sem_open () incluso il flag o_creat.

Flag O_excl:

Se il titolo di semaforo esiste già, sem. In termini di altri metodi che invocano la funzione sem.

Il risultato è indefinibile quando vengono specificati O_excl e O_Creat. L'impatto non è definito se la variabile OFLAG contiene flag a parte O_Creat e O_excl. Una stringa che specifica un elemento semaforo è l'origine del parametro del nome. Se il valore risiede nei file di sistema ed è accessibile ai metodi che utilizzano i pathnames poiché non vengono forniti i parametri, il parametro del nome soddisfa i requisiti per la formazione di un percorso. L'elemento iniziale nel nome è una barra (/) e nessun altro elemento nel nome può contenere tagli.

La stessa posizione di semaforo è fornita per ogni accesso consecutivo alla funzione sem_open () che un metodo rende il valore del nome simile, a condizione che non siano stati fatti argomenti alla funzione sem_unlink () per tale semaforo. I collegamenti ai duplicati di semaforo generano risultati incoerenti. I semafori non identificati sono impiegati con il metodo sem_init ().

Valore di ritorno

La funzione restituisce la posizione del semaforo dopo un'esecuzione riuscita. In caso contrario, questo dovrebbe essere assegnato Errno per identificare l'errore e generare i risultati del SEM non riuscito. L'intestazione contiene una descrizione per il termine SEM non riuscito. Se il sem_open () non riesce, fornisce sempre il valore sotto forma di SEM non riuscita.

Esempio di funzione SEM_OPEN 3 C in Ubuntu

Vediamo come funziona la funzione sem_open () in ubuntu. All'inizio del programma, vengono importate diverse librerie. Questi moduli sono responsabili di gestire le diverse funzioni. Quindi, definiamo le dimensioni del buffer e lo impostiamo su 10. Inizializziamo un buffer variabile e dichiariamo le diverse altre variabili. Nel passaggio successivo, inizializziamo la variabile del contatore insieme a questi due costruttori specificati. Applichiamo il ciclo e definiamo la condizione. Utilizziamo anche il ciclo while.

Controlliamo se il valore della variabile contatore è uguale alla dimensione del buffer utilizzando un ciclo while. Ma se il valore del contatore è inferiore alla dimensione del buffer, ci sarà un incremento del valore del contatore. Inoltre, utilizziamo la funzione sleep () per trattenere l'output per un po '.

Utilizziamo il costruttore vuoto del consumatore. All'interno di questo, applichiamo il costruttore della variabile "var". Inizializziamo la variabile "elemento". Quindi, utilizziamo un po '. Dopo questo, utilizziamo l'istruzione IF per confermare se il valore del contatore è maggiore di 0 o no. Se il valore del contatore è maggiore di 0, c'è un decremento nel valore del contatore.


In questa fase del codice, dichiariamo le varie variabili. Ora dichiariamo un costruttore. Chiamiamo il metodo sem_open (). Contiene quattro parametri diversi. Per terminare il programma, applichiamo la funzione pThread_exit ().

Ottiamo questo tipo di output seguente dopo aver eseguito il codice aereo:

Conclusione

In questo editoriale, abbiamo parlato dell'uso della funzione SEM_OPEN 3 C in Ubuntu. Innanzitutto, abbiamo visto la sintassi di questa funzione. Quindi, abbiamo descritto alcune caratteristiche di questa funzione. Dopo tutto ciò, abbiamo eseguito un programma in Ubuntu che ha la funzione sem_open ().