在Golang中,执行二进制模式下的gobench命令。

huangapple go评论80阅读模式
英文:

Golang: Execute the gobench on binary mode

问题

我正在编写一个脚本,其中我想要多次调用gobench,我收到的建议是以二进制方式读取,像这样:

package main

import (
    "log"
    "os/exec"
)

func gobench(url string) {
    cmd := exec.Command("gobench", url)
    err := cmd.Run()
    if err != nil {
        log.Fatalf("Command finished with error: %v", err)
    }
}

var searchRoutes = []string{
    "http:www.myurl.com/request1",
    "http:www.myurl.com/request2",
    "http:www.myurl.com/request3",
    "http:www.myurl.com/request4",
}

func main() {
    for i := 0; i < len(searchRoutes); i++ {
        gobench(searchRoutes[i])
    }
}

但是一旦我这样做,我就会得到这个错误,有人知道为什么吗?

2014/06/03 12:02:44 Command finished with error: exec: "gobench": 可执行文件在$PATH中找不到

有没有其他方法可以在不将gobench设置为PATH中的值的情况下执行它?

如果我将gobench目录导出到我的PATH中,我会收到这个错误

2014/06/03 12:22:59 Command finished with error: exit status 2 exit status 1

英文:

I'm working in a script in which I want to make several calls to gobench, I received the advice that I should read on the binary way, like that

package main

import (
    &quot;log&quot;
    &quot;os/exec&quot;
)

func gobench(url string) {
    cmd := exec.Command(&quot;gobench&quot;, url)
    err := cmd.Run()
    if err != nil {
        log.Fatalf(&quot;Command finished with error: %v&quot;, err)
    }
}

var searchRoutes = []string{
    &quot;http:www.myurl.com/request1&quot;,
    &quot;http:www.myurl.com/request2&quot;,
    &quot;http:www.myurl.com/request3&quot;,
    &quot;http:www.myurl.com/request4&quot;,
}

func main() {
    for i := 0; i &lt; len(searchRoutes); i++ {
        gobench(searchRoutes[i])
    }
}

But once I'm do it this I'm getting this error, Does anybody knows why?

> 2014/06/03 12:02:44 Command finished with error: exec: "gobench":
> executable file not found in $PATH

Are there any other way to do the exc without setting the gobench as value in the PATH?

If I export my gobench dir to my PATH I'm receiving this

> 2014/06/03 12:22:59 Command finished with error: exit status 2 exit
> status 1

答案1

得分: 1

尝试将包含 gobench 的整个目录传递给 exec.Command()

func gobench(url string) {
    cmd := exec.Command("/path/to/gobench", url)
    err := cmd.Run()
    if err != nil {
        log.Fatalf("命令执行出错: %v", err)
    }
}
英文:

Try passing the whole directory where gobench resides to exec.Command():

func gobench(url string) {
    cmd := exec.Command(&quot;/path/to/gobench&quot;, url)
    err := cmd.Run()
    if err != nil {
        log.Fatalf(&quot;Command finished with error: %v&quot;, err)
    }
}

huangapple
  • 本文由 发表于 2014年6月4日 01:07:15
  • 转载请务必保留本文链接:https://go.coder-hub.com/24021017.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定