【发布时间】:2015-05-05 11:30:13
【问题描述】:
我正在使用 subprocess.Popen 启动带有参数的外部程序,但是当我打开它时,脚本会挂起,等待程序完成,如果我关闭脚本,程序会立即退出。
我以为我之前只是在使用类似的过程没有问题,所以我不确定我是否真的做错了,或者我记错了 Popen 可以做什么。这就是我调用命令的方式:
subprocess.Popen(["rv", rvFile, '-nc'])
raw_input("= Opened file")
raw_input 部分只在那里,因此用户有机会看到消息并知道现在应该打开文件。但我最终得到的是进程本身吐出的所有信息,就好像它是直接在命令行中调用的一样。我的理解是 Popen 使它成为一个独立的子进程,允许我关闭脚本并使其他进程保持打开状态。
链接的重复问题确实为我的目的提供了有用的答案,尽管它仍然无法按我的意愿工作。
This is the answer. 这就是我更改代码的方式:
DETACHED_PROCESS = 0x00000008
pid = subprocess.Popen(["rv", rvFile, '-nc'], creationflags=DETACHED_PROCESS).pid
raw_input("= Opened file")
它在 IDLE 中有效,但在我通过命令提示样式界面运行 py 文件时无效。它仍然与该窗口相关联,打印输出并在我运行脚本后立即退出程序。
【问题讨论】:
-
如果您认为找到了解决方案;不要把它放在你的问题中。而是将其作为答案发布(以允许独立评论、投票、直接跳转到答案)。
-
你应该重定向
stdin、stdout、stderr(如果你想忽略输出到DEVNULL) -
@J.F.Sebastian 我可能说得不够清楚,但我链接到的答案并没有充分解决我的问题,也就是说我确实通过结合答案来解决它,我应该回答现在,谢谢提醒!
标签: python python-2.7 subprocess