dou91808 2018-11-04 19:57
浏览 101
已采纳

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

I'm trying to build binary with code and run the command against the bin (the bin is CLI) Via code,

mytest.go file

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

now after the code run, I was able to see the bin under testdata folder And now I’m want to run a command like fzr —help

Like following

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

I got error

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

Now If I take the fzr bin and put it in go/src/bin I was able to run fzr —help from the terminal

The project structure is like following

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

mytest is in the same level with the testadata and the fzr bin is under test data

What could be the problem ?

I try also to provide the full path to the bin with os.Getwd() which doesnt help ...

  • 写回答

2条回答 默认 最新

  • doucheng1063 2018-11-05 01:05
    关注

    Applications accessing the shell, do often not execute the shell initialization/configuration. For example the cron an clearly also go do not execute the shell initialization.

    To make your program work add the absolute path to the executable, or alternative the relative path from the location where your application is started from:

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

    (Assuming that the path displayed is your actual path).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?