我在Windows 7上使用Python 2.6。我有Windows .cmd文件调用Python来运行CherryPy Web服务器(版本3.1.2)。 我通过在Windows CMD shell中的提示符下执行它来启动这个.cmd文件。 当CherryPy发现它的一个依赖文件已经改变时,它会重新启动。 在Windows的这个configuration中出现了一些问题,因为CherryPy用来重新启动的调用是
os.execv(sys.executable, args)
但不能在.cmd文件上调用Python可执行文件。 我已经设法通过各种Python体操绕过这个问题,现在我已经通过调用(本质上)重新启动它,
os.execv(sys.argv[0], args)
但重新启动的进程是从键盘上分离的; 它会抓住Ctrl-C,然后我被问到
Terminate batch job (Y/N)?
但Y或NItypes不是被终止.cmd文件捕获,而是由Windows CMD shell捕获,并且它响应
'Y' is not recognized as an internal or external command, operable program or batch file.
那么,如何在Windows中设置一些东西来保持重启进程,在Unix中我称之为“前台”呢?
你可以像这个例子一样使用subprocess.call方法
import subprocess retcode = subprocess.call(["ls", "-l"])
有关子进程类的更多信息,请参阅此链接:
子流程 – 子流程管理