C Utilizzo della funzione setPGID

C Utilizzo della funzione setPGID
Ogni volta che inseriamo il comando shell, nella sessione viene avviato un nuovo processo. Il sistema assegna quindi un identificatore di processo (PID) e un identificatore del gruppo di processo (PGID). PID indica l'ID di processo, mentre PGID descrive l'ID gruppo di processo di qualsiasi attività attualmente eseguita dal sistema o ancora in corso. SetPGID () è una funzione rilevante per questo. Come indica il nome, viene utilizzato per aggiungere al gruppo di processo esistente o, in un altro caso, per creare un nuovo gruppo di processi all'interno della stessa sessione del processo di chiamata. L'ID del gruppo per il processo del leader della sessione è sempre lo stesso. Non è cambiato.

Questa funzione viene utilizzata per impostare il PGID (ID gruppo di processo) all'interno della sessione del processo di chiamata in modo da poter assegnare o riassegnare il processo a diversi gruppi di processo. Per avviare un nuovo gruppo di processo con qualsiasi processo particolare come leader di gruppo, questa funzione aiuta anche in questo aspetto. Questo articolo metterà in evidenza la creazione e il funzionamento della funzione setPGID ().

Descrizione

L'ID processo è un ID che esiste all'interno della sessione di un processo di chiamata. È l'ID il cui PGID vogliamo cambiare. Può essere il chiamante di setPgid () o può essere i bambini. Il PID non può essere il leader della sessione che deve essere cambiato.

PGID, d'altra parte, è il nuovo ID che vogliamo assegnare a quel particolare processo specificato da PID. Se PGID indica il gruppo di processo esistente, deve essere presente all'interno della sessione del chiamante. Il nuovo gruppo viene anche creato all'interno della sessione del chiamante.

Sintassi

#includere
int setPGID (PID_T, PGID);

La funzione setPgid () è presente nel campo della libreria. E questo è incluso nel fatto che stiamo usando questa biblioteca qui. Nella parte dei parametri della funzione, entrambi gli ID (PID, PGID) sono scritti. Entrambi appartengono all'ID processo che vogliamo impostare o quello che vogliamo unirci o creare.

Fatti e caratteristiche della funzione setPGID ()

Come discusso in precedenza, setPGID () imposta l'ID gruppo di un processo che PID specifica per l'ID del gruppo di processo. A volte esistono alcune circostanze in cui tutti i gruppi di processi si trovano nella stessa sessione. Ciò si verifica quando un processo viene portato da un gruppo all'altro tramite setPGID (). In questa situazione, PGID specifica il gruppo di processo esistente e si unisce a esso.

GetpGid () è una funzione come setPGID (). La sintassi per entrambi i processi è la stessa, comprese le chiamate di funzione. Come entrambe queste funzioni, getppGrp () e getPGID (0) allo stesso modo sono equivalenti l'uno all'altro.

Usi dei gruppi di processo

I gruppi di processo lavorano per distribuire i segnali per inoltrare e attribuire le richieste per l'input. Quei processi che possiedono gli stessi gruppi di processo sono in primo piano e possono essere letti, mentre gli altri processi verranno bloccati con un segnale se si tenta di essere letti.

Valore di ritorno

Quando la chiamata di funzione viene eseguita correttamente e viene eseguito il processo, setPGID () e setPGrp () restituiscono zero quando si verifica l'errore e la funzione restituisce -1. Dopo che il segnale di errore viene superato. GetpGid () e getPGrp () sono associati a setPGID (). Quindi getpGid () restituisce un gruppo di processo quando è stato eseguito correttamente. In errore, dà -1. Mentre la funzione getppGrp () fornisce sempre il gruppo di processo attualmente in uso.

Per implementare alcuni esempi, utilizzare un editor di testo e un terminale Linux in questo aspetto. Scriveremo il codice negli editori di testo e quindi visualizzeremo il risultato nel terminale Linux.

Esempio 1

In primo luogo, useremo la stessa libreria sopra descritta nella guida, che è essenziale per l'esecuzione del codice.

#includere

Nel programma principale, il tipo di ritorno viene preso come intero. Non è nullo perché la funzione restituirà il valore sotto forma di un numero intero come ID di processo. Usiamo if-statement come dobbiamo applicare un controllo di errore. La prima riga nell'istruzione chiama setPGID () con l'argomento di un'altra funzione getPid (). Questa funzione otterrà l'ID che vogliamo impostare. Se il valore restituito è '-1', significa che si è verificato un errore in modo che il processo venga terminato.

If (setPGID (getPid (), 0) == -1)

Questo chiamerà quindi nuovamente la stessa funzione setPGID per ripristinare l'ID predefinito del processo. Ma se la condizione è vera, significa.

Salvare il file con estensione C e vedere l'uscita vai al terminale Linux; Il codice sorgente verrà compilato e quindi eseguito tramite un compilatore GCC. Viene utilizzato un file di input che è un codice sorgente e un file viene utilizzato per visualizzare l'output. 'file. C 'è il nome di un file.

File file file $ gcc -o.C
$./file

Il codice viene eseguito correttamente quando eseguiamo il codice e si ottengono l'ID processo e gli ID del gruppo di processo. Entrambi gli ID sono uguali, il che significa che entrambi si trovano nella stessa sessione. Ogni volta che esegui il codice, gli ID risultanti saranno diversi.

Esempio 2

Qui useremo un fork () nel codice sorgente. Poiché la funzione fork () viene utilizzata per creare un nuovo processo, il processo figlio e questo processo figlio eseguono contemporaneamente al suo processo genitore. Questo è un altro metodo per impostare l'ID e gli ID del gruppo dei processi appena creati. Innanzitutto, dobbiamo inizializzare una variabile per verificare se l'errore esiste o meno. Se esiste, viene superato un segnale di errore. E nella parte altro, la funzione forcella si chiama. Se l'ID del processo è uguale alla forcella restituisce 0, allora significa che il nuovo processo viene creato.

If ((pid = fork ()) == 0)

Tutti gli ID del gruppo di un bambino verranno visualizzati prima di aspettare e dopo di esso. Allo stesso modo, verranno visualizzati gli ID del processo principale; Questi sono ottenuti attraverso la funzione getpid (). Alla fine, la funzione setPGID () verrà chiamata se non è zero, viene passato un errore.

Ora vedremo il risultato. Verranno visualizzati tutti gli ID di processo e gli ID del gruppo di processo. Usando FORK (), gli ID genitore-figlio vengono visualizzati separatamente. Innanzitutto, l'ID del processo genitore e figlio viene visualizzato prima dell'attesa e poi dopo averlo consecutivo.

Conclusione

L'articolo "C: SetPGID Function Usage" è un articolo che contiene la descrizione di base sulla funzionalità setPGID () e sia l'ID processo che la creazione e l'utilizzo dell'ID del processo di gruppo. Alcuni errori sono i motivi per arrestare il processo potrebbero essere gli errori di ricerca che non trovano alcun ID esistente, quindi l'ID processo del processo corrente viene assegnato automaticamente. Speriamo che questo sforzo ti aiuti nelle tue condizioni di lavoro nel linguaggio di programmazione C.