Tôi đang cố gắng tìm cách khởi chạy trình chỉnh sửa bên ngoài từ bên trong chương trình Go, đợi người dùng đóng trình chỉnh sửa và sau đó tiếp tục thực hiện chương trình. Dựa trên this SO trả lời, Tôi hiện đang có mã này:Cố gắng khởi chạy trình chỉnh sửa bên ngoài từ bên trong chương trình 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.")
}
}
Khi tôi chạy chương trình, tôi có được điều này:
[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$
Tôi cũng đã cố gắng sử dụng exec.Run() thay vì exec. Bắt đầu(), nhưng điều đó dường như không hoạt động (mặc dù nó không thất bại tại cùng một vị trí).
Tôi có thể làm cho nó hoạt động nếu tôi sử dụng Gvim thay vì Vim, nhưng nó từ chối làm việc với cả Vim và nano. Tôi nghĩ rằng nó liên quan đến Vim và nano chạy bên trong trình mô phỏng thiết bị đầu cuối thay vì tạo ra một cửa sổ bên ngoài.
Tôi đã thử nhưng vẫn không hoạt động. Ngoài ra, điều này không thể là giải thích khi sử dụng chỉ "gvim" hoạt động tốt. – cgt
Đã kiểm tra. Bạn đúng. Không biết lý do nào. Nhìn vào nó. – zzzz