首页 > 后端开发 > Golang > 为什么 Go 中的 exec.Command 返回'退出状态 1”以及如何获取更多信息?

为什么 Go 中的 exec.Command 返回'退出状态 1”以及如何获取更多信息?

Patricia Arquette
发布: 2024-11-13 13:32:02
原创
850 人浏览过

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

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