Schreiben einer einfachen Shell in C mit fork / execvp

8

Ich muss eine einfache Shell in C mit den Systemaufrufen fork () / execvp () entwickeln. Bis jetzt nimmt mein Code einen Befehl auf, teilt ihn mit strtok in ein Array argv auf und dann rufe ich fork auf, um ein Kind zu erstellen und den Befehl auszuführen. Ich arbeite daran in ubuntu, wo die meisten Befehle im Verzeichnis / bin / liegen, also füge ich den Programmnamen an (zum Beispiel / bin / ls) und benutze das für das erste Argument von execvp und gebe es dann dem argv Array . Mein Programm funktioniert, wenn ich den Befehl "ls" eintippe, aber wenn ich andere Befehle oder sogar "ls -l" ausprobiere, bekomme ich eine "ls: invalid" -Option. Ich bin mir nicht sicher, was ich hier falsch mache.

%Vor%     
C1116 13.02.2015, 14:56
quelle

1 Antwort

6

Die ungültige Option besteht darin, dass fgets() die '\n' beim Drücken der Eingabetaste beibehält, probiere dies

aus %Vor%

Wenn Sie versuchen, ls -l aufzurufen, übergeben Sie "-l\n" als Option, daher die Nachricht.

Sie müssen

ändern %Vor%

bis

%Vor%     
Iharob Al Asimi 13.02.2015, 15:01
quelle

Tags und Links