转到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

回答:

您要将命令路径从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

以上是 转到build&exec:fork / exec:权限被拒绝 的全部内容, 来源链接: utcz.com/qa/416996.html

回到顶部