Frage

Ich habe ein Projekt, das die Verwendung der exec Familie erfordert. Mein Projekt besteht eine interaktive Shell zu machen. Die Schale wird ein paar grundlegenden Befehle wie cd implementieren, ls, Echo, etc. Ich habe die Verwendung von exec erforscht, aber noch keine nützlichen Seite gefunden. Irgendwelche vorgeschlagenen Links helfen würde.

int ret;
ret = execl ("/bin/ls", "ls", "-1", (char *)0);

Wie würde ich die Ausgabe dieser Operation auf dem Bildschirm zeigen?

War es hilfreich?

Lösung

Der Code, den Sie funktioniert für mich in einem einfachen Testprogramm geschrieben, das nichts anderes tut. Denken Sie daran, wenn Sie execl nennen, der Prozess alle alten Datei-Handles behält. Also was auch immer stdout war, als Sie execl nennen, wird es gleich sein, wenn die neue binäre geladen wird. Wenn Sie nur die Ausgabe zum Terminal gehen wollen, so stellen Sie sicher stdout zum Terminal geht.

Wenn Sie I / O mit einem anderen Programm zu tun, ist popen gut für diesen (wie mgb erwähnt). Es wird einen neuen Prozess Gabel, eingerichtet Sanitär für Sie, eine Variante von exec aufrufen und geben einen Datei-Handle Sie für die Kommunikation verwenden können.

Andere Tipps

tun

int fd = 1;
dup(fd);
close(fd);

wird die Ausgabe auf den Bildschirm.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top