Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Uni Aufgabe: eigene shell



RobertNatus
03-06-2003, 12:50
Hi!

Habe von meinem Dozenten die schöne Aufgabe bekommen eine eigne kleine Shell zu bauen, die Kommandos ausführen soll. Lüppt auch soweit. Nu wurde die Aufgabe aber erweitert.

1.Es soll eine Ein- und Ausgabeumleitung stattfinden.
2.Es soll die Umgebungsvariable PATH mit übergeben werden (also wenn man z.B.
ls aufrufen will, soll der Pfad automatisch gefunden werden.


Zur Umleitung habe ich folgende Frage:

Habe die Umleitung so realisiert:

if ((strcmp(parameter[i], ">")) == 0){
close(1);
fd = creat(parameter[i+1], S_IRWXU);
dup2(1,fd);
}

nach dem Kommando Aufruf soll aber wieder aud stdout ausgegeben werden. Wie also mache ich dup2(1,fd); rückgängig?


Und zu PATH weiß ich gar nicht wirklich etwas! nur das ich mir PATH ja so ausgeben lassen kann . envp[0]=getenv("PATH");

aber wie kann man das jetzt execve übergeben?

Danke für Eure Hilfe

Robert

Badsteve
03-06-2003, 16:42
hi,

ich kanns ja mal versuchen: PATH enthält alle Verzeichnisse in denen ausführbare Dateien liegen sollten. Wenn du also ls aufrufst, dann soll das in PATH gesucht werden. Du musst also ganz einfach PATCH auslesen und ( ich kenne die Ausgabe von getenv("PATH") nicht) aufsplitten. Dann solltest du ganz einfach die verschiedenen Pfade für ausführbare Dateien druchprobieren bis es bei einem Pfad Erfolg gibt.


Steve