Das Programm inkrementiert den Zähler in der Datei um eine feste Anzahl Schritte (siehe letzte Übung).
Die Anzahl der zu erzeugenden Programminstanzen (kleiner 5) wird als Kommandozeilenparameter übergeben.
...und heiter weiter...
Nachdem wir bisher das Sperren und Entsperren dem Betriebssystem
(aufgerufen durch die entsprechenden Systemcalls) überlassen haben,
streben wir nun selbst nach Herrschaft (über unsere Datei).
Erstellen Sie ein Programm, welches als Lock-Manager die Schreibzugriffe
auf die Datei kontrolliert und koordiniert. Jedes schreibwillige
Programm muß vor dem eigentlichen Schreibvorgang die entprechende
Berechtigung beim Lock-Manager beantragen und nach Abschluß der
Schreiboperation wieder zurückgeben. Abhängig vom dort gespeicherten
Zustand der Datei (exklusiv gesperrt oder freigegeben) wird die
angeforderte Schreibberechtigung erteilt und die Datei gesperrt, oder die
Berechtigung verweigert.
Wie bei der vertrauten Lock-Mimik üblich kann die Datei zu einem
Zeitpunkt nur durch genau einen Prozeß exklusiv gesperrt werden.
Die Programme und der Lock-Manager kommunizieren über Signale miteinander.
Wie die einzelnen Schreibprozesse auch, wird der Lock-Manager durch den initialen Vaterprozess erzeugt.
...im Westen nichts Neues...
Kann ein Prozess die Datei dreimal nicht sperren, so soll er mit einem
positiven Exit-Status terminieren.
Der Erzeuger soll auf die Beendigung aller von ihm erzeugten Kindprozesse warten und den zurückgelieferten Exit-Status ausgeben.