在Windows上的os.exec

我有一个脚本调用os.execvp到另一个Python实例。 这样做后,我似乎是附加到cmd.exe实例,而不是我刚刚创build的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实例replace为新实例?

Solutions Collecting From Web of "在Windows上的os.exec"

在Unix上执行二进制文件被分成两个阶段 – fork(3)克隆当前进程, exec(3)将可执行文件加载到地址空间。 在Windows上,只有CreateProcess和fork + exec做同样的事情。

为了便于携带,最好的方法是使用subprocess.Popen (它也可以在Windows上进行适当的文件名引用,而不像os。*对应文件),如http://docs.python.org/library/subprocess.html#replacing-the-os-产卵家庭