为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
MM们 2023-08-07 11:20:52
我有一个 go 程序需要执行另一个可执行程序,我想从 go 代码执行的程序位于/Users/myuser/bin/目录中,其完整路径为/Users/myuser/bin/prog代码是:package mainimport (    "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: 权限被拒绝,但我不确定这里是否是这种情况。是我机器的权限问题吗?或者可以从代码中完成其他操作?
查看完整描述

2 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

好的,我让它以这种方式工作:

  • 我将命令执行实现更改为:

 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())

    }


查看完整回答
反对 回复 2023-08-07
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

我遇到了同样的错误,但就我而言,我犯了一个错误。我没有提供可执行文件的路径,而是错误地提供了目录的路径。

另外,尝试检查二进制文件的权限(如果它是文件)。

ls -l <path_to_binary>


查看完整回答
反对 回复 2023-08-07
  • 2 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信