Hello Markus,
Dein Konzept hat aber noch mehr Fehler, als Dir Eddi schon erzählt hat:
Das Locking-Konzept ist leider nicht richtig.
Wenn Du an einer Datei Änderungen vornehmen willst im konkurrierenden Betrieb, dann siehr dei Vorgehensweise so aus:
ggf. Datei zerstörungsfrei anlegen mit fopen(Datei,'a')
Datei wieder schließen
nun (hoffentlich noch vorhandene) Datei zum Lesen und Schreiben öffnen mit fopen(Datei,'r+')
Dateisperre beantragen und zwar EXCLUSIV
Wenn locked werden konnte
- datei lesen
- daten ändern
- datei schreiben
Datei schließen (die Freigabe des Locking findet beim Schließen automatisch statt)
Warum darf man eine Datei zum Auslesen nicht erst mit lock(sh) öffnen, sondern muss zum Zwecke auch den Lesevorgang mit lock(ex) durchführen?
Weil die Prozesse konkurrieren, und ein lock(sh) niemanden davon abhalten würde, sich auch ein lock(sh) zu holen und die Datei auszulesen
lesen A (sh) B (sh) A(un) A(ex) B(ex) A(un) B(un) A
| bbc bbc B(ex) bbz
+------------------------------------------------------------------------------->
schreiben | abc bbz
Bemerkung muss B steht Huch?
warten Schlange
Lock folgt
sofort
Das lässt sich hier nicht richtig malen.
Wollte das noch mit drei Teilnehmern und einem Zähler zeigen. Da wird es deutlicher.
Musst Du eben noch warten, bi der Artikel endlich mal fertig wird.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau