首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go build & exec: fork/exec:权限被拒绝

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

Stack Overflow用户
提问于 2016-02-02 16:46:28
回答 1查看 6.5K关注 0票数 2

我需要使用Go工具链构建一个程序,然后执行它。由于某些原因,我得到了一个权限错误,因为叉子。是否有办法避免这一错误或任何最佳做法?我认为我的程序使用Go test工具做了类似的事情,尽管go test没有得到这样的错误。

代码语言:javascript
复制
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")

}`

错误:

代码语言:javascript
复制
E0202 18:24:42.359008   13600 main.go:36] , err fork/exec abc: permission denied

操作系统: OSX 10.11

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-02 16:56:25

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

键入Cmd struct { // Path是要运行的命令的路径。/这是唯一必须设置为非零//值的字段。如果路径是相对的,则计算相对//到Dir。路径串

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35159117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档