我试图弄清楚如何从Go程序中启动外部编辑器,等待用户关闭编辑器,然后继续执行程序。基于这个答案,我目前有以下代码:
package main
import (
"log"
"os"
"os/exec"
)
func main() {
fpath := os.TempDir() + "/thetemporaryfile.txt"
f, err := os.Create(fpath)
if err != nil {
log.Printf("1")
log.Fatal(err)
}
f.Close()
cmd := exec.Command("vim", fpath)
err = cmd.Start()
if err != nil {
log.Printf("2")
log.Fatal(err)
}
err = cmd.Wait()
if err != nil {
log.Printf("Error while editing. Error: %v\n", err)
} else {
log.Printf("Successfully edited.")
}
}
当我运行程序时,得到以下信息:
chris@DPC3:~/code/go/src/launcheditor$ go run launcheditor.go
2012/08/23 10:50:37 Error while editing. Error: exit status 1
chris@DPC3:~/code/go/src/launcheditor$
我也尝试使用exec.Run()代替exec.Start(),但似乎也不起作用(尽管它不会在同一地方失败)。
如果我使用Gvim而不是Vim,我可以使它工作,但是它拒绝与Vim和nano一起工作。我认为这与在终端仿真器中运行而不是创建外部窗口的Vim和nano有关。
白猪掌柜的
HUH函数
森栏
相关分类