SAI || Sommersemester 1997 || Systemnahe Software II || Übungen

Übungen zu Systemnahe Software II
Blatt 4 (22. 05. - 02. 06. 1997)


Aufgabe 4 (10 Punkte)

Das UNIX-Kommando tee kopiert seine Standardeingabe sowohl zur Standardausgabe als auch in die als Argumente angegebenen Dateien. Realisieren Sie als C-Programm ein Kommando gee, das seine Argumente als Kommandos auffaßt, an die die Standardeingabe über Pipelines weiterzugeben ist.

Im Gegensatz zu tee soll gee die Standardausgabe nicht selbst benutzen, sondern allein den aufgerufenen Kommandos überlassen, die parallel laufen sollen (ohne Rücksicht auf das möglicherweise auf dem Bildschirm entstehende Durcheinander).

Beispiel:

% gee wc 'grep hallo' sort
hallo betty
hallo betty
schoenes wetter
hallo dolly
hallo dolly
^D
      3       6      40
hallo betty
hallo dolly
schoenes wetter
%

Benutzen Sie die Bibliotheksfunktionen popen(3) und pclose(3), um die Pipes und Subprozesse auf- und abzubauen. Wenn ein Teil der Kommandos nicht ausführbar ist oder vorzeitig terminiert, soll gee dennoch weiterarbeiten, bis das Ende der Eingabe erreicht ist oder die letzte Pipe zusammenbricht. Überlegen Sie, wie das Programm auf entsprechende Signale reagieren muß, um dies zu gewährleisten.

Aufgabe 5 (5 Punkte)

Schreiben Sie in C ein Programm, das als Argument eine Zeichenkette erhält, und das die Namen aller Environment-Variablen ausgibt, deren Wert genau diese Zeichenkette ist.

Beispiel:

% COLOR1=blue
% COLOR2=sky-blue
% export COLOR1 COLOR2
% findenv blue
COLOR1
%

SAI || Sommersemester 1997 || Systemnahe Software II || Übungen

Martin Hasch, Mai 1997