【发布时间】:2013-11-08 16:21:24
【问题描述】:
是否可以在不等待子进程终止的情况下启动子进程? 我有一个需要在 python 脚本中执行的 Windows 程序,我想让它在后台运行而不等待子进程退出,因为程序期望输入自行终止(按 q 退出)。
我尝试了很多方法,但都没有奏效。
我基本上想要实现的是以下几点:
args = [os.path.join(path, 'myProgram.exe'), '/run']
p = subprocess.Popen(args)
在 myProgram.exe 仍在运行的情况下在这里做一些其他的事情。
myProgram.exe 也可以作为服务安装。当我尝试这种方法时,
subprocess.call('net start myService', shell=True)
服务总是无法启动。它失败并显示系统错误代码 1067,这意味着进程意外终止。
注意:我使用的是 python 2.7
感谢您的建议。
编辑: 我找到了一个我不明白的解决方法...... 作为解决方法,我创建了一个启动 myProgram.exe 的 myProgram.bat 文件。 但是有一个问题,如果我只这样做
启动 myProgram.exe
它的行为与调用子进程时完全相同 - 它终止。但是,如果我这样做了
超时 0 -- @表示等待 0 秒
启动 myProgram.exe
程序正常启动。
【问题讨论】:
-
我不清楚为什么第一种方法行不通?这正是我的建议……
-
这也是我的问题。这两种方法都应该有效。我不只是知道为什么程序被终止。加上它以返回码 1 结尾,这意味着有一些错误,但我无法以任何方式到达错误。它不在程序的日志中,也不在 strerr 中。
标签: python windows python-2.7 cmd subprocess