今天搜了一天 Google ,啥都没找到……
exec.Command
只能运行,并不能交互(很麻烦),而 syscall.Exec
则在子进程运行完后直接退出了。
有没有类似于 Python 里的 os.system()
,也就是 C/C++ 里的 system()
,可以让我直接运行某个需要交互的程序(例如 vim 或者 git )并可以与其交互且退出后原程序能够继续运行?
1
Phant0m 2016-09-04 11:41:10 +08:00 1
可以参考下 gotty
|
2
gxustudent 2016-09-04 11:48:36 +08:00 1
|
3
qiukun 2016-09-04 13:53:33 +08:00 1
@gxustudent good job
|
4
raysonx 2016-09-04 18:19:53 +08:00 via iPad 1
system=fork+exec+waitpid
|
5
SuperFashi OP |
6
reus 2016-09-05 02:12:42 +08:00 12
不是 go 不成熟,是你技术不成熟而已,你并不理解“交互”是怎样实现的。
如果你理解了,自然会这样做: package main import ( "os" "os/exec" ) func main() { cmd := exec.Command("vim") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr cmd.Stdin = os.Stdin cmd.Run() } 就这么简单。 |
8
SuperFashi OP @reus
哇,这个方法好多了,感谢! |