macos - 去构建并执行: fork/exec: permission denied

标签 macos go exec fork

我需要使用 Go 工具链构建一个程序,然后执行它。由于某些原因,我因 fork 而收到权限错误。有没有办法避免这个错误或有任何最佳实践?我认为我的程序与 Go test 工具做了类似的事情,尽管 go test 不会出现这种错误。

package main

import(
    "os"
    "os/exec"
    "flag"
    log "github.com/golang/glog"
)

func main(){
    flag.Parse()
    tdir := "abc"
    if err := os.MkdirAll(tdir, 0777); err !=nil{
        log.Error(err)
        return
    }
    f, err := os.Create(tdir + "/main.go")
    if err !=nil{
        log.Error(err)
        return
    }
    if err = f.Chmod(0777); err !=nil{
        log.Error(err)
        return
    }
    defer f.Close()
    defer os.Remove(f.Name())
    if _, err = f.Write([]byte(tpl)); err !=nil{
        log.Error(err)
        return
    }
    cmd := exec.Command("go", "build", "-o", "edoc")
    cmd.Path = tdir
    b, err := cmd.CombinedOutput()
    if err !=nil{
        log.Errorf("%s, err %v", b, err)
        return
    }

}

var tpl = `package main

import(
    "fmt"
    "flag"
)

func main(){
    flag.Parse()
    fmt.Printf("Hello World")

}`

错误:

E0202 18:24:42.359008   13600 main.go:36] , err fork/exec abc: permission denied

操作系统:OSX 10.11

最佳答案

您要将命令路径从 go 二进制文件的位置更改为 abc

type Cmd struct {
        // Path is the path of the command to run.
        //
        // This is the only field that must be set to a non-zero
        // value. If Path is relative, it is evaluated relative
        // to Dir.
        Path string

如果要更改工作目录,请使用 Cmd.Dir

关于macos - 去构建并执行: fork/exec: permission denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35159117/

相关文章:

swift - cocoa swift : Connect Main Menu to Preferences Window Controller & Disabling Items like Minimise in Attributes Inspector doesn't work in Xcode?

go - 如何为golang实现32字节 key 的TripleDES DESede/ECB/PKCS5Padding加密?

macos - 我应该设计什么浏览器屏幕宽度来支持 Mac OS?

xcode - 如何为 Mac OS 编写互联网帐户插件?

go - 登录请求后的 POST 请求,仍然请求权限

go client watch etcd 事件失败

shell - 在 UNIX shell 中运行 exec csh 时会发生什么?为什么?

c - 等待子执行

C++ : fork/exec or pthread?

android - 加速(使用 HAXM)android mac 模拟器卡住