Come utilizzare il sistema di sondaggio Call in C

Come utilizzare il sistema di sondaggio Call in C
La funzione sondaggio () consente ai programmi di input e output multiplex attraverso una serie di descrittori di file. In altre parole, la chiamata di sistema sondaggio () è analoga alla chiamata di sistema selezionata () in quanto mantiene il suo incendio per uno dei diversi descrittori di file diventando disponibili per I/O. Sondaggio () esamina il descrittore di documenti assegnato per elencare gli eventi negli incidenti a ogni elemento dell'array che lo punta da parte di descrittori di file. Il metodo sondaggio () può determinare a quale dei descrittori di file un programma leggerà o scriverà i dettagli, che hanno visto questi incidenti. In questa guida, useremo Ubuntu 20.04 Per comprendere il concetto di sondaggio () Chiamata su Linux passo per passo.

Sintassi:

INT sondaggio (struct sonday *ufds, non firmato int nfds, timeout int);

L'argomento "FDS" determina da controllare i descrittori del documento, nonché gli incidenti di significato per ciascuno. È un riferimento a un array che ha un elemento per ogni descrittore di documenti aperto. Gli elementi dell'array sono strutture sondaggi, in cui FD indica un descrittore di documenti aperto e tutti gli eventi e i ri-eventuali, solitamente chiamati BitMasks, vengono generati creando una fusione delle flag corrispondenti degli eventi:

Pollin:

Oltre ai dati ad alta priorità, i dati delle informazioni possono essere letti privati ​​anche di essere bloccati. Inoltre, se il messaggio di risposta è di dimensioni zero, questo segnale di flag viene generato per i flussi in ritmi. Questa bandiera ha lo stesso significato di PolrdNorm | Polldband.

Polrdnorm:

Senza interruzione, i dati di informazione ordinaria possono essere letture. Le informazioni sulla banda di preoccupazione prioritaria primaria 0 possono essere lette nonostante l'interruzione per i flussi. E se il messaggio di risposta è di una lunghezza zero, questo segnale viene generato in ribassioni.

Polldband:

I dati sulla preoccupazione primaria verranno letti fuori nonostante causino ritardi. Le informazioni sulle priorità sono maggiori di zero possono essere lette nonostante interferisca nei flussi. E se la risposta del messaggio è di durata zero, questo segnale viene propagato in Revents.

Pollpri:

Potrebbero esserci alcune eccezioni al descrittore dei documenti. Le informazioni con una priorità assoluta possono essere lette private di essere bloccate. Inoltre, se la risposta è di durata zero, questo segnale viene propagato per i flussi in Revents.

Pollout:

Gli utenti possono scrivere utilizzando il flag di sondaggio. PROPRIVATO DELL'ARSING, I dati tipici possono essere registrati. Le informazioni sulla banda di preferenze 0 possono essere registrate nonostante l'interruzione nei flussi.

Pollwrnorm:

Funziona allo stesso modo del pollice.

Pollwrband:

I dati più prioritari verranno scritti utilizzando questo flag. Le informazioni sulle preferenze sono maggiori di zero per i flussi possono essere registrate senza essere bloccate. Questa attività valuta solo le bande che sono già state scritte almeno una volta poiché non è stata scritta alcuna banda di preferenza su questo flusso.

Pollerr:

È una condizione di errore e si verifica solo quando il sistema o il flusso hanno riscontrato un problema. Questo simbolo si applica solo alla maschera bit di Revents; Durante le attività partecipanti, è trascurato.

Pollhup:

Specifica la condizione di appendi e si verifica solo quando la connessione al sistema è stata disabilitata. Questo evento e il pollo sono ugualmente compatibili; Una volta che è sorto un problema, un flusso non verrà mai scritto.

Pollnval:

Ciò specifica la richiesta non valida o insolita. Questa attività, tuttavia, non esclude la partecipazione a Pollin, Polrdnorm, Polrddband o Pollpri. Questo simbolo si applica solo alla maschera bit di Revents; È trascurato nel partecipante all'evento.

Esempio di chiamata del sistema di sondaggio:

Svolge lo stesso ruolo di select (), sebbene su una scala più ampia. Sondaggio () è disponibile su qualsiasi macchina Linux a base di GLIBC. I kernel più vecchi imitano il sondaggio () con select () in tutta la libreria C. Tuttavia, i programmi non dovrebbero dover fare una distinzione. Ecco un esempio di come si sente il sondaggio (). Quindi aprire prima il terminale della riga di comando utilizzando il tasto di scelta rapida “ctrl+alt+t."Dopo averlo aperto, dobbiamo creare un file di tipo C per scrivere un codice C-Type in esso. Per questo, abbiamo usato il nano editor. Quindi, prova il comando nano sotto nel terminale insieme al nome del file c.

$ nano nuovo.C

Ora è stato aperto l'editor Nano per il file c "nuovo". Devi prima includere alcune biblioteche, in particolare il "sondaggio.Biblioteca H ". La funzione principale è stata specificata come avere un tipo di ritorno intero con due argomenti nel suo parametro, E.G., argc e argv. Quindi abbiamo dichiarato un descrittore di file fd e un array di tipo di carattere chiamato "buf."Successivamente, è stata definita una variabile tipo di struttura denominata PFD sondate di dimensione 2. Successivamente, è stata dichiarata una chiamata di sistema aperto per ottenere il valore dall'array di tipo di carattere e assegnarlo al descrittore di file "FD" come mostrato nell'immagine. Mentre il descrittore di file è "1", la struttura "PFD" verrà aggiornata con alcuni dati in esso utilizzando il flag di pollin al suo interno. Ora abbiamo definito una funzione di chiamata di sistema sondaggio (). Il primo parametro della chiamata di sistema sondaggio () è la struttura UFDS utilizzata nel codice. Il secondo parametro specifica il totale delle strutture sondate nella serie FDS.

E l'ultimo parametro mostra il valore di timeout del tipo intero per la chiamata del sistema di sondaggio. Se i PFD vengono rivolti e aggiunti con un valore di 0, la chiamata di sistema di lettura leggerà i dati dal buffer. L'istruzione "if" verrà utilizzata per verificare se l'istruzione di lettura ha restituito il suo valore a un numero intero e scrivere dati. Se la struttura "PFDS" è in posizione "1" mentre si veni e si inserisce i dati, la chiamata del sistema di lettura utilizzerà i dati da un buffer durante l'utilizzo del descrittore "FD".

Salva il nuovo.C file e chiudilo. Ora compilalo usando il compilatore GCC.

$ GCC nuovo.C

Durante l'esecuzione di questo codice, abbiamo aggiunto i dati in un sondaggio da leggere e scrive di nuovo i dati come nell'output seguente.

$ ./UN.fuori

Conclusione:

In questo articolo sopra descritto, abbiamo discusso del sistema sondaggio () in lingua C. Spero che tu trovi questo tutorial utile ed efficiente mentre lavori sul sistema operativo Linux.