Ich schrieb ein einfaches C-Programm, das die execl-Funktion verwendet. Nach dem Ausführen dieses Programms erwarte ich die Ausgabe von ps -U myusername
.Aufruf von "ps" -Befehl mit Argumenten mit execl hat ein unerwartetes Verhalten
Wenn ich ps -U myusername
im Terminal schreibe, bekomme ich das gewünschte Ergebnis.
Beim Aufruf execl("/bin/ps", "/bin/ps", "-U myusername", NULL)
erhalte ich die folgende Fehlermeldung error: improper list
.
Allerdings, wenn ich den Speicherplatz von -U myusername
entfernen, und rufen Sie die Funktion auf folgende Weise: execl("/bin/ps", "/bin/ps", "-Umyusername", NULL)
, bekomme ich das richtige Ergebnis.
Warum passiert das und wie kann ich das erwartete Verhalten erreichen (dies ist nur ein einfaches Beispiel; was ich eigentlich will ist, den Benutzer den Befehl eingeben und in Befehl und Argumente aufteilen und schließlich wie execlp("command", "command", "arguments", NULL)
aufrufen.)
Vielen Dank! Es funktioniert. Ich wusste nicht, dass ich die 'execl' Funktion auf diese Weise aufrufen kann. –
Gern geschehen. Vergessen Sie nicht, die Antwort zu bestätigen, wenn es in Ordnung ist. – Boiethios
Dies beantwortet nicht den ersten Teil der Frage: * "Warum ist das passiert" * – user694733