Tom: Dateidownload - mehrere Prozesse

Beitrag lesen

Hello,

und keinen Modus, in dem "ich selbst" schreiben und lesen darf, andere Prozesse aber immerhin lesen?
Dass es sowas bei irgendeinem Filesystem gibt, kann ich mir schon vorstellen.
Aber welchen Sinn sollte es haben, dirty data lesen zu können?

ein sehr häufig auftretender Fall wären Protokoll- oder Journaldateien - also Dateien, die fortlaufend geschrieben werden, so dass es jederzeit möglich wäre, sie zumindest so weit zu lesen, wie sie schon geschrieben sind.

Das geht auch schon mit dem klassischen Dateityp "text" == "append-only".

Da muss man gar nicht sperren zum Schreiben, weil die neue Zeile immer hinten angehängt wird und erst bei Erfolg der erlaubte Lesebereich der Datei darauf ausgedehnt wird.

Da war übrigens ein Fehler in der PHP-Implementation bis 5.??. Da konnte man innerhalb von Quasi-Append-Dateien (also mit dem Öffnungsmodus 'a+') auch Änderungen innerhalb des Datenbestandes der Datei durchführen. DAS ist aber nach der Definition einer "Textdatei" nicht gestattet. Der Fehler wurde dann nach längerem Qängeln auch beseitigt, und ungefähr gleichzeitig auch der neue Modus "x" eingeführt. Der ist wirklich sinnvoll. Man musste ihn vorher über eine Krücke emulieren:

fh(A, mode a)  -> lock (s)    um eventuell nicht vorhandene Datei öffnen/anlegen zu können
fh(B, mode r+) -> lock (s)    um die jetzt sicher existierende Datei zum Bearbeiten zu öffnen
fclose(A)      => unlock      um die zu bearbeitende Datei zur Bearbeitung frei zu geben
flock (B)      -> lock (x)    um zu verhindern, dass Andere gleichzeitig bearbeiten

Bearbeiten                    Bearbeitung durchführen

fclose (B)     -> unlock      habe fertig

Soetwas kommt immer dann zustande, wenn man mit Programmiersprachen (C / C++) arbeitet, die nicht wirklich passende API's zu den jeweiligen Betriebssystemen/Filesystemen besitzen und daher in einer höheren Schicht das Rad nochmal neu erfinden, dass es in der Betriebssystemschicht (mancher Systeme) schon (sehr viel besser gelöst) gab. Darum kann Windows (Windowsprogramme) auch nie wirklich gut und schnell werden! Da passt die Programmiersprache nicht zum Kernel.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bikers-lodge.com