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.

因此 pythonvim 正在同时从同一个文件 读取