Golang 的 exec.Command 中调试“退出状态 1”错误
在 Golang 中运行 exec.Command 时,遇到“退出状态 1” “如果没有详细信息,错误可能会令人沮丧。幸运的是,有一个解决方案可以揭示根本原因。
解决方案:
利用 Command 对象的 Stderr 属性。此属性捕获命令生成的标准错误输出。下面是代码片段的修改版本:
import ( "bytes" "fmt" "os/exec" ) func main() { cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\") var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run() if err != nil { fmt.Println(fmt.Sprint(err) + ": " + stderr.String()) return } fmt.Println("Result: " + out.String()) }
说明:
通过将 Stderr 属性分配给缓冲区 (stderr),由命令将被捕获并附加到缓冲区。当命令以非零退出代码退出时,将打印错误和 stderr 输出,为调试提供更多上下文。
注意:
某些命令可能会将错误打印到 stdout 而不是 stderr,或者在 stderr 中返回错误代码 0 和消息。因此,在调整此解决方案时应考虑每个命令的行为。
以上是如何调试 Golang 的 exec.Command 中的'退出状态 1”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!