Chiamata di sistema semctl in c

Chiamata di sistema semctl in c
Il linguaggio C viene fornito con la chiamata di sistema SEMCTL nel sistema Linux. Questa chiamata di sistema è stata ampiamente utilizzata nel sistema Linux per eseguire i processi di controllo specificati dalla shell della console su un particolare set di semaforo. I semafori sono noti IP ampiamente utilizzati per dare accesso ai processi per la comunicazione tra loro. Il semaforo può essere una variabile con tipo di dati astratti per l'accesso di controllo di 1 risorsa per molte procedure. Quindi, la chiamata di sistema SEMCTL è stata utilizzata qui per controllare il set di semaforo. Cominciamo registrandoti dal sistema Linux.

Apri l'applicazione della console dall'area di ricerca. Un modo rapido alternativo per aprire la console è tramite "ctrl+alt+t".

Esempio:

Crea un nuovo file C nella cartella domestica del sistema Linux con l'utilizzo del comando "Touch". Abbiamo nominato questo file c come "Semctl.C". Puoi nominarlo come vuoi. La query è la seguente:

$ touch semctl.C

L'editor GNU Nano verrà utilizzato per modificare e aprire il file. Quindi, la query sotto indicata è stata utilizzata per aprire il "Semctl.file c ".

$ nano semctl.C

Come mostrato nell'immagine sotto che il file è già stato aperto nell'editor. Scrivi lo stesso codice nel tuo file per visualizzare il funzionamento della chiamata di sistema "Semctl ()". Il file di intestazione per input-output e semafori è stato incluso all'inizio del file C. Il metodo principale è stato dichiarato insieme a un'altra funzione, "get_val ()". A partire dal metodo principale, abbiamo definito una variabile "V" ottenendo il suo valore dalla funzione get_val. Questo metodo è stato chiamato mentre è passato con due argomenti nei parametri. Ora il controllo è stato dato alla funzione get_val (). Questa funzione contiene due argomenti, E.G. SID come ID semaforo e "semnum" come numero di semaforo. I valori passati 1 e 4 saranno salvati su questi argomenti.

Il comando Semctl è stato utilizzato all'interno della funzione per ottenere il set di semaforo corrente utilizzando l'ID semaforo e il numero di semaforo. La funzione getval è stata utilizzata qui per ottenere il valore di semaforo corrente. Dopo la raccolta di un valore di semaforo, è stato restituito al metodo principale. Il valore è stato memorizzato nella variabile "V". Questo valore variabile verrà visualizzato utilizzando l'istruzione printf mostrata nel codice C. Ora puoi salvare il codice completato tramite "ctrl+s" e lasciarlo alla console utilizzando comandi di scelta rapida "ctrl+x".

Compilamoci il "Semctl.File C "nella console. Utilizzare il compilatore "GCC" consigliato per tali tipi di codici C complicati. La compilazione restituisce l'avvertimento, ma non è necessario il panico. Eseguire il tuo file con "a.comando fuori ". L'output mostra che il valore di semaforo corrente è "-1".

$ GCC Semctl.C
$ ./UN.fuori

Apriamo di nuovo il file per renderlo un po 'diverso. Aprilo usando l'editor "nano" e definisci la variabile "max_comps" con un certo valore, E.G. 10. Questa volta aggiorna il codice con lo script mostrato di seguito. Inizia dall'inizializzazione del metodo principale. Contiene la funzione di funzione del metodo comp_use (). Ora il controllo è stato dato al metodo comp_use.

La funzione comp_use contiene il ciclo "per" per utilizzare il valore "max_comps" variabile come valore massimo per il loop "per". Fino al termine del ciclo, l'istruzione di stampa mostrerà il numero del computer. Ottiene e stampare anche il valore di semaforo corrente dal metodo "get_val" chiamandolo qui. Il metodo get_val è stato eseguito e restituito il suo valore all'istruzione di stampa di funzione comp_use () per visualizzarlo sullo schermo. Salva ancora una volta il file del codice e esci per tornare.

Ora dobbiamo compilare il codice aggiornato con il comando "GCC" per la compilazione. Dopo la compilazione riuscita, abbiamo eseguito il file e ottenuto il valore semaforo per ciascun computer.

$ GCC Semctl.C
$ ./UN.fuori

Conclusione:

La chiamata di sistema Semctl e il suo lavoro sono stati dimostrati chiaramente in questa guida con il linguaggio C usando Ubuntu 20.04 Sistema Linux. Speriamo che troverai questo articolo utile mentre si capisce e imparando i concetti di semafori nel sistema Linux.