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
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