Windows上的os.exec

Mat*_*ner 9 python windows windows-xp exec python-3.x

我有一个调用os.execvp另一个Python实例的脚本.执行此操作后,我似乎附加到一个cmd.exe实例,而不是我刚刚创建的Python实例.然而,Python实例会响应Ctrl+C.

H:\bin>Python 3.2.1 (default, Jul 10 2011, 21:51:15) [MSC v.1500
 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print('hi')
Can't find file ('hi')

H:\bin>

H:\bin>
KeyboardInterrupt
>>> echo hi
hi
Run Code Online (Sandbox Code Playgroud)

致电exec:

from sys import argv
os.execvp('python', argv)
Run Code Online (Sandbox Code Playgroud)

如何根据Linux上可能看到的行为将原始Python实例替换为新实例?

Zar*_*art 4

在 Unix 上,执行二进制文件分为两个阶段 - fork(3)克隆当前进程,exec(3)将可执行文件加载到地址空间。在 Windows 上,只有CreateProcess与 fork+exec 执行相同的操作。

为了可移植性,您最好的选择是使用subprocess.Popen(与 os.* 对应物不同,它在 Windows 上也进行正确的文件名引用),如http://docs.python.org/library/subprocess.html#replacing-the-os-产卵家族