Zum Abschluss wollen wir euch noch erklären, was in der nächsten Aufgabe zu tun ist und
euch ein kleines Beispiel zu der exec-Funktion zeigen.
Das Ziel der Aufgabe ist es, euch das Unix-Prozesskonzept zu vermitteln.
Darüber hinaus sollt ihr auch ein bisschen mit dem Quellcode anderer Leute umgehen können,
deshalb stellen wir euch ein Modul-P-List zur Verfügung, das bereits zum Teil implementiert
ist.
In diesen Quelldeck sollt ihr euch einarbeiten und ihn erweitern.
Außerdem sollt ihr Makefiles mit Pseudotargets erstellen.
Zu der P-List sei noch gesagt, dass die Schnittstellendokumentation, die auf der Webseite steht, verbindlich ist,
das heißt sie muss eingehalten werden.
Die Clash selber ist eine kleine Shell, mit der ihr Programme interaktiv starten und beenden
könnt.
Mit der Shell hat sie prinzipiell keine Beschränkung, wieviel Argumente ein Nutzer an ein aufzurufendes
Programm übergeben kann.
Die Einschränkung, die sie aber hat, ist, dass sie als Eingabezeile nur 1337 Zeichen
akzeptiert.
Die Clash selbst hat nun zwei verschiedene Arten von Prozessen, die ausgewählt werden
können.
Auf der einen Seite gibt es die sogenannten Vordergrundprozesse.
Sobald ein Vordergrundprozess ausgeführt wird, blockiert die Shell solange, bis das
Programm sich beendet.
Das bedeutet, mit der Shell kann zu der Zeit nicht weiter interaktiv interagiert werden.
Bei Hintergrundprozessen sieht es anders aus.
Hier wird das Programm im Hintergrund ausgeführt, sodass die Shell wieder aktiv bleibt.
Das erkennt man daran, dass noch während der Hintergrundprozess läuft, man weitere
Prozesse starten kann.
Sobald ein Programm terminiert, soll dessen Exit-Status ausgegeben werden.
Im Falle von Vordergrundprozessen geschieht das sofort, nachdem der Prozess sich beendet
hat.
Bei Hintergrundprozessen soll der Exit-Status immer dann ausgegeben werden, wenn eine neue
Prompt gedruckt werden soll.
In diesem Beispiel sollen wir nun ein Programm schreiben, das ein Kommando, das als Argument
übergeben wurde, ausführt.
Dabei sieht der Aufruf in etwas so aus.
Ich rufe wie hier in der rechten Seite dargestellt List Run aus und gebe als erstes Argument
das auszuführende Programm an.
Alle weiteren Argumente werden jeweils einzeln an den Aufruf des Programms als Argument
übergeben.
Hier in der linken Seite habe ich bereits mein Texteditor mit der C-Datei offen.
Die notwendigen Includes sind bereits eingefügt.
Nun möchte ich erstmal eine Schleife, mit der ich über die restlichen Argumente iterieren
kann.
Und zwar alle Argumente, die an das aufzurufende Programm übergeben werden sollen.
Damit man auf das erste Argument zugreifen kann, das an das aufzurufende Programm übergeben
wird, muss ich nun an den Index an Stelle 2.
Wir erinnern uns, dass an erster Stelle des AGV Arrays der Name des eigenen Programms selbst
steht.
An Stelle 2, bzw. mit dem Index 1, steht dann das erste richtige Argument.
In dem Fall steht an Stelle 1 das Programm, das wir starten sollen und an Stelle 2 folgend
alle Argumente, die an das zu startende Programm angehängt werden.
Zugänglich über
Offener Zugang
Dauer
00:10:15 Min
Aufnahmedatum
2020-06-21
Hochgeladen am
2020-06-21 23:36:34
Sprache
de-DE