Universität Ulm -Sektion Angewandte Informationsverarbeitung
3.Übungsblatt (06.05.99 bis 18.05.99)
zur Vorlesung Systemnahe Software II (SS 99)
FIFOs sind für den wahren Hacker langweilig, weil es ja bereits den allseits mißhandelten pipe()-Aufruf
in der C-Bibliothek gibt! Die wahre Herausforderung liegt in der LIFO-Kommunikation zwischen
verwandten Prozessen! LIFOs sind HIP! Last-In-First-Out macht jeder, der nach einer durchzechten Nacht
als erstes wieder aus den Federn kommt, den langweiligen Kinofilm schon vor dem Ende verläßt und die
Softklausur bereits nach 10 Minuten abbrechen muß!
LIFO-Programmierer sind auf dem Markt sehr gefragt (so wie zur Zeit jeder, der das Wort Komputer
richtig schreiben kann :-))!
Aufgabe 1 (10 Punkte)
Das wirklich Lustige an fork() ist eindeutig die Verdoppelung jeglicher Variablen und FILE-
Deskriptoren! Wußten Sie, daß Vater und Sohn bei der forkerei jeweils die Dateileseschreibposition des
anderen mitbekommen, wenn der Filedeskriptor schon vor dem fork() existierte? Nein? Jetzt wissen Sie
es!
Na dann: schreiben Sie ein C-Programm (Gähn!) , daß sich via
fork() in Client und Server auflöst
und dann via einer beliebigen Datei LIFO-mäßig kommuniziert, in dem Sinne, daß
-
der Server Eingaben von Stdin als Strings mit fester Länge (z.B. n=30) in eine Datei schreibt
-
der Client die Strings sofort aus der Datei liest und an die Standardausgabe schreibt (Waoh!)
-
die Synchronisation zwischen den beiden gesichert ist (z.B. via lockf())
-
beim Erkennen des Schlüsselworts EXIT beide Prozesse brav terminieren und die LIFO-Datei wieder
löschen
(man -s 2 unlink)