Leggi Chiamate di sistema in C

Leggi Chiamate di sistema in C

Una chiamata di sistema è un metodo per il software per comunicare con il sistema operativo. Quando il software esegue una chiamata di sistema, invia la richiesta al kernel del sistema operativo. Per leggere da un descrittore di file, è possibile utilizzare la funzione di sistema read (). Ogni processo ha la sua tabella di descrittori di file personali nel sistema operativo. L'unica differenza tra read () e write () è che read () legge i dati dal file a cui si fa riferimento. Il tempo di lettura per il file viene aggiornato dopo una lettura riuscita ().

Sintassi

# ssize_t leggi (int fd, const void *buf, size_t count);

Il descrittore di file è il primo argomento. Il buffer è il secondo argomento. Infine, la terza opzione specifica il numero di byte che consideri la lettura. Byte è solo il volume di dati da copiare e il buffer è l'indirizzo dello spazio di memoria in cui i dati devono essere scritti. Il risultato di ritorno rappresenta la quantità di dati scritti in byte; Se varia da byte, qualcosa sembra essere sbagliato. Se il valore è negativo, la chiamata di sistema interromperà.

Prerequisiti

Il compilatore GCC è necessario per compilare il codice che contiene una chiamata di sistema read (). Per eseguire e assemblare il codice di lingua C, dovremo installare un pacchetto compilatore sulla nostra macchina. Quindi, dovremo anche installare il compilatore GCC. È possibile installarlo con il comando di seguito presentato in un terminale Linux, come mostrato di seguito. Si installerà tra pochi momenti e sarai semplicemente in grado di scrivere ed eseguire codici C nei file.

Colpendo il tasto Invio, verrà installato il compilatore GCC. Ci vorranno qualche istante prima di chiederti di dire sì o no. Se scegli sì, inizierà a screening dell'uscita del compilatore GCC. Utilizza le istruzioni di seguito per l'installazione di GCC sul sistema.

$ sudo APT Installa GCC

Primo esempio di lettura () di sistema di sistema in C

Cominciamo con read () per comprendere meglio esso. Innanzitutto, è necessario utilizzare l'editor GNU della shell per generare un file di tipo C. Prova a eseguire la semplice query di seguito nel terminale per questo.

$ nano read1.C

Ci vorrà un po 'di tempo per aprire il comando sopra menzionato, ma una volta che lo farai, sarai in grado di usarlo immediatamente. Lancia il tuo ubuntu 20.Editor GNU di 04 subito. L'editor GNU apparirà come mostrato nell'immagine di seguito. Ora, scrivi il codice visualizzato nell'editor.

La chiamata di sistema Read () riceve l'input dell'utente dalla tastiera che è il descrittore di file come 0 e lo mette nel buffer "buff", che è solo un array di caratteri. Può leggere solo fino a 10 byte alla volta. Verranno lette solo le prime 10 lettere, indipendentemente da quanto gli ingressi dell'utente. Infine, utilizzando la chiamata di sistema Write (), i dati vengono visualizzati sulla finestra.

Sul display, stampa gli stessi 10 byte come dal buffer dal descrittore di file 1. Ora dovresti compilare il codice mostrato sopra. Dobbiamo utilizzare il compilatore GCC per la compilazione del codice. Per compilare il “read1.File C ", eseguire il comando GCC di seguito. Torna alla console e scrivi il comando:

$ GCC Read1.C

Ora dobbiamo eseguire questo codice usando il./UN.comando fuori nel terminale come visto di seguito.

$ ./UN.fuori

Secondo il programma, l'output viene visualizzato nello screenshot sopra attaccato.

Secondo esempio di lettura () Chiamata di sistema in C

Non puoi prevedere quanto l'utente entrerebbe come input. Di conseguenza, il terzo argomento al sistema Write () non può essere utilizzato per fornire i byte giusti. Il risultato potrebbe differire da quello che ti aspettavi. Tieni presente ciò che read () ritorna se ci riesce. Per dimostrare questo concetto, stiamo eseguendo questo esempio. Ora usa di nuovo l'editor GNU della shell per generare un file di tipo C. Prova a eseguire la semplice query di seguito nel terminale per questo.

$ nano leggi.C

Ci vorrà un po 'di tempo per aprire il comando sopra menzionato, ma una volta che lo farai, sarai in grado di usarlo immediatamente. Lancia il tuo ubuntu 20.Editor GNU di 04 subito. L'editor GNU apparirà come mostrato nell'immagine di seguito. Ora, scrivi il codice visualizzato nell'editor.

In questo codice, utilizziamo la variabile Nread per contenere il numero di byte che vengono letti dalla chiamata di sistema read () in C e utilizziamo la variabile in write () per visualizzare la stessa quantità di byte sulla finestra. Ora dovresti compilare il codice mostrato sopra.

Dobbiamo utilizzare il compilatore GCC per la compilazione del codice. Per compilare il "Leggi.File C ", eseguire il comando GCC di seguito. Torna alla console e digita il comando:

$ GCC Leggi.C

Una volta compilato il codice, eseguire questo codice utilizzando il ./UN.comando fuori nel terminale, come visto di seguito.

$ ./UN.fuori

Secondo il programma, l'output viene visualizzato nello screenshot sopra attaccato.

Conclusione

Per comprendere il concetto di read () System Call in Ubuntu, abbiamo esplorato alcuni esempi semplici e lineari in C. Abbiamo anche coperto come impostare il compilatore GCC per la compilation di codice. Spero che ora tu possa semplicemente usare la chiamata di sistema Read () per creare il tuo codice su Ubuntu 20.04.