Heim >Backend-Entwicklung >Golang >Warum gibt mein Go-Code bei Verwendung von exec.Command „Exit-Status 1' zurück?

Warum gibt mein Go-Code bei Verwendung von exec.Command „Exit-Status 1' zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-24 04:24:15898Durchsuche

Why Does My Go Code Return

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!

Stellungnahme:
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