我想运行带有标志的二进制文件。 如果我直接运行二进制文件,它就像在golang程序中一样。
./test --flag1 arg1 --flag2 arg2
我试图通过使用os.exec
来运行。
代码:reslt ,err:= exec.Command("./test","--flag1", "arg1", "--flag2", "arg2").Output
这是错误的:
退出状态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指定绝对路径。