首頁  >  文章  >  後端開發  >  為什麼我的 Golang `exec.Command` 回傳「退出狀態 1」?

為什麼我的 Golang `exec.Command` 回傳「退出狀態 1」?

Susan Sarandon
Susan Sarandon原創
2024-11-24 04:45:19174瀏覽

Why Does My Golang `exec.Command` Return

如何定位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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn