我有一个脚本,调用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)
如何替换原始Python实例为新的实例,使其行为类似于Linux上可能看到的行为?
exec()
并不真正替换当前进程。它创建一个新进程(具有新pid),并退出当前进程。因此,调用程序只看到脚本已终止。我没有看到在Windows上有任何简单的解决方案,除非使用subprocess.Popen()
,并在子进程终止时退出脚本。 在您的情况下,这是否是可能的解决方案? - Piotr Dobrogostsubprocess.Popen()
,然后退出原始的 Python 进程吗? - Piotr Dobrogostsubprocess.Popen
的完整可用示例。有任何想法在哪里可以找到吗? - s-m-e