5 - clash + Beispiel [ID:18276]
50 von 111 angezeigt

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.

Teil einer Videoserie :
Teil eines Kapitels:
Prozesse

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

Einbetten
Wordpress FAU Plugin
iFrame
Teilen