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

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

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

Go
catspeake 2021-12-07 17:21:56
我需要使用 Go 工具链构建一个程序,然后执行它。由于某些原因,由于分叉,我收到了权限错误。有没有办法规避这个错误或任何最佳实践?我认为我的程序对Go test工具做了类似的事情,但go test没有出现这种错误。package mainimport(    "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 mainimport(    "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
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

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


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 363 浏览
慕课专栏
更多

添加回答

举报

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