Daniel Bradler: mehrere Benutzer - eine Datei - was kann passieren ?

Beitrag lesen

Hallo!

  1. das Handle des Ein-/Ausgabekanals der geöffneten Datei.
  2. die Nummer einer Lock-Operation - erlaubt sind die Nummern 1, 2, 4 und 8:
    Nummer 1 bedeutet shared (Datei ausdruecklich mit anderen Prozessen teilen),
    Nummer 2 bedeutet exclusive (Normalfall - keinem anderen Prozess irgendeinen Zugriff auf die Datei erlauben),
    Nummer 4 bedeutet non-blocking (Datei nicht voellig blockieren - zum Beispiel lesenden Zugriff anderer Prozesse zulassen),
    Nummer 8 bedeutet unlock (Zugriffsschutz ausdruecklich wieder aufheben).

Das ist falsch! RFTM "perldoc -f flock". Zitat:

OPERATION is one of LOCK_SH, LOCK_EX, or LOCK_UN, possibly combined with
LOCK_NB.  These constants are traditionally valued 1, 2, 8 and 4, but
you can use the symbolic names if import them from the Fcntl module,
either individually, or as a group using the ':flock' tag.  LOCK_SH
requests a shared lock, LOCK_EX requests an exclusive lock, and LOCK_UN
releases a previously requested lock.  If LOCK_NB is added to LOCK_SH or
LOCK_EX then flock() will return immediately rather than blocking
waiting for the lock (check the return status to see if you got it).

flock(LOGFILE, 8);
close(LOGFILE);

close impliziert ein unlock. Es ist aus gewissen Gruenden mehr als ratsam, dass flock(LOGFILE, 8) wegzulassen.

Viele Grüße,
Daniel Bradler