“Come dice il titolo che la chiamata del sistema di lettura deve leggere qualcosa da una posizione particolare. Linux ci fornisce la chiamata del sistema di lettura per leggere i dati da qualsiasi file e visualizzarli sulla console e il kernel del sistema Linux dovrebbe essere coinvolto in questo intero processo, i.e., Per aprire il file, leggi da esso, scrivi i dati a un altro file, ecc. Questa guida sarà un bonus per ogni utente Linux e C che desidera imparare a utilizzare la chiamata del sistema di lettura durante la codifica. Prima di dare un'occhiata allo snippet del codice C, creeremo un file di testo e un file C. Il file di testo conterrà dati di testo casuali che verranno utilizzati dalla funzione read (). Entrambi i file sono creati dalla stessa query "touch" uno dopo l'altro e la query "LS" li mostra in una cartella domestica."
Abbiamo aggiunto 3 righe di testo nel file di testo.file txt in modo che possiamo accedervi usando la funzione read () di c. Quelle 3 righe vengono visualizzate usando la query "Cat".
Esempio 01
Nel nostro primo esempio, dimostreremo l'uso della chiamata di sistema Read () o Posix per accedere ai dati da un file specifico e visualizzarli sulla console. Il codice di esempio inizia con i file di intestazione di base 3. Lo stdio.H e unistd.Le intestazioni H sono utilizzate per le funzioni mutabili standard di input/output. Il fcntl.H viene utilizzato per utilizzare le funzioni di lettura e scrittura di Posix per la creazione e l'accesso ai file. Lo snippet mostrato di seguito è stato avviato con la dichiarazione di un tampone di caratteri della dimensione 100. I dati di testo che sono stati mostrati nel file di testo.Il file txt dall'immagine sopra sarà accessibile e visualizzato in blocchi.
L'istruzione printf () viene utilizzata 3 volte per farci conoscere il numero di caratteri totali verranno recuperati dal file e visualizzati sulla console. Tre descrittori di file, F1, F2 e F3, sono usati separatamente per chiamare la funzione "Open ()" di C per aprire un file di testo.file txt in modalità di sola lettura usando l'opzione "o_rdonly". Le variabili N1, N2 e N3 vengono utilizzate per recuperare il risultato restituito dal chiamare la funzione "Leggi" 3 volte, rispettivamente.
Ogni volta, lo abbiamo superato un buffer o un array di tipo di personaggio, io.e., Arr, un diverso descrittore di file, i.e., F1, F2, F3 e un numero diverso di caratteri a cui si accede dal file e salvato al buffer, i.e., 20, 40 e 60 rispettivamente. Ogni volta abbiamo usato il risultato restituito, i.e., N1, N2, N3, all'interno della funzione funzione Write () per accedere alla variabile buffer "ARR" con il primo parametro come "1". Questa funzione di scrittura visualizzerebbe 20, 40 e 60 caratteri dopo aver letto dal file di testo del file.txt nel buffer dei caratteri "arr". L'istruzione printf () è stata utilizzata ogni volta per aggiungere un'interruzione di riga usando "\ n" nella sua area stringa.
In questo modo, ogni volta, alcuni dati di testo verrebbero visualizzati sulla shell dopo la funzione read () accedere dal file "TextFile.TXT."Salviamo rapidamente il nostro codice prima della compilazione.
#includereDopo la compilazione di questo codice con il compilatore C "GCC", abbiamo provato il "./UN.comando out "per eseguire il codice compilato. Mostra 20, 40 e 60 caratteri dal file di testo usando "Leggi."
Esempio 02
Supponiamo che tu abbia mostrato i dati in testa in un file di testo.file txt e si desidera trasferire un numero esatto di caratteri in un altro file. Per questo, utilizzerai la funzione Read () per leggere i dati dal file di origine e la funzione di scrittura verrà utilizzata per salvarli nel file di destinazione.
Ora, useremo le stesse intestazioni che abbiamo utilizzato nell'esempio sopra per leggere da un file a una variabile buffer. Il metodo principale () di questo codice viene inizializzato con un array di caratteri da 40 caratteri “arr."Le istruzioni di output di printf () sono utilizzate ad ogni passaggio per spiegare ciascuno e tutto in dettaglio, i.e., L'apertura di un file, leggendo da un file, creando un altro file, copiando dati dal primo file al secondo file, ecc. Insieme a ciò, abbiamo usato la funzione sleep () all'inizializzazione di ogni passaggio in questo codice di esempio. Dopo la prima funzione sleep (), abbiamo usato la funzione Open () per aprire il nostro file chiamato "TextFile.txt ”in una modalità di lettura e salva il risultato restituito al descrittore di file fd1.
Nel passaggio successivo, utilizzeremo la funzione read () per leggere i dati dal file di testo.txt usando il suo descrittore di file fd1. Devi notare una cosa; Stiamo leggendo solo i 30 caratteri dal file e li salviamo nell'array di caratteri “arr."Se la funzione read () funziona bene, restituirà un numero di successo alla variabile intera" n."Nel terzo passaggio, abbiamo creato un altro file chiamato" Dest.txt ”utilizzando di nuovo la funzione Open ().
In questo passaggio sono state fornite due opzioni. Nell'ultimo passaggio, stiamo lanciando la chiamata di sistema Write () passandola il descrittore di file FD2, la variabile "N" e il buffer Array "ARR" per copiare i dati dal buffer "arr" al secondo file utilizzando F2.
#includereIn questa esecuzione del codice, il primo file è stato aperto e l'array "ARR" ha letto i dati da esso.
Il nuovo file è stato creato in una modalità di scrittura.
I dati dall'array di caratteri "arr" vengono passati al secondo file.
I dati di 30 caratteri sono stati copiati con successo a Dest.file txt, come visualizzato di seguito.
Conclusione
In questa guida, abbiamo spiegato brevemente l'uso della chiamata del sistema Read () in lingua C. Per questo, abbiamo utilizzato gli array di buffer per leggere i dati da un file specifico e visualizzarli sulla console. Inoltre, abbiamo utilizzato la funzione read () e l'array buffer per copiare i dati di testo da un file a un altro.