Hallo,
Also hier nochmal das Beispiel.:
und zwar is t mir noch immer nicht klar ob das BLOCKEN der Datei automatisch abläuft ...
»»
also ich meine USER A ruft per Script die DATEI A zum schreiben auf, diese wird geflockt...
»»
jetzt kommt USER B will auch schreiben... kann/darf aber nicht....
und hier die entscheidene Frage (die mir immer noch nicht klar is...) wird das Script(Ausgabe) von USER B nun Abgebrochen mit Error oder wartet das Script AUTOMATISCH bis USER A fertig ist und fängt dann sein schreiben/bzw. lesen der Datei an?
»»
das häng davon ab, _wie_ Du lockst ;-)
wie Frank schon sagte, gibt es mehrere Werte für den 2. Parameter:
LOCK_SH = 1
LOCK_EX = 2
LOCK_NB = 4
LOCK_UN = 8
Als erfahrener Programmierer siehst Du sicherlich, daß die Werte Potenzen von 2 sind, d.h es werden Bits gesetzt. Das sollte Dich eigentlich aufhorchen lassen. Wenn solche Werte verwendet werden, gibts meist auch mögliche Kombinationen.
Wichtig sind eigentlich nur Kombinationen von LOCK_SH bzw LOCK_EX mit LOCK_NB. LOCK_NB steht, siehe perldoc, für 'non-breaking lock'. also _nur_ wenn Du eine Kombination mit LOCK_NB verwendest wartet das Script nicht, bis die Datei wieder frei ist.
das heißt im klartext und ohne schwafelschwafel:
mit flock(HDL,LOCK_SH) bzw. flock(HDL,LOCK_EX) wartet das Script bis die Datei frei ist, falls sie beim Aufruf gelockt ist, und lockst sie dann selbst.
mit flock(HDL,LOCK_SH+LOCK_NB) bzw. flock(HDL,LOCK_EX+LOCK_NB) wartet das Script _nicht_. (siehe auch das Beispiel von Frank)
Aber eigentlich steht das ja alles sowieso in der Doku
perldoc -f flock
Grüße
Klaus
oder muss ich dann doch soeine Lösung mit einer Temporären Datei verwenden ???
thx nochmal
»»
mfG
Steffen