首頁 >後端開發 >Golang >為什麼 Go 中的 exec.Command 返回「退出狀態 1」以及如何取得更多資訊?

為什麼 Go 中的 exec.Command 返回「退出狀態 1」以及如何取得更多資訊?

Patricia Arquette
Patricia Arquette原創
2024-11-13 13:32:02825瀏覽

Why Does exec.Command in Go Return

調試Golang Exec.Command 中的「退出狀態1」錯誤

在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中文網其他相關文章!

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