作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在 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 中的“前台”中?
最佳答案
你可以像这个例子一样使用 subprocess.call 方法
import subprocess
retcode = subprocess.call(["ls", "-l"])
有关子流程类的更多信息,请参阅此链接:
关于python - 如何在不脱离控制台的情况下在 Windows 中使用 Python 执行 os.execv()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264571/
我是一名优秀的程序员,十分优秀!