golang exec.Command 执行命令 返回详细错误信息

本文介绍了一种在Go语言中使用exec.Command时遇到的问题及解决方法。通过正确配置Command对象的Stderr属性来捕获并解析错误信息,帮助开发者更好地定位问题所在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我运行下面的代码:

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: ‘\\’: 无效的参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值