如何找出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 中打印錯誤而不返回錯誤代碼。因此,可能需要調整程式碼以適應特定命令。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3