Shrinking-Datei, die in Lesen / Schreiben geöffnet
-
27-09-2019 - |
Frage
In Perl:
Ich habe eine Datei im Lese- / Schreib, mit einer exklusiven Sperre geöffnet.
open( $f, "+< $filename" );
flock( $f, LOCK_EX );
Wenn ich mehr Daten in die Datei schreiben, als es vorher gehalten wird, wird die Datei wachsen.
Wenn ich weniger Daten schreibe, sind meine neuen Inhalte am Anfang, aber die alten Inhalte sind immer noch da am Ende der Datei.
Dies ist nicht verwunderlich, aber es ist nicht das, was ich will.
Gibt es eine einfache Möglichkeit, die Datei zu schrumpfen, während es im Lese- / Schreib geöffnet wird? Grundsätzlich mag ich es sagen, die Datei genau an dieser Byte-Position zu beenden.
Ich weiß, dass ich es anders öffnen kann, und ich überlege, das zu tun, aber eine eine Zeile fix wäre schön.
Lösung
Andere Tipps
Ich weiß eigentlich nicht über Perl, aber da ftruncate(2)
würde die C-Funktion, vielleicht dieser hilft?