Quando un processo sviluppa un processo figlio, è occasionalmente importante che il processo dei genitori attenda fino a quando il bambino lo abbia completato prima di continuare. Questo è esattamente ciò che la funzione di sistema Wait ().
Aspettare fa sì che il genitore attenda che il bambino alzi il suo stato. La modifica dello stato potrebbe essere dovuta alla chiusura del processo figlio, arrestata da un segnale o ripresa da un segnale. In alcune circostanze, quando un processo figlio lascia o cambia stato, il processo genitore deve essere avvisato sull'alterazione del bambino nello stato o nello stato di risoluzione. In tale istanza, il processo genitore utilizza funzioni come Wait () per indagare sull'aggiornamento nello stato del processo figlio.
Wait () sospende il processo del chiamante fino a quando il sistema non riceve informazioni sullo stato del bambino finale. Wait () restituisce istantaneamente se il sistema ha già informazioni sullo stato su un processo figlio finito quando viene invocato. Se il processo del chiamante riceve il segnale con azione per eseguire un gestore del segnale o terminare il processo, wait () viene anche terminato.
La funzione di sistema WaitPID () mettono in pausa l'attuale processo fino a quando l'argomento PID specifica un bambino con uno stato alterato. WaitPid () attende esclusivamente i bambini terminati per impostazione predefinita; Tuttavia, questo comportamento può essere cambiato. La chiamata di sistema Wait () accetta solo un parametro, che contiene le informazioni e gli aggiornamenti del processo. Se non ti interessa lo stato di uscita del processo figlio e ti preoccupi solo di far aspettare il genitore il figlio, usa null come valore. In questa guida, elaboreremo un esempio per la comprensione del sistema Wait () in programmazione C.
Prerequisiti
Esempio per elaborare il sistema di attesa Chiama in C
Aprire il terminale e verificare se il compilatore GCC è installato o meno. Se non è installato, utilizzare il comando aggiunto:
$ Sudo APT Installa GCCSu Ubuntu 20.04 Sistema, è necessario prima creare un nuovo file con il .estensione c. Per raggiungere questo obiettivo, vai alla tua home directory e genera un nuovo file vuoto intitolato "Wait1". Puoi anche usare il comando nano sul tuo terminale per farlo.
$ nano wait1.CDopo aver creato il "wait1.C ”File, si aprirà in un editor di testo GNU sul tuo sistema Linux e incolla il codice di seguito in esso. Dopodiché, salva ed esci dal programma.
Il file di intestazione C/C ++ è il punto di iscrizione del codice per le molte dichiarazioni costanti, di tipo e funzione dell'API di OS POSIX. Diversi tipi di derivazione fondamentale sono inclusi nell'intestazione e dovrebbero essere utilizzati ove possibile. è un file di intestazione che comprende le informazioni necessarie per includere le routine di input/output nel nostro programma. Le costanti simboliche da utilizzare con WaitPid sono definite in . Abbiamo anche usato la chiamata del sistema fork nel programma.
La chiamata di sistema fork () viene utilizzata per avviare un nuovo processo, noto come processo figlio, che funziona in parallelo con il processo di chiamata fork () che è il processo genitore. Entrambi i processi implementeranno l'istruzione successiva dopo la chiamata di sistema FORK () quando è stato istituito un nuovo processo figlio. Un processo figlio condivide lo stesso PC "Counter Counter", Register CPU e Apri i file come genitore. Restituisce un valore intero senza parametri. Il processo inizia con la stampa di "prima della forchetta."Quindi, utilizzando la chiamata di sistema FORK (), viene creato un processo figlio.
La chiamata di sistema Wait () viene introdotta nella sezione genitore del codice. Di conseguenza, il processo genitore viene sospeso non appena il processore inizia a eseguire il genitore perché l'istruzione iniziale è in attesa (NULL). Di conseguenza, il processo figlio funziona in primo luogo e tutte le linee di uscita riguardano il processo del bambino. La chiamata di sistema Null in Wait () indica che non sapremo dello stato della transizione del processo del bambino. Ora di nuovo, inizia il tuo terminale. In Ubuntu 20.04, utilizzare le istruzioni GCC di seguito, precedute dal nome file.
$ GCC Wait1.COra esegui il codice con l'aiuto del seguente comando apposto nel terminale.
$ ./UN.fuoriCome è già spiegato, l'ID genitore e figlio dei processi verrà visualizzato con l'aiuto di una chiamata del sistema di attesa.
Conclusione
Questo articolo ha dimostrato l'uso del sistema Wait () Call in C Programming. Abbiamo implementato uno degli esempi per mostrare la riuscita implementazione della chiamata di sistema Wait (). L'intero codice è anche descritto in dettaglio per la comprensione dell'utente. Spero che implementerai e utilizzerai facilmente la chiamata di sistema Wait () ogni volta che è richiesto.