Thread flock funktioniert nicht (64 answers)
Opened by x-man at 2006-04-17 19:11

Dubu
 2006-04-18 16:50
#7361 #7361
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=master,18.04.2006, 14:32]zwischen:
Code: (dl )
1
2
3
open my $fh, "+<", "datei" or die $!;
<<<<<<<<<<<<<<<<<<< hier <<<<<<<<<<<<<
flock $fh, LOCK_EX;
[/quote]
Das open() mit "+<" öffnet die Datei zum Lesen und Schreiben, ändert aber nichts an der Datei selber. Daher existiert in diesem Code auch keine Race Condition, im Gegensatz zum Öffnen mit ">", was eine vorhandene Datei zum Zeitpunkt des Öffnens löscht (womit ein konkurrierender Prozess zu diesem Zeitpunkt eine leere Datei vorfindet).

Den Nachteil des Aufrufs mit "+<" sollte man aber nicht verschweigen: Im Gegensatz zum Öffnen mit ">" wird keine Datei angelegt, wenn sie nicht existiert! Dafür braucht man dann doch ein sysopen(), wie es in perldoc -q "get locking" beschrieben wird.

View full thread flock funktioniert nicht