在Golang 中使用exec.Command 時,遇到神秘的「退出狀態1」錯誤,讓人抓狂他們負責了解具體細節。本文旨在闡明此錯誤的原因並提供更詳細診斷的解決方案。
考慮以下程式碼:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\") var out bytes.Buffer cmd.Stdout = &out err := cmd.Run()
執行此程式碼會導致無訊息的「退出狀態 1」錯誤。要解決此問題,請利用Command 物件的Stderr 屬性:
var stderr bytes.Buffer cmd.Stderr = &stderr
執行時,錯誤訊息將變得明顯:
exit status 1: find: -exec: no terminating ";" or "+"
現在,有了這個詳細的錯誤,您可以相應地解決問題。
注意: 值得考慮的是,某些指令可能會將錯誤訊息重新導向到 stdout 而不是 stderr。此外,某些指令可能會向 stderr 列印錯誤訊息,但仍會傳回零錯誤代碼(導致程式碼中出現 nil 錯誤)。因此,可能需要調整給定的解決方案以適應您正在使用的特定命令。
以上是為什麼 Go 中的 exec.Command 返回「退出狀態 1」以及如何取得更多資訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!