python - 启动另一个程序并在脚本结束时保持运行

标签 python python-2.7 subprocess

我正在使用 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 文件时不起作用。它仍然绑定(bind)到那个窗口,打印输出并在我运行脚本后立即退出程序。

最佳答案

stackoverflow 问题 Calling an external command in python有很多有用的相关答案。

看看os.spawnl ,它可以采用多种模式标志,包括 NOWAIT、WAIT。

import os
os.spawnl(os.P_NOWAIT, 'some command')

NOWAIT 选项将返回生成任务的进程 ID。

关于python - 启动另一个程序并在脚本结束时保持运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30051788/

相关文章:

python - Pandas :替换函数语法

python - GTK 中的 matplotlib 图和工具

python - 可以接受使用自定义异常作为哨兵值吗?

python - 在 Python-Subprocess 中运行连续的 Shell 命令

python - 如何将 XSD 转换为 Python 类

python - 如何修改Python中存储在列表中的对象的属性

python - 如何在 Python 2.7 中一次解码一行 unicode?

python - subprocces.call 语法错误python

python - 如何在不同的终端中 fork python 脚本

python : Apply distributive law to elements in list