加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

错误处理 – 在Golang中运行exec.Command时如何调试“退出状态1

发布时间:2020-12-16 19:20:31 所属栏目:大数据 来源:网络整理
导读:当我运行下面的代码: cmd := exec.Command("find","/","-maxdepth","1","-exec","wc","-c","{}","")var out bytes.Buffercmd.Stdout = outerr := cmd.Run()if err != nil { fmt.Println(err) return}fmt.Println("Result: " + out.String()) 我收到这个错
当我运行下面的代码:
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

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

如何获取更详细的信息?

解决方案是使用Command对象的Stderr属性.这可以这样做:
cmd := exec.Command("find","")
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())

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

exit status 1: find: -exec: no terminating “;” or “+”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读