首页 >后端开发 >Golang >如何调试 Golang 的 exec.Command 中的'退出状态 1”错误?

如何调试 Golang 的 exec.Command 中的'退出状态 1”错误?

Linda Hamilton
Linda Hamilton原创
2024-12-04 06:40:15710浏览

How to Debug

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn