【发布时间】:2019-11-21 21:28:37
【问题描述】:
我有一个 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 permission denied error 和 Go build & exec: fork/exec: permission denied,但我不确定这里是否是这种情况。
这是我机器上的权限问题吗?还是可以从代码中完成其他操作?
【问题讨论】:
-
给定代码不太可能出现错误消息。尝试运行
go clean并重新编译您的代码并再次尝试查看错误是否改变。 -
@leafbebop 谢谢,我确实干净了,现在它告诉我:命令失败,退出状态为 1