Lesen Sie das System unter Linux

Lesen Sie das System unter Linux

„Wie der Titel besagt, dass der Anruf des Lesesystems etwas von einem bestimmten Ort lesen muss. Linux stellt uns den Read -System -Aufruf zur Verfügung, um Daten aus einer beliebigen Datei zu lesen und sie auf der Konsole anzuzeigen, und der Kernel des Linux -Systems sollte an diesem gesamten Prozess beteiligt sein, i.e., Um die Datei zu öffnen, daraus zu lesen, Daten in eine andere Datei zu schreiben usw. Dieser Leitfaden ist ein Bonus für jeden Linux- und C -Benutzer, der lernen möchte, den Read -System -Aufruf beim Codieren zu verwenden. Bevor wir einen Blick auf den C -Code -Snippet haben, werden wir eine Textdatei und eine C -Datei erstellen. Die Textdatei enthält zufällige Textdaten, die von der Funktion read () verwendet werden. Beide Dateien werden nach derselben "Touch" -Anfrage nacheinander erstellt, und die Abfrage „LS“ zeigt sie in einem Heimatordner.”

Wir haben 3 Textzeilen in der Textdatei hinzugefügt.TXT -Datei, damit wir mit der Funktion read () von C darauf zugreifen können. Diese 3 Zeilen werden mit der Abfrage "Katze" angezeigt.

Beispiel 01

In unserem ersten Beispiel werden wir die Verwendung des Read () -Systemaufrufs oder der POSIX -Funktion demonstrieren, um auf die Daten aus einer bestimmten Datei zuzugreifen und auf der Konsole anzuzeigen. Der Beispielcode beginnt mit den grundlegenden 3 Header -Dateien. Der Stdio.H und Unistd.H -Header werden für Eingangs-/Ausgangsstandardfunktionen verwendet. Der fcntl.H wird verwendet, um die POSIX -Les- und Schreiben von Funktionen zum Erstellen und Zugriff auf die Dateien zu verwenden. Der unten gezeigte Ausschnitt wurde mit der Deklaration eines Zeichenpuffer von Größe 100 initiiert. Die in der Textdatei gezeigten Textdaten, die gezeigt wurden.Die TXT -Datei aus dem obigen Bild wird in Stücken zugegriffen und angezeigt.

Die printf () -Anweisung wird dreimal verwendet, um uns über die Anzahl der Gesamtzeichen zu informieren, die aus der Datei abgerufen und auf der Konsole angezeigt werden. Drei Dateideskriptoren, F1, F2 und F3.TXT-Datei in einem schreibgeschützten Modus mit der Option "o_rdonly". Die Variablen N1, N2 und N3 werden verwendet, um das zurückgegebene Ergebnis aus dem Aufruf der Funktion „Lese“ 3 -mal abzurufen.

Jedes Mal haben wir ihm einen Zeichenpuffer oder Array übergeben, ich.e., Arr, ein anderer Dateideskriptor, ich.e., F1, F2, F3 und eine andere Anzahl von Zeichen, die aus der Datei zugegriffen und in Buffer gespeichert werden können, i.e., 20, 40 bzw. 60. Jedes Mal haben wir das zurückgegebene Ergebnis verwendet, ich.e., N1, N2, N3 im Funktionsaufruf write (), um auf die Puffervariable „arr“ mit dem ersten Parameter als „1“ zugreifen zu können. Diese Schreibfunktion würde nach dem Lesen aus der Datei Textfile 20, 40 und 60 Zeichen angezeigt.TXT in den Zeichenpuffer "arr". Die printf () -Anweisung wurde jedes Mal verwendet, um einen Zeilenumbruch mit „\ n“ in seinem Saitenbereich hinzuzufügen.

Auf diese Weise werden jedes Mal einige Textdaten auf der Shell angezeigt, nachdem die Funktion read () aus der Datei „textfile.txt.Sparen wir unseren Code schnell vor der Kompilierung.

#enthalten
#enthalten
#enthalten
int main ()
char arr [100];
printf ("20 Zeichen lesen ... \ n");
int f1 = open ("textfile.txt ", o_rdonly);
int n1 = read (f1, arr, 20);
schreiben (1, arr, n1);
printf ("\ n");
printf ("40 Zeichen lesen ... \ n");
int f2 = open ("textfile.txt ", o_rdonly);
int n2 = read (f2, arr, 40);
schreiben (1, arr, n2);
printf ("\ n");
printf ("60 Zeichen lesen ... \ n");
int f3 = open ("textfile.txt ", o_rdonly);
int n3 = read (f3, arr, 60);
schreiben (1, arr, n3);
printf ("\ n");

Nach der Zusammenstellung dieses Codes mit dem „GCC“ -C -Compiler haben wir das ausprobiert “./A.OUT ”Befehl zum Ausführen des kompilierten Code. Es zeigt 20, 40 und 60 Zeichen aus der Textdatei mit „Lesen.”

Beispiel 02

Nehmen wir an, Sie haben Daten in einer Textdatei gezeigt.TXT -Datei, und Sie möchten eine genaue Anzahl von Zeichen in eine andere Datei übertragen. Zu diesem Zeitpunkt werden Sie die Funktion read () zum Lesen der Daten aus der Quelldatei verwenden, und die Schreibfunktion wird verwendet, um sie in der Zieldatei zu speichern.

Jetzt werden wir dieselben Header verwenden, die wir im obigen Beispiel verwendet haben, um von einer Datei zu einer Puffervariablen zu lesen. Die main () -Methode dieses Codes wird mit einem Array der Größe 40-Charakter “arr initialisiert.”Die Ausgabesanweisungen für printf () werden in jedem Schritt verwendet, um jeden im Detail zu erklären, i.e., Das Öffnen einer Datei, das Lesen einer Datei, das Erstellen einer anderen Datei, das Kopieren von Daten aus der ersten Datei in die zweite Datei usw. Darüber hinaus haben wir die Funktion Sleep () bei der Initialisierung jedes Schritts in diesem Beispielcode verwendet. Nach der ersten Sleep () -Funktion haben wir die Funktion open () verwendet, um unsere Datei mit dem Namen „Textdatei zu öffnen.txt ”in einem Lesemodus und speichern Sie das Rückgabeergebnis in Dateideskriptor FD1.

Im nächsten Schritt werden wir die Funktion read () verwenden, um die Daten aus der Textdatei zu lesen.TXT unter Verwendung des Dateideskriptors FD1. Sie müssen eine Sache bemerken; Wir lesen nur die 30 Zeichen aus der Datei und speichern diese auf dem Charakter -Array „arr.Wenn die Funktion read () einwandfrei funktioniert, gibt sie eine Erfolgsnummer an die Ganzzahlvariable „n) zurück.Im dritten Schritt haben wir eine andere Datei mit dem Namen „Dest" erstellt.TXT ”Verwenden die Funktion open () erneut.

In diesem Schritt wurden zwei Optionen für die offene Funktion zur Verfügung gestellt. Im letzten Schritt werfen wir den Aufruf write () Systems ab, indem wir den FD2 -Dateideskriptor, die Variable „N“ und das Pufferarray „arr“ übergeben, um die Daten aus dem Puffer „arr“ mit F2 in die zweite Datei zu kopieren.

#enthalten
#enthalten
#enthalten
int main ()
char arr [40];
printf ("Eröffnung Textfile.txt im schreibgeschützten Modus… \ n ");
Schlaf (3);
int fd1 = open ("textfile.txt ", o_rdonly);
printf ("Lesen daraus ... \ n");
Schlaf (3);
int n = read (fd1, arr, 30);
printf ("Erstellen einer anderen Datei zum Schreiben… \ n");
Schlaf (3);
int fd2 = offen ("dest.txt ", o_creat | o_wronly, 0642);
printf ("Textdatei schreiben.TXT -Daten zu Dest.TXT -Datei… \ n ");
Schlaf (3);
schreiben (fd2, arr, n);
printf ("\ n");

Bei dieser Codeausführung wurde die erste Datei geöffnet und das Array „arr“ las die Daten daraus.

Die neue Datei wurde in einem Schreibmodus erstellt.

Die Daten aus dem Zeichenarray „arr“ werden an die zweite Datei übergeben.

Die 30-Charakter-Daten wurden erfolgreich in das Ziel kopiert.TXT -Datei, wie unten angezeigt.

Abschluss

In diesem Leitfaden haben wir kurz die Verwendung des Read () -Systemaufrufs in C -Sprache erläutert. Hierzu haben wir die Puffer -Arrays verwendet, um Daten aus einer bestimmten Datei zu lesen und sie auf der Konsole anzuzeigen. Außerdem haben wir das Read () -Funktion und das Pufferarray verwendet, um Textdaten von einer Datei in eine andere zu kopieren.