Thread Dateien ersetzen
(14 answers)
Opened by theresa at 2007-09-24 16:08
Ich mach das auch immer so wie Linuxer, also mit umbenennen. Dazu muss man aber nicht "mv" nehmen, sondern kann auch Perls rename-Funktion nehmen (ist auch viel atomarner, weil mv je nach Implementation erst mal rumstatet und so). Um zu vermeiden, dass zwei Prozesse gleichzeitig in die Datei schreiben, bau ich in die Temporaerdatei noch die PID ein, etwa so:
Code (perl): (dl
)
1 2 3 4 5 my $tmpfilename = "$filename.tmp.$$"; open my $f, '>', $tmpfilename or die "$tmpfilename: $!"; fuelle($f); close($f) or die $!; rename($tmpfilename, $filename) or die $!; Dann muss man nur noch das Problem loesen, dass nach einem ungewollten Programmabbruch noch "Leichendateien" rumliegen. Das laesst sich aber auch recht leicht loesen, indem man einfach Dateien mit zu alter mtime loescht. Ich hab mal irgendwann angefangen, was ueber dieses Problem aufzuschreiben: http://der-pepe.de/html/pitfalls.html#beware-trunc... (Das Dokument ist noch nicht so ganz fertig) Lieblingsmodule:
![]() ![]() |