Nummer 4 oder Konstante LOCK_NB bedeutet non-blocking (nur in Verbindung mit 1 oder 2 bzw. LOCK_SH oder LOCK_EX erlaubt und beendet den Zugriffsversuch auf die Datei sofort statt zu warten, bis ein Zugriff möglich ist).
Öhm, das habe ich auf meinem UNIX noch nicht beachten können.
Ich verwende LOCK_EX auf ein Dummi-File, und der spätere Prozess wartet. Er bricht nicht ab.
Was Windows macht, habe ich nicht testen können, weil ich mit mir selber keine Race-Conditions veranstaltet habe.
Wenn ich die Kombination:
open(DATENDATEI, "</db/daten.csv");
flock(DATENDATEI, LOCK_EX);habe, und mit der selben nochmals arbeite, beachte ich doch flock, oder nicht?
flock ist für diesen Zugriff verfügbar, sobald kein anderer Prozess einen Zugriff auf diese Datei hat. Ist der Zugriff erfolgreich, werden andere Zugriffe auf diese Datei durch Prozesse, welche einen flock Antrag stellen, abgelehnt, bis der blockierende Prozess entweder flock auf einen nonblocking Zustand setzt ODER der Zugriff auf das File beendet ist (das File-Handle geschlossen wird).
mfg Beat
Selber klauen ist schöner!