猿问

Go build & exec: fork/exec: 权限被拒绝

我需要使用 Go 工具链构建一个程序,然后执行它。由于某些原因,由于分叉,我收到了权限错误。有没有办法规避这个错误或任何最佳实践?我认为我的程序对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


catspeake
浏览 364回答 1
1回答

30秒到达战场

您正在将命令路径从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
随时随地看视频慕课网APP

相关分类

Go
我要回答