Windows上的os.exec
我有一个调用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
致电exec
:
from sys import argv
os.execvp('python', argv)
按照Linux上可能出现的行为,如何用新的Python实例替换原始的Python实例?
-
在Unix上,执行二进制文件分为两个阶段-fork(3)克隆当前进程,exec(3)加载可执行文件到地址空间。在Windows上,只有CreateProcess与fork + exec的功能相同。
为了实现可移植性,您最好的选择是使用subprocess.Popen(在Windows上也与os。*对应文件不同,在Windows上也进行正确的文件名引用),如http://docs.python.org/library/subprocess.html#replacing-
the-os-产卵家庭