Estoy intentando descubrir cómo ejecutar un editor externo desde un programa Go, esperar a que el usuario cierre el editor y luego continuar con la ejecución del programa. Sobre la base de this respuesta, así, tengo actualmente este código:Intentando ejecutar un editor externo desde un programa 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.")
}
}
Cuando ejecuto el programa, me sale esto:
[email protected]:~/code/go/src/launcheditor$ go run launcheditor.go
2012/08/23 10:50:37 Error while editing. Error: exit status 1
[email protected]:~/code/go/src/launcheditor$
También he intentado usar exec.Run() en lugar de exec. Start(), pero eso tampoco parece funcionar (aunque no falla en el mismo lugar).
Puedo hacer que funcione si uso Gvim en lugar de Vim, pero se niega a trabajar con Vim y nano. Creo que está relacionado con Vim y nano que se ejecutan dentro del emulador de terminal en lugar de crear una ventana externa.
Lo intenté, pero todavía no funciona. Además, esta no puede ser la explicación, ya que usar solo "gvim" funciona bien. – cgt
verificado. Tienes razón. No sé el motivo todavía. Buscando dentro. – zzzz