命令失败,在 MacOS 上 fork/exec 权限被拒绝?

我有一个 go 程序需要执行另一个可执行程序,我想从 go 代码执行的程序位于/Users/myuser/bin/目录中,其完整路径为/Users/myuser/bin/prog


代码是:


package main


import (

    "fmt"

    "log"

    "os/exec"

)


func main() {

cmd := exec.Command("prog")

cmd.Dir = "/Users/myuser/bin/"

out, err := cmd.CombinedOutput()

    if err != nil {

        log.Fatalf("cmd.Run() failed with %s\n", err)

    }

    fmt.Printf("combined out:\n%s\n", string(out))

}

当我在 MacOS Mojave 上运行上述代码时,我总是收到以下错误:


命令因 fork/exec /Users/myuser/bin/ 失败:权限被拒绝


我见过类似错误的其他答案,例如Go fork/exec 权限被拒绝错误和Go build & exec: fork/exec: 权限被拒绝,但我不确定这里是否是这种情况。


是我机器的权限问题吗?或者可以从代码中完成其他操作?


MM们
浏览 172回答 2
2回答

aluckdog

好的,我让它以这种方式工作:我将命令执行实现更改为: func main() {    cmd := exec.Command("prog")        cmd.Dir = "/Users/myuser/bin/"        var out bytes.Buffer        var stderr bytes.Buffer        cmd.Stdout = &out        cmd.Stderr = &stderr        err := cmd.Run()        if err != nil {            fmt.Println(fmt.Sprint(err) + ": " + stderr.String())            return        }        fmt.Println("Result: " + out.String())    }

开心每一天1111

我遇到了同样的错误,但就我而言,我犯了一个错误。我没有提供可执行文件的路径,而是错误地提供了目录的路径。另外,尝试检查二进制文件的权限(如果它是文件)。ls&nbsp;-l&nbsp;<path_to_binary>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go