Hinweis: Wenn der Artikel Fehler enthält, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank für Ihre Mitarbeit. Name Name: lseek - Lese-/Schreibdatei-Offset neu positionieren Mit der Funktion lseek wird die Verschiebung beim Lesen und Schreiben von Dateien neu positioniert. Headerdateien und Funktionsdeklarationen #include <sys/types.h> #include <unistd.h> off_t lseek(int fd, off_t Offset, int woher); Wenn der Offset positiv ist, bewegt er sich zum Ende der Datei (Vorwärtsbewegung), und wenn er negativ ist, bewegt er sich zum Anfang der Datei (Rückwärtsbewegung). beschreiben lseek() positioniert den Dateioffset der mit dem Dateideskriptor fd verknüpften offenen Dateibeschreibung gemäß der Wherece-Direktive wie folgt auf das Argument Offset: Mit lseek() kann der Dateioffset über das Dateiende hinaus gesetzt werden (die Größe der Datei wird dadurch jedoch nicht geändert). Wenn an dieser Stelle später Daten geschrieben werden, geben nachfolgende Lesevorgänge der Daten in der Lücke (einem „Loch“) Nullbytes ('\0') zurück, bis tatsächlich Daten in die Lücke geschrieben werden. Die Funktion lseek() positioniert die geöffnete Datei neu, wobei die Verschiebung durch die Kombination der Parameter „offset“ und „wherece“ bestimmt wird: Suchen_Einstellen: Testcode: #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <stdio.h> #define BUFFER_SIZE 1024 #define SRC_FILE_NAME "Quelldatei" #define DEST_FILE_NAME "Zieldatei" //Setze den Offset entsprechend den übergebenen Parametern #define OFFSET (atoi(args[1])) int main(int argc, char*args[]) { int Quelldatei, Zieldatei; vorzeichenloser Zeichenpuffer [PUFFERGRÖSSE]; int reale Leselänge, Offset; wenn (argc != 2) { fprintf(stderr, "Verwendung: %s Offset\n", args[0]); Ausgang (-1); } src_file = öffnen(SRC_FILE_NAME, O_RDONLY); dest_file = open(DEST_FILE_NAME, O_WRONLY | O_CREAT, S_IREAD | S_IWRITE ); //Besitzerberechtigung: rw if (Quelldatei < 0 || Zieldatei < 0) { fprintf(stderr, "Fehler beim Öffnen der Datei!\n"); Ausgang (1); } off_set = lseek(src_file, -OFFSET, SEEK_END); //Beachten Sie, dass der Offset hier negiert wird printf("lseek() repositoriton the file offset of src_file: %d\n", off_set); während((reale Leselänge = lesen(Quelldatei, Buff, Größe von(Buff))) > 0) { schreiben(Zieldatei, Buff, tatsächliche Leselänge); } schließen(Zieldatei); schließen(Quelldatei); gebe 0 zurück; } Ergebnisinterpretation Durch Beobachten des Offsets und der Größen der Dateien dest_file und src_file ist es nicht schwer zu erkennen, dass das Programm die Funktion lseek verwendet, um den Dateizeiger src_file an das Ende der Datei + Offset neu zu positionieren (beachten Sie, dass dieses Programm die entgegengesetzte Offsetzahl verwendet, d. h. das Ende der Datei + (-Offset)) und dann beginnt, die Datei vom Ende der Datei + Offset nach dest_file vorwärts zu kopieren. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Beispiel für die Implementierung einer lokalen Fuzzy-Suchfunktion in Front-End-JavaScript
>>: So erstellen Sie schnell zig Millionen Testdaten in MySQL
Inhaltsverzeichnis 1. Projektordnerstruktur 1. As...
Nach der Installation von Docker gibt es normaler...
Die unten zusammengefassten Wissenspunkte werden ...
Inhaltsverzeichnis 1.1. MySQL-Binlog aktivieren 1...
In diesem Artikel erfahren Sie die Lösung für das...
Inhaltsverzeichnis Vorwort Anwendung Filter Ziehe...
Vorwort Bei der Arbeit müssen wir häufig in einer...
Grundlegende Syntax Sie können eine Ansicht mit d...
Der Hyperlink-Tag stellt einen Linkpunkt dar und ...
Oftmals erwarten wir, dass das Abfrageergebnis hö...
MySql verwendet verknüpfte Tabellenabfragen, die ...
Lernprogramm zum Hyperlink-Tag einer HTML-Webseit...
Vorwort Beim Erstellen einer Seite stoßen wir häu...
Inhaltsverzeichnis 1. Datenmanipulationssprache (...
Dank unserer umfassenden CSS-Erfahrung als Webdesi...