Hallo Struppi!
Oh, damit hatte ich auch schon zu kämpfen.
Na, da fühlt man sich nicht so alleine ;)
Was bei deinem Code auffällt, ist, dass du die Datei zwar lockst, aber dann wieder schliesst. Ein fundamentaler Fehler, da zwischen close und open ein anderer Prozess zugreifen kann.
Du meinst hier:
if (-e "$logfile.txt") {
open FILE,"$logfile.txt" or die "Kann Logdatei $logfile.txt nicht öffnen. Grund: $^E.";
flock FILE, 2;
@lflines=<FILE>;
$count = $.;
close FILE;
} else { @lflines = (); }
open LOG,">$logfile.txt" or die "Kann Logdatei $logfile.txt nicht öffnen. Grund: $^E.";
flock LOG, 2;
$count++;
print LOG join ($sep, @logdata),"\n";
print LOG @lflines;
close LOG;
?
Das Problem ist, dass ich gerne den jeweils letzten Eintrag oben in der Datei hätte. Zwar könnte ich im Auswertskript mit reverse arbeiten, aber das ist wieder ein Umkopieren von Arrays...
Deswegen erst öffnen zum Lesen, danach neu öffnen zum Schreiben. Im Code vom alten Counter gab es bisher nie Probleme (was sicher nicht bedeutet, dass es OK ist)... Wie könnte ich die Sperre besser setzen?
Ein zuverlässiger Filelock ist sau schwierig.
Den Eindruck habe ich auch... ;)
Viele Grüße aus Frankfurt/Main,
Patrick
_ - jenseits vom delirium - _
Diblom [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?