subprocess.Popen['vim'] 在交互式 Python 会话中产生有趣的结果
subprocess.Popen['vim'] in an interactive Python session yields interesting results
输入pythonshell
然后输入
import subprocess
subprocess.Popen("vim")
然后 vim window 打开。尝试使用 :q 退出 vim,然后尝试在交互式会话中键入。
看来vim并没有真正退出。好像我同时在vim和Pythonshell
为什么会这样?
我知道我可以通过 运行 subprocess.call 或 Popen.communicate() 等来避免这种情况,我只是想知道到底发生了什么。
似乎在 运行 之后使用 :q 退出 vim 它在 Popen 中仍然保留着它 运行.
来自 Popen
的文档:
With the default settings of None
, the child’s file handles will be inherited from the parent.
因此 python
和 vim
正在同时从同一个文件 读取 。
输入pythonshell
然后输入
import subprocess
subprocess.Popen("vim")
然后 vim window 打开。尝试使用 :q 退出 vim,然后尝试在交互式会话中键入。
看来vim并没有真正退出。好像我同时在vim和Pythonshell
为什么会这样?
我知道我可以通过 运行 subprocess.call 或 Popen.communicate() 等来避免这种情况,我只是想知道到底发生了什么。
似乎在 运行 之后使用 :q 退出 vim 它在 Popen 中仍然保留着它 运行.
来自 Popen
的文档:
With the default settings of
None
, the child’s file handles will be inherited from the parent.
因此 python
和 vim
正在同时从同一个文件 读取 。