首页 > 后端开发 > Golang > 正文

为什么我的 Golang `exec.Command` 返回'退出状态 1”?

Susan Sarandon
发布: 2024-11-24 04:45:19
原创
192 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板