如何定位Golang 的exec.Command 中出現「Exit Status 1」錯誤的原因
Golang 中執行exec.Command 方法時,收到“退出狀態1”錯誤可能會非常模糊。缺乏特定資訊會阻礙有效的調試。
要檢索更詳細的信息,請利用 Command 物件的 Stderr 屬性。這是透過以下方式實現的:
var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run()
透過將錯誤重新導向到 stderr 緩衝區,您可以在命令失敗時存取它們。
if err != nil { fmt.Println(fmt.Sprint(err) + ": " + stderr.String()) return }
在某些情況下,輸出為顯示在 stdout 和 stderr 中。如果指令傳回非零錯誤碼,如下例所示:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\")
錯誤訊息將為:
exit status 1: find: -exec: no terminating ";" or "+"
需要注意的是,儘管stderr 通常指示錯誤,某些指令在stdout 或stderr 中列印錯誤而不回傳錯誤代碼。因此,可能需要調整您的程式碼以適應特定命令。
以上是為什麼我的 Golang `exec.Command` 回傳「退出狀態 1」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!