Alain: gibts sowas wie ... echtes filelocking? ;-)

Beitrag lesen

hi,

Dir ist klar, dass die Datei nur zur Laufzeit gesperrt ist? Ist das
Script beendet, ist auch der Lock aufgehoben.
ich habe deshalb in die Testdatei ein sleep() eingebaut. Ob das nun zur
Laufzeit zählt, weiß ich nicht.
Jepp, tut es.

sleep ist schon mal ganz schlecht :)

demnach hätte sich bei den Tests aber für den jeweils zweiten Aufruf innerhalb dieser Zeit ein "schon gesperrt" ergeben müssen...

atomar ist. Also z. B. dann, wenn ich mit Lock-Dateien arbeite: Prozess A
prueft, ob die Datei vorhanden ist. Sie ist noch nicht vorhanden und
deshalb geraet A in den kritischen Bereich, wird dann aber vom Scheduler
schlafen gelegt um mit Prozess B fortzufahren. Prozess B prueft dann auch,
ob eine Lock-Datei vorhanden ist und geraet auch in den kritischen Bereich.
Beide legen eine Lock-Datei an (auch eine nicht-atomare Operation). Wer
hat nun den Lock?

der letzte eben. Aber deswegen wird bei mir _vor_ dem Auslesen gelockt und vor dem Schreiben nochmal nachgesehen. Wenn ein fremd-Prozess den Lock überschreibt, kann der erste nicht mehr schreiben. Es müßte schon passieren, daß beide eine leere lockdatei finden, A schreibt den Lock, liest die Hauptdatei aus, verändert die Daten, kontrolliert die Lockdatei: o.k. Und _danach_ erst schreibt B die Lockdatei zurück und darf die Hauptdatei lesen. Wenn jetzt A die Hauptdatei zurückschreibt liest B vielleicht was Falsches aus.

ja,aber B sollte kein zugriff auf irgendwelche prozesse haben,wo A grade am lesen und schreiben ist.Ich würde A solange den Lock geben bis das file geschlossen ist und erst dann B weiter laufen lassen ohne sleep...ist doch viel einfacher so.
datei zum lesen und schreiben öffnen locken datei schliessen -> und jetzt darf prozess B weiter machen.
Wenn Du sicher gehen willst dass keine datenverluste entstehen durch lesen und schreiben,dann würde ich auf jedenfall LOCK_EX verwenden für lesen und schreiben und mit close (file) beenden,was den lock aufhebt.Auf keinen fall mit unlock arbeiten.

http://forum.de.selfhtml.org/archiv/1999_4/t07970.htm steht noch was...
Grüsse
Alain