Heim > Backend-Entwicklung > Golang > Warum schlägt mein Go „exec.Command' mit mehreren Argumenten fehl, wenn derselbe Befehl in der Konsole funktioniert?

Warum schlägt mein Go „exec.Command' mit mehreren Argumenten fehl, wenn derselbe Befehl in der Konsole funktioniert?

Patricia Arquette
Freigeben: 2024-12-19 19:58:15
Original
793 Leute haben es durchsucht

Why Does My Go `exec.Command` Fail with Multiple Arguments When the Same Command Works in the Console?

Befehle mit mehreren Argumenten ausführen

Beim Ausführen von Befehlen in Go ist es wichtig, darauf zu achten, wie Argumente an den Befehl übergeben werden. Ein kürzlich von einem Benutzer festgestelltes Problem bestand darin, dass die Ausführung des Befehls „top“ mit bestimmten Argumenten über die Konsole funktionierte, bei Verwendung des Exec-Pakets jedoch fehlschlug.

Das Problem

Der Code des Benutzers, der „top -n 10 -l 2“ erfolgreich ausgeführt hat, konnte „top -o cpu -n 10 -l 2“ nicht ausführen. Die vom Exec-Paket bereitgestellte Fehlermeldung zeigte an, dass das Argument „-o cpu“ ungültig war.

Die Lösung

Das Problem liegt in der Art und Weise, wie Argumente übergeben werden der Befehl. Der Befehlszeileninterpreter auf der Konsole trennt die Argumente automatisch, sodass der Befehl sie korrekt analysieren kann. Bei Verwendung des Exec-Pakets müssen die Argumente jedoch explizit getrennt werden.

Für diesen speziellen Fall wäre der richtige Code:

cmd := exec.Command(app, "-o", "cpu", "-n", "10", "-l", "2")
Nach dem Login kopieren

Durch die Trennung der Argumente kann das Exec-Paket dies tun Übergeben Sie sie wie erwartet an den Befehl, um den Fehler zu beheben.

Das obige ist der detaillierte Inhalt vonWarum schlägt mein Go „exec.Command' mit mehreren Argumenten fehl, wenn derselbe Befehl in der Konsole funktioniert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage