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

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

Patricia Arquette
Patricia Arquette原创
2024-11-13 13:32:02819浏览

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