如何排查 Golang exec.Command 中的“退出状态 1”错误
在 Golang 中使用 exec.Command 时,您可能会遇到阻碍调试工作的非特定“退出状态 1”错误。要获取更多详细信息:
访问命令的 Stderr 输出
Command 对象包含一个 Stderr 属性,用于捕获执行命令中的错误消息。修改您的代码以将 stderr 输出重定向到变量:
var stderr bytes.Buffer cmd.Stderr = &stderr err := cmd.Run() if err != nil { fmt.Println(fmt.Sprint(err) + ": " + stderr.String()) return }
运行此增强型代码将提供更全面的错误消息,例如:
exit status 1: find: -exec: no terminating ";" or "+"
这表明错误源于来自无效命令。
处理非标准错误行为
请注意,某些命令可能会偏离将错误打印到 stderr 并返回非零退出代码的预期行为。某些命令(例如 ffmpeg)可能会将错误打印到 stderr,但返回退出代码 0。此外,某些命令可能会将错误打印到 stdout 而不是 stderr。
为了适应这些变化,您可能需要调整代码上面解释了您正在使用的特定命令以及预期的错误处理模式。
以上是为什么我的 Go 代码不断抛出'退出状态 1”?的详细内容。更多信息请关注PHP中文网其他相关文章!