PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : In Datei schreiben, wenn diese gelesen wird



anunnaki
01-07-2010, 13:32
Hallo Experten,

Heute habe ich mal eine Frage zum Umgang mit Dateien.
In der Anwendung wird eine Datei erzeugt, in die unregelmäßig geschrieben wird. Irgendwann lese ich den Inhalt der Datei aus und lösche die Datei.
Was passiert, während ich die auslese bzw. lösche und von einer anderen Stelle versucht wird in die Datei zuschreiben?
Wenn Sie gelöscht ist, wird eine neue Datei angelegt. Aber was ist, in der Zeit, wenn das Auslesen beendet ist und bevor die Datei gelöscht wurde. Dies geschieht zwar unmittelbar hintereinander aber ein kleiner Delay bleibt immer.
Können hier Informationen verloren gehen? Muß ich die Lese und Schreiboperationen synchronisieren?

mfg
Anunnaki

Berufspenner
09-07-2010, 09:15
Arbeitest du mit Threads?

panzi
17-07-2010, 23:57
Du kannst file locks praktisch wie Mutexes verwenden.

anda_skoa
18-07-2010, 13:30
File Locking kann je nach Filesystem mehr oder weniger gut funktionieren.

Unter Unix kann man sich meistens mittels "atomic rename" helfen, also in eine temporäre Datei schreiben und anschließend auf den eigentlichen Dateinamen umbenennen.

Das geht natürlich leider nicht unter Windows, weil es im Umgang mit Dateien wesentlich limitierter ist und das Umbenennen nicht gestattet, wenn jemand die Zieldatei geöffnet hat.

Wenn die beteiligten Leser und Schreiber auf der Datei innerhalb der selben Anwendung sind, fährt man am Besten, wenn man den Zugriff innerhalb der Anwendung arbitriert, also dort festlegt, wer wann was tun darf.

Ciao,
_