Hinweis zur Klausurteilnahme an alle Bachelor-Hörer: Falls Sie in einem Bachelorstudiengang eingeschrieben sind, dies aber nicht so im SLC steht (links oben über dem Abmelden-Knopf), melden Sie sich bitte schnellstmöglich per Mail beim Übungsleiter! Bitte Name, Matrikelnummer und genauen Studiengang angeben.
Schreiben Sie ein Programm msgqueue.c
, welches eine zufällige Anzahl an
Kindprozessen - zwischen 10 und 20 Stück - erzeugt. Diese Prozesse sollen
dann für eine zufällig gewählte Zeitspanne zwischen 1 und 20 Sekunden
schlafen.
Nach dem Aufwachen sollen die Kindprozesse dem Elternprozess über eine Message Queue den Zeitpunkt des Aufwachens übermitteln. Der Elternprozess soll daraus die Zeitspanne errechnen, die der jeweilige Kindprozess geschlafen hat und diese dann mit Angabe der PID des Kindes ausgeben.
Lieblingsfilme.txt
für die
Öffentlichkeit zugänglich gemacht und möchten die Zugriffe darauf zählen.
Dann können Sie die Datei beispielsweise in Lieblingsfilme-echt.txt
umbenennen und eine Named Pipe namens Lieblingsfilme.txt
anlegen. Danach
schreiben Sie ein Programm, welches immer wieder einen Kindprozess erzeugt,
der auf diese Named Pipe exklusiv schreibend zugreift, den Inhalt der echten
Datei hineinschreibt und sich dann beendet. Der Hauptprozess wartet auf das
Kind und inkrementiert nach jedem Prozessende einen Zähler.
Implementieren Sie dieses Szenario im einem Programm accesscount.c
. Als
Kommandozeilenargumente soll das Programm zuerst den Namen der echten Datei
und danach den Namen der Pipe erhalten. Falls die Pipe nicht existiert, muss
sie erzeugt werden. Jedesmal, wenn auf die Pipe zugegriffen wird, soll
accesscount.c
den aktuellen Zählerstand auf der Standardausgabe
ausgeben.
Viel Erfolg!