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.

  1. Bereitstellen einer Kommandozeile und Ausführen eines Programms mit Kommandozeilenparametern. Als Prompt soll das aktuelle Arbeitsverzeichnis angezeigt werden (relativ zum Einstiegspunkt).

    prompt> prog args
     
  2. 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]
     
  3. Wechseln des Arbeitsverzeichnisses.

    prompt> cd dir
     
  4. Warten auf Prozesse.
     
    1. 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
       
    2. Das "wait" soll mit Ctrl+C unterbrechbar sein.
       
    3. Wenn ein Prozess beendet wird soll möglichst viel Informationen über den Endzustand ausgegeben werden (Grund des Terminierens, Rückgabewert, etc.)
       
  5. 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


Legal disclaimer. .  © 2024 Humboldt-Universität zu Berlin, Computer Science Department, Systems Architecture Group.Contact: sar@informatik.hu-berlin.de .