Heim >Backend-Entwicklung >Golang >Warum schlägt „exec.Command' meines Go-Programms im Terminal fehl, funktioniert aber in der Konsole?
Befehl mit Argumenten aufrufen: Konsolenerfolg, Terminalfehler
In diesem Szenario führt ein Go-Programm den obersten Befehl erfolgreich mit zwei Argumenten aus ( -n 10 und -l 2) zeigt Details von 10 Prozessen an. Das Hinzufügen eines zusätzlichen Arguments (-o cpu) führt jedoch zu einem Fehler: „ungültiges Argument -o“.
Das Problem
Der Fehler tritt auf, wenn versucht wird, das auszuführen top-Befehl vom Terminal mit der vollständigen Argumentliste (-o cpu -n 10 -l 2). Derselbe Befehl funktioniert jedoch wie erwartet, wenn er über die Konsole ausgeführt wird.
Die Grundursache
Das Problem ergibt sich aus der Art und Weise, wie die Argumente vom Betriebssystem analysiert werden. Wenn Befehle über die Konsole ausgeführt werden, werden die einzelnen Argumente normalerweise durch ein Leerzeichen getrennt. Im Go-Programm werden die Argumente jedoch als einzelne Zeichenfolge übergeben. Dadurch muss das Betriebssystem die Argumente interpretieren, was in diesem Fall falsch geschieht.
Die Lösung
Um das Problem zu beheben, müssen die Argumente separat übergeben werden Zeichenfolgen an die exec.Command-Funktion. Der folgende Code demonstriert die korrekte Vorgehensweise:
import ( "os/exec" ) func main() { app := "/usr/bin/top" cmd := exec.Command(app, "-o", "cpu", "-n", "10", "-l", "2") out, err := cmd.CombinedOutput() // Error handling omitted for brevity value := string(out) return value }
Indem jedes Argument als separate Zeichenfolge übergeben wird, kann das Betriebssystem den Befehl korrekt interpretieren und wie vorgesehen ausführen. Dadurch wird der Fehler behoben und das Programm kann erfolgreich Details von 10 Prozessen mit dem zusätzlichen Argument (-o cpu) anzeigen.
Das obige ist der detaillierte Inhalt vonWarum schlägt „exec.Command' meines Go-Programms im Terminal fehl, funktioniert aber in der Konsole?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!