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