Michael Schröpl: Datei vor doppeltem Zugriff schützen

Beitrag lesen

Hi Oli,

while (-e $lock_file &&
        (stat($lock_file))[9]+$timeout>time)
  { sleep(1);}

wir warten also so lange, bis die Datei fort ist ...

open LOCK_FILE, ">$lock_file"
    or &error("Unable to create $lock_file");
}

... und danach legen wir sie an.

Dasselbe tun aber auch die vielen anderen Programme, die nun alle
fröhlich in dieselbe Datei schreiben.
Keiner von ihnen bekommt einen Error. Wieso auch?

"open" ist mitnichten eine atomare Operation (wäre sie es, dann
bräuchten wir ja überhaupt keine Synchronisierung mehr).

Eine Synchronisation eines Datei-Schreibzugriffs durch die Verwen-
dung eines Datei-Schreibzugriffs, das kann's irgendwie nicht wirk-
lich sein ...

Viele Grüße
      Michael