go - 如何从 os.execute 从代码运行二进制文件

标签 go child-process

我正在尝试使用代码构建二进制文件并针对 bin 运行命令(bin 是 CLI) 通过代码,

mytest.go 文件

cmd := exec.Command("go", "build",  "-o", "./integration/testdata/fzr”,)
cmd.Dir = “./testdata"
err := cmd.Run()

现在代码运行后,我可以在 testdata 文件夹下看到 bin 现在我想运行一个像 fzr —help

这样的命令

点赞

cmdOut := exec.Command(“fzr”, “—help”)
cmdOut.Dir = "./testdata/"
err := cmdOut.Run()

我遇到了错误

lookPathErr: {
    Name: “fzr”,
    Err: {
        s: "executable file not found in $PATH",
    },
}

现在,如果我把 fzr bin 放在 go/src/bin 中,我就可以从终端运行 fzr —help

项目结构如下

myGithubProject/
  |---- integration
   |---- -testdata
    |---- -fzr
   |---- -mytest.go

mytesttestadata同级,fzrbin为under test数据

可能是什么问题?

我还尝试使用 os.Getwd() 提供 bin 的完整路径,但这没有帮助......

最佳答案

访问 shell 的应用程序通常不执行 shell 初始化/配置。比如cron一个明明也去不执行shell初始化。

要使您的程序正常运行,请添加可执行文件的绝对路径,或者从您的应用程序启动位置的相对路径:

exec.Command(“./integration/testdata/fzr”, “—help”)

(假设显示的路径是您的实际路径)。

关于go - 如何从 os.execute 从代码运行二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53144856/

相关文章:

go - 为 Go 程序构建最小容器

node.js - 如何在nodejs中列出子进程

java - Hadoop 作业未在大数据集中运行并抛出子错误

google-app-engine - 如何使用go语言在google app engine中按键获取实体

go - 嵌入结构但在 json 中只有某些字段

unit-testing - 如何确定测试用例期间导入的文件树?

go - 为什么我们不能将 slice 或映射嵌入到 Go 结构中

python - 使用child_process将函数和参数从 Node 传递到python

创建一个没有 fork() 的子进程

c - 创建子进程时出现此输出的原因是什么?