想要使用Go程序运行具有标志和参数的二进制文件

时间:2017-03-20 09:31:30

标签: go

我想运行带有标志的二进制文件。 如果我直接运行二进制文件,它就像在golang程序中一样。

./test --flag1 arg1 --flag2 arg2

我试图通过使用os.exec来运行。

代码:reslt ,err:= exec.Command("./test","--flag1", "arg1", "--flag2", "arg2").Output

这是错误的:

  

退出状态2

有人可以为此提供帮助吗?

2 个答案:

答案 0 :(得分:0)

output, err := exec.Command("./test","flag1", "arg1", "flag2", "arg2").Output()

Output返回一个字节片段和一个错误。如错误所示,您只需要一个返回值,而Output则返回两个。

编辑:至于调试第二个问题,请从命令中获取stderr

cmd := exec.Command("./test","flag1", "arg1", "flag2", "arg2")
var stderr bytes.Buffer
cmd.Stderr = &stderr  
err := cmd.Run()
if err != nil {
    fmt.Println(stderr.String())
    return
}

答案 1 :(得分:0)

我猜退出代码2意味着'没有这样的文件或目录'。您应该检查执行的路径是二进制和测试的位置。

请先尝试为cimmand指定绝对路径。