Heim >Backend-Entwicklung >Golang >Warum gibt mein Go-Code bei Verwendung von exec.Command „Exit-Status 1' zurück?
Debugging des „Exit-Status 1“-Fehlers in Gos exec.Command
Wenn beim Ausführen externer Befehle der rätselhafte „Exit-Status 1“-Fehler auftritt Mit Golangs exec.Command kann es eine entmutigende Aufgabe sein, die genaue Ursache zu ermitteln. Diese kurze Anleitung bietet Einblicke in die effektive Behebung des Fehlers.
Stderr für erweiterte Fehlermeldungen verwenden
Standardmäßig erfasst exec.Command nur die Standardausgabe (stdout), wenn einen Befehl ausführen. Um detailliertere Fehlermeldungen abzurufen, können Sie die Stderr-Eigenschaft der exec.Command-Struktur verwenden. So geht's:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\") var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr
Wenn jetzt der Befehl ausgeführt wird und ein Fehler auftritt, wird die Fehlermeldung in den stderr-Puffer geschrieben, anstatt in einen generischen „Exit-Status 1“.
Beispiel
Betrachten Sie den folgenden Code Snippet:
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())
Bei der Ausführung zeigt der Code die folgende detaillierte Fehlermeldung an:
exit status 1: find: -exec: no terminating ";" or "+"
Zusätzliche Überlegungen
Es ist erwähnenswert dass einige Befehle möglicherweise nicht der Konvention entsprechen, Fehler in stderr zu schreiben. Einige Befehle geben möglicherweise Fehler an stdout aus, während andere möglicherweise Fehler an stderr ausgeben, aber dennoch einen erfolgreichen Exit-Status (0) zurückgeben. Daher kann es erforderlich sein, den Code anzupassen, um ihn an die spezifischen Befehle anzupassen, die Sie ausführen.
Das obige ist der detaillierte Inhalt vonWarum gibt mein Go-Code bei Verwendung von exec.Command „Exit-Status 1' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!