我需要使用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
发布于 2016-02-02 16:56:25
您正在将命令路径从go二进制文件的位置更改为abc。
键入Cmd struct { // Path是要运行的命令的路径。/这是唯一必须设置为非零//值的字段。如果路径是相对的,则计算相对//到Dir。路径串
如果要更改工作目录,请使用Cmd.Dir
https://stackoverflow.com/questions/35159117
复制相似问题