Pread C -Funktion

Pread C -Funktion
In der C -Programmiersprache der Zweck der pread () Die Funktion besteht darin, die angegebene Anzahl von Bytes (n) der Eingabe zu lesen, die durch den Dateideskriptor in den definierten Pufferbereich des Speichers angezeigt werden. Der pread () Funktion macht dasselbe wie die lesen() Methode, aber sie beginnt mit dem Lesen von einem bestimmten Ort in der Datei, anstatt die gesamte Datei mit dem Dateizeiger zu aktualisieren. Die Position der Dateizeiger ist nicht betroffen. Der Offset -Wert wird jedoch verwendet, um den Startort der Datei anzugeben. Wir müssen untersuchen, wie diese Funktion funktioniert, um dies zu sehen.

Bevor wir weiter gehen, müssen wir die Syntax der Pread -Funktion und ihre Header -Dateien verstehen, die für diese Abbildung erforderlich sind. Der Unistd Die Header -Datei wird verwendet, um mit der Pread -Funktion zu arbeiten. Hier ist der Code, der in die C -Programmiersprache C einfügt:

#enthalten

Der pread () Die Funktion enthält die gleichen anfänglichen drei Parameter wie die lesen() Funktion und der vierte Parameter ist für die angegebene Position in der Datei ausgeglichen. Jeder Versuch, die zu führen pread () Funktion in einer Datei, die eine Suchaktion nicht ausfüllen kann, führt zu einem Fehler. Hier ist die Syntax der Pread -Funktion:

SSIZE_T PRED (int File_Descriptor, void *Puffer, size_t no_of_n_bytes, off_t offset);

Diese Funktion gibt eine nicht negative Ganzzahl zurück, was darauf hinweist, dass sie die angegebene Anzahl von Bytes, die von dieser Funktion zurückgegeben wurden. Wenn es einen negativen Wert zurückgibt, liest es die angegebene Anzahl von Bytes nicht. Es setzte die Errno Zu Ebadf (Dies bedeutet, dass der Dateideskriptor kein gültiger Datei- oder Socket -Deskriptor ist), Econnreset (Ein Kollegen erzwang die Beendigung einer Verbindung), Efault, Enobufs (unzureichende Systemressourcen, um den Anruf zu beenden) usw.

Um die Details zu bekommen Errno, Bitte recherchieren Sie online. Die Lesefunktion erfordert keine Autorisierung, um eine Datei aus dem Dateisystem oder dem Netzwerk zu lesen.

Beispiel 1

Das folgende Beispiel öffnet eine Datei und liest Daten daraus. Um dieses Tutorial zu beginnen, beginnen Sie ein Terminal unter Linux, Unix oder einem anderen gewünschten Betriebssystem. Wechseln Sie dann, wie unten gezeigt. Verwenden Sie den Befehl „LS“, um fast alle Dateien und Verzeichnisse im Arbeitsverzeichnis anzuzeigen. Öffnen oder erstellen Sie im VIM -Editor eine neue Datei mit dem Titel „Pread.C ”, eine C -Programmiersprachendatei.

Wir verwenden den VIM -Editor, um ihn zu öffnen und zu erstellen. Sie können jedoch den Editor verwenden, den Sie mögen, wie z. B. Nano, Text usw. Sie können sehen, dass wir eine haben neu.txt Datei in dieser Liste der Verzeichnisse. Diese Datei wird jetzt in unserem C -Code verwendet. Schauen Sie sich den folgenden Terminalbildschirm an, um die Ausgabe zu visualisieren:

Die Header -Dateien sind in den ersten drei Zeilen enthalten. Danach beginnt die Hauptmethode mit der ersten Zeile, in der zwei Ganzzahlvariablen deklariert werden, ich.e., num Und FEMPERSCRIPTOR. Anschließend setzen wir den Offset auf 5. Wir definieren ein Zeichenarray "Puffer" und setzen den Wert auf "Testen" in der dritten Zeile der Hauptfunktion. Wir bieten dem Benutzer schreibgeschützt auf die neu.txt Datei im bedingten Ausdruck mit Hilfe eines offen() Funktion.

Die offene Funktion ist hier, um einen Deskriptorwert zurückzugeben, der in der Variablen "FileDescriptor" aufgezeichnet wird. Wenn der Deskriptor den Wert weniger als 0 erhält, der, der perror () Die Funktion wird ausgeführt, um einen Fehler zu werfen. In der else -Anweisung verwenden wir die Pread -Funktion, um die Werte der Variablen und die Größe der Funktion zu übertragen, um die Puffergröße zu verringern, wenn der Deskriptor den Wert größer als 0 erhält. In der Druckanweisung wurden die Ausgabe angezeigt.

Das Folgende ist der Inhalt des neuen.TXT -Datei. Der Puffertext befindet sich in der dritten Zeile, der Offset -Lesepunkt ist. Schauen Sie sich den folgenden Terminalbildschirm an, um die Ausgabe zu visualisieren:

Verwenden Sie nun den C -Compiler, um die zu kompilieren Pread.C Datei. Wir verwenden den GCC -Compiler für die Kompilierung und Ausführung von C -Code. Geben Sie im Terminal „GCC“ ein und geben Sie den Namen der benötigten C -Datei ein, gefolgt von der Schalter und der Name der Ausgabedatei im folgenden Screenshot. Der Compiler zeigt Fehler während der Kompilierung im Terminalfenster an. Die erforderliche Ausgabedatei wird erstellt, wenn die Kompilierung erfolgreich ist und im Arbeitsverzeichnis zu finden ist.

Der Ausgang kann je nach Offset -Wert schwanken. In ähnlicher Weise ändert sich die Ausgabe auf dem Terminalbildschirm in ähnlicher Weise, wenn der Wert des Puffer geändert wird. Geben Sie nun den folgenden Befehl in die Eingabeaufforderung ein, um die Ausgabedatei auszuführen. Schauen Sie sich den folgenden Terminalbildschirm an, um die Ausgabe zu visualisieren:

Mit dem VIM -Editor möchten wir nun die aktualisieren Pread Datei und müssen den Wert für den Offset auf 8 und für die Puffer -Aktualisierung auf "Tiere" anstelle von "Text testen" als den im folgenden Bild gezeigten Code festlegen:

Da wir Änderungen an unserer Programmcodedatei vorgenommen haben, müssen wir jetzt unseren Code neu kompilieren. Der Zusammenstellungsprozess ist der gleiche wie in den vorherigen Schritten durchgeführt. Hier ist das Bild des neuen Kompilierungsbildschirms:

Jetzt müssen wir die Ausgabe auf dem Bildschirm mit dem drucken Ausgang oder Objektdatei Wir haben nach Abschluss des Kompilierungsverfahrens erhalten. Siehe die Ausgabe auf dem Terminalbildschirm, indem Sie den folgenden Befehl eingeben. Die Ausgabe davon ist "Tier". Schauen Sie sich den folgenden angehängten Terminalbildschirm an, um die Ausgabe zu visualisieren:

Abschluss

Dieser Artikel zeigte die Verwendung der Pread -Funktion von C, um die Daten aus einigen Textdateien unseres Linux -Systems in Bytes zu lesen. Wir haben besprochen, wie a pread () Funktion unterscheidet sich von den einfachen lesen() Funktion aufgrund der Verwendung eines bestimmten Punktes zum Lesen der Daten aus einer Datei.