Sto cercando di capire come avviare un editor esterno da un programma Go, attendere che l'utente chiuda l'editor e quindi continuare l'esecuzione del programma. Sulla base di this SO rispondere, ho attualmente questo codice:Tentativo di avviare un editor esterno da un programma 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.")
}
}
Quando eseguo il programma, ottengo questo:
[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$
ho anche provato ad utilizzare exec.Run() al posto di exec. Start(), ma sembra che non funzioni (anche se non fallisce nello stesso posto).
Posso farlo funzionare se utilizzo Gvim anziché Vim, ma si rifiuta di lavorare sia con Vim che con Nano. Penso che sia correlato a Vim e nano in esecuzione all'interno dell'emulatore del terminale invece di creare una finestra esterna.
Ho provato, ma ancora non funziona. Inoltre, questa non può essere la spiegazione poiché l'uso di "gvim" funziona bene. – cgt
Controllato. Hai ragione. Non so ancora il motivo. Guardando dentro – zzzz