Thread Datei sperren: nochma dazu (8 answers)
Opened by mordur at 2004-06-17 11:33

betterworld
 2004-06-17 12:34
#83513 #83513
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Leg doch eine lock-Datei an. Die kann jeweils der erste Prozess, der versucht, auf das Verzeichnis zuzugreifen, anlegen, sodass der zweite daran scheitert.

Mach es am besten so:
Code: (dl )
sysopen(LOCK, "$verzeichnis/.lock", O_CREAT | O_EXCL | O_WRONLY) or die "wahrscheinlich ist da schon ein anderer Daemon zugange"

Mit dem sysopen statt open und den angegebenen Flags kannst Du garantieren, dass das Ueberpruefen auf Existenz und das Anlegen der Datei in einem einzigen atomaren Zugriff geschieht.

Ich schrieb "wahrscheinlich", da es auch an Dateirechten liegen koennte, dass sysopen fehlschlaegt. Du kannst Dir ja noch etwas ausdenken, um solche Fehler abzufangen, wenn Du es brauchst.

Am Ende musst du natuerlich close() und unlink() aufrufen.

hth,
Betterworld\n\n

<!--EDIT|betterworld|1087461318-->

View full thread Datei sperren: nochma dazu