Frank Schönmann: Perl-Prozesse synchronisieren - oder: Wie baue ich einen Counter?

Beitrag lesen

hi!

Du kannst die Datei ja auch vor dem Lesen mit flock sperren, dann hast du dieses
Problem nicht.
auch wenn sie bereits vor einem Schreibzugriff geflockt wurde? In dem Fall würde meiner
Erfahrung nach flock einfach übergangen werden, weil die Datei ja schon geflockt ist. Sie ist
aber leer und wird leer gelesen - und später leer geschrieben.

Nein, du kannst anhand des Rückgabewertes von flock überprüfen, ob bereits ein anderer Prozess die Datei geflockt hat, zb.:
  while (flock ...) {}
Das erzeugt solang eine Pause im Programm, bis die Datei gesperrt werden kann. Oder:
  while ((flock ...) || ($i++ < ...)) {}

bye, Frank!