我正在尝试解决从临时文件构建插件的问题。其背后的想法是,此插件将仅执行一次,然后也将被删除。
我的代码如下所示(省略错误处理):
tmpFile, _ := ioutil.TempFile(os.TempDir(), "prefix-")
defer os.Remove(tmpFile.Name())
text := []byte(fileContents)
tmpFile.Write(text)
command := ("go build -buildmode=plugin " + tmpFile.Name())
cmd := exec.Command(command)
err = cmd.Run()
if err != nil {
log.Fatal("Plugin creation failed: ", err)
}
tmpFile.Close()
它的执行产生以下结果:
Plugin creation failed: exec: "go build -buildmode=plugin C:\\Users\\user\\AppData\\Local\\Temp\\prefix-814698443": file does not exist
我什至尝试使用os.Stat(filename)
和os.IsNotExist(err)
检查文件是否存在。验证它确实存在。
我该如何解决?我不知道的临时文件有一些限制吗?