Ich versuche herauszufinden, wie man einen externen Editor aus einem Go-Programm heraus startet, auf den Benutzer wartet, um den Editor zu schließen, und dann die Ausführung des Programms fortzusetzen. Basierend auf this SO beantworten, habe ich zur Zeit diesen Code:Der Versuch, einen externen Editor aus einem Go-Programm heraus zu starten
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.")
}
}
Wenn ich das Programm laufen, ich diese:
[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$
Ich habe auch versucht exec.Run() anstelle von exec verwenden. Start(), aber das scheint auch nicht zu funktionieren (obwohl es nicht am selben Ort fehlschlägt).
Ich kann es zum Laufen bringen, wenn ich Gvim anstelle von Vim verwende, aber es lehnt ab, mit Vim und Nano zu arbeiten. Ich denke, es hängt damit zusammen, dass Vim und Nano im Terminalemulator laufen, anstatt ein externes Fenster zu erstellen.
Ich habe versucht, aber es funktioniert immer noch nicht. Dies kann auch nicht die Erklärung sein, da die Verwendung von "gvim" gut funktioniert. – cgt
Überprüft. Du hast recht. Ich kenne den Grund noch nicht. Etwas nachgehen. – zzzz