„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum gibt mein GO -Code bei Verwendung von exec.Command "Beendenstatus 1" zurück?

Warum gibt mein GO -Code bei Verwendung von exec.Command "Beendenstatus 1" zurück?

Gepostet am 2025-04-08
Durchsuche:358

Why Does My Go Code Return

debuggen "status 1" fehler in go's exec.command

Bei der Begegnung mit dem rätselhaften "status 1" -Regel, während externe Befehle mit Golang's Execs -Ausführung der Ausführung der Ausführung der Ursache die Ursache verwendet. Diese kurze Anleitung liefert Einblicke in die Fehlerbehebung des Fehlers effektiv.

Verwenden von STDERR für erweiterte Fehlermeldungen

standardmäßig erfassen exec.command nur Standardausgabe (STDOut), wenn ein Befehl ausgeführt wird. Um detailliertere Fehlermeldungen abzurufen, können Sie die STDERR -Eigenschaft der Exec.Command -Struktur verwenden. Hier ist:

cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\\")
var out bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &stderr

Now, when the command is executed and an error occurs, the error message will be written to the stderr buffer instead of a generic "exit status 1."

Example

Consider the following 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())

Nach 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 an die Konvention des Schreibens von Fehlern nach Stderr bleiben. Einige Befehle können Fehler in STDOut ausdrucken, während andere Fehler in STDERR drucken, aber dennoch einen erfolgreichen Exit -Status (0) zurückgeben. Daher kann es erforderlich sein, den Code so anzupassen, dass sie die spezifischen Befehle, die Sie ausführen, anpassen.

.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3