Lab
2 |
Operating Systems Principles
Command Shell |
Systems Architecture Group |
Ablieferungstermin und erreichbare Punktzahl für diese Aufgabe, sowie
Voraussetzungen für die Prüfungszulassung entnehmen Sie bitte
http://sar.informatik.hu-berlin.de.
Lab 2 – Command Shell
Implementieren Sie eine einfache Shell mit folgender Funktionalität.
- Bereitstellen einer Kommandozeile und Ausführen eines Programms mit
Kommandozeilenparametern. Als Prompt soll das aktuelle Arbeitsverzeichnis
angezeigt werden (relativ zum Einstiegspunkt).
prompt> prog args
- Ausführen eines Programms im Hintergrund mit Rückgabe der Prozess-ID im
Erfolgsfall. Es werden maximal 8 Programme gestartet bzw. laufen diese im
Hintergrund.
prompt> prog args & [pid]
- Wechseln des Arbeitsverzeichnisses.
prompt> cd dir
- Warten auf Prozesse.
- Warten auf eine Teilmenge der aktuell ausgeführten Hintergrundprozesse
pid1 ... pidN. Für jeden im Hintergrund
ausgeführten Prozess soll es möglich sein, den Rückgabewert via wait
abzufragen (unabhängig davon, in welcher Reihenfolge sich die Prozesse
beenden).
prompt> wait pid1 ... pidN
- Das "wait" soll mit Ctrl+C unterbrechbar sein.
- Wenn ein Prozess beendet wird soll möglichst viel Informationen über
den Endzustand ausgegeben werden (Grund des Terminierens, Rückgabewert,
etc.)
- Beended der Shell.
prompt> exit
Hinweise
- Zur Vereinfachung nehmen wir an, dass Programmname und Argumente
leerzeichen- und sonderzeichen-freie Zeichenketten sind, also keine
Maskierung oder Anführungsstriche erfordern.
- Bitte verwenden Sie C/C++ unter Linux.
- Zur Lösung der Aufgabe soll die Vorgabe
verwendet werden. Sie enthält neben einem Makefile auch ein Programm,
welches innerhalb der Shell gestartet werden soll.
- Die Praktikumsfolien sind hier zu finden.
Die Abgabe der Lösung erfolgt über GOYA. Laden Sie dort die Datei
lab-2.tar hoch, welche Sie mittels "make pack" in Verzeichnis lab-2 erzeugen
können. Die Software muss innerhalb der vorgegebenen VM (Qemu) compilier-
und ausführbar sein.
Musterlösung
|