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.
.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