Esempio 01:
Apri e accedi da Ubuntu 20.04 e avvia l'applicazione denominata "terminale" dall'area di attività. Questo potrebbe essere fatto utilizzando un semplice collegamento chiave "ctrl+alt+t" sul desktop. Crea un file di tipo C per implementare la chiamata di sistema PRCTL (), eseguire il comando mostrato nello snap sotto.
$ TOUCT PRTCL.C
Dopo la creazione, apriamo il file con un editor GNU Nano secondo l'istruzione mostrata.
$ nano prtcl.C
Aggiungi il codice mostrato nell'immagine SNAP sottostante all'interno del file GNU. Il codice contiene i file di intestazione necessari per il funzionamento di un codice PRCTL (). Quindi abbiamo creato e definito 4 thread denominati Process1, Process2, Process3 e Process4. Tutti e 4 i processi o le funzioni contengono il vuoto come parametro generale o di firma, ma potrebbe essere qualcos'altro. Come abbiamo elaborato in precedenza, il primo parametro della chiamata di sistema "PRCTL ()" mostrerà cosa abbiamo a che fare con la funzione di chiamata. Quindi, abbiamo chiamato PRCTL () in tutti e 4 i metodi per impostare il nome di un processo utilizzando l'argomento "PR_SET_NAME". Dopo il sonno di 2 secondi, la funzione Puts verrà eseguita per impostare il nome di un processo.
Quindi abbiamo dichiarato un puntatore di tipo array chiamato "FP" e i suoi elementi contengono i nomi di 4 metodi o processi. Il metodo principale ha dichiarato un "id" variabile qui indica i processi. Il ciclo "per" è stato utilizzato qui per creare un processo figlio per ogni processo genitore utilizzando il metodo "fork ()" e salvarlo in "int" variabile "int". L'istruzione "if" è stata utilizzata per verificare se "ID" è 0. Se la condizione si soddisfa, stamperà il numero di processo figlio e l'array "FP" verrà utilizzato come metodo per recuperare il primo elemento, il processo 1 e così via fino al termine del ciclo. La chiamata dei metodi in questo modo lo farebbe eseguire tutti i metodi definiti sopra.
Compilare prima il file.
$ GCC PRCTL.C
L'esecuzione del file mostra l'output seguente. Il nome è stato impostato per ogni processo.
$ ./UN.fuori
Esempio 02:
Facciamo un'altra illustrazione di PRCTL. Apriamo il PRCTL.file c.
$ nano prctl.C
Dopo che le intestazioni sono state incluse, il metodo "Cap_1" è stato inizializzato. Il descrittore di file "F" è stato definito e una variabile "res" è stata inizializzata con un valore "-1". Ora il descrittore di file verrà utilizzato per ottenere la massima capacità dal kernel. Il descrittore di file aprirà il file in sola lettura dalla cartella del kernel. Se il descrittore di file ottiene più di 0 caratteri, l'array "buf" verrà definito con la dimensione 32. Sono stati definiti due numeri interi e il metodo di lettura è stato utilizzato per ottenere i dati dal buffer utilizzando il descrittore di file e salvato nella variabile "num". Se il valore "num" variabile è maggiore di 0, il valore corrispondente dell'indice di "num" variabile verrà inizializzato come null. Il metodo "SSCANF" legato il puntatore "Res" con l'array "BUF" e lo memorizzerà all'interno di "R" variabile. Ecco come potrebbe essere ottenuta la massima capacità dal kernel. Se il valore per la variabile "R" non è uguale a 1, aggiornerà di nuovo il valore di "Res" con "-1". Alla fine, la descrizione è stata chiusa.
Il secondo metodo, "Cap_2" è stato utilizzato per inizializzare la variabile di capacità equivale a 0. Il metodo PRCTL () Utilizzare "pr_capBet_read" per leggere la massima capacità. Se il valore della capacità è maggiore di 0, verrà incrementato. Quando la capacità arriva a 0, interromperà l'incremento e restituirà il valore "CP" con un decremento di 1.
Il metodo principale è ottenere la capacità da "Cap_1" e Cap_2 e stamparlo sulla condizione.
La compilazione e l'esecuzione di questo file mostrano che il valore massimo della capacità è 40.
$ GCC PRCTL.C
$ ./UN.fuori
Conclusione:
In questa guida, abbiamo discusso di due esempi per elaborare il sistema di sistema PRCTL () in C. Ti aiuterà molto perché l'abbiamo dimostrato con due argomenti diversi.