Debugging-Fehler „Exit-Status 1“ in Golangs exec.Command
Beim Ausführen von exec.Command in Golang tritt ein „Exit-Status 1“ auf „Fehler können ohne detaillierte Informationen frustrierend sein. Glücklicherweise gibt es eine Lösung, um die zugrunde liegende Ursache aufzudecken.
Lösung:
Verwenden Sie die Stderr-Eigenschaft des Command-Objekts. Diese Eigenschaft erfasst die vom Befehl generierte Standardfehlerausgabe. Hier ist eine modifizierte Version des Codeausschnitts:
import ( "bytes" "fmt" "os/exec" ) func main() { cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\") var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run() if err != nil { fmt.Println(fmt.Sprint(err) + ": " + stderr.String()) return } fmt.Println("Result: " + out.String()) }
Erklärung:
Durch Zuweisen der Stderr-Eigenschaft zu einem Puffer (stderr) werden alle von der erzeugten Fehlermeldungen gelöscht Der Befehl wird erfasst und an den Puffer angehängt. Wenn der Befehl mit einem Exit-Code ungleich Null beendet wird, werden die Fehler- und stderr-Ausgabe ausgegeben, was mehr Kontext für das Debuggen bereitstellt.
Hinweis:
Einige Befehle können Geben Sie Fehler auf stdout statt auf stderr aus oder geben Sie den Fehlercode 0 mit Meldungen in stderr zurück. Daher sollte das Verhalten jedes Befehls bei der Anpassung dieser Lösung berücksichtigt werden.
Das obige ist der detaillierte Inhalt vonWie debugge ich „Exit-Status 1'-Fehler in Golangs exec.Command?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!