如何在Windows中的Python中执行os.execv()而不从控制台中删除?

时间:2011-08-31 23:19:37

标签: python windows cmd exec

我在Windows 7上使用Python 2.6。我有Windows .cmd文件,它调用Python来运行CherryPy Web服务器(版本3.1.2)。我通过在Windows CMD shell中的提示符处执行它来启动此.cmd文件。当CherryPy注意到其中一个依赖文件发生了变化时,它会重新启动。在Windows上的此配置中会出现一些问题,因为CherryPy用于重新启动的调用是

os.execv(sys.executable, args)

但您无法在.cmd文件上调用Python可执行文件。我已经设法通过各种Python体操绕过了这个问题,现在我通过调用(基本上)重新启动它

os.execv(sys.argv[0], args)

但是重新启动的进程与键盘分离;它将捕获Ctrl-C,然后我被问到

Terminate batch job (Y/N)?

但Y或N I类型不是由终止.cmd文件捕获的,而是由Windows CMD shell捕获,并且它响应

'Y' is not recognized as an internal or external command, operable program or batch file.

那么我如何在Windows中进行设置以使重新启动的进程保持在Unix中我称之为“前景”的位置?

1 个答案:

答案 0 :(得分:-4)

你可以像这个例子一样使用subprocess.call方法

import subprocess

retcode = subprocess.call(["ls", "-l"])

有关子流程类的更多信息,请参阅此链接:

subprocess — Subprocess management

相关问题