如何在Golang中运行exec.Command时调试“exit status 1”错误

Posted kingmax54212008

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Golang中运行exec.Command时调试“exit status 1”错误相关的知识,希望对你有一定的参考价值。

当我运行下面的代码:

cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "", "\\\\")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil 
    fmt.Println(err)
    return

fmt.Println("Result: " + out.String())

我收到这个错误:

exit status 1

但是,这对调试错误的确切原因没有帮助。

如何获取更详细的信息?


最多投票
向下投票 接受

解决方案是使用StderrCommand对象的属性。这可以这样做:

cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "", "\\\\")
var out bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &stderr
err := cmd.Run()
if err != nil 
    fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
    return

fmt.Println("Result: " + out.String())

运行上面的代码,会明确问题是什么:

退出状态1:查找:-exec:无终止“;” 或“+”



以上是关于如何在Golang中运行exec.Command时调试“exit status 1”错误的主要内容,如果未能解决你的问题,请参考以下文章

防止 Ctrl+C 中断 Golang 中的 exec.Command

Golang os/exec 实现

Golang 从标准输入读取,如何检测特殊键(回车、退格...等)

在golang中处理逻辑错误与编程错误的惯用方法

Golang Linux Shell编程

子命令实时Golang管道输出