python在不等待子进程终止的情况下执行子进程

python在不等待子进程终止的情况下执行子进程,python,windows,python-2.7,cmd,subprocess,Python,Windows,Python 2.7,Cmd,Subprocess,是否可以在不等待子流程终止的情况下启动子流程? 我有一个需要在python脚本中执行的Windows程序,我想让它在后台运行,而不等待子进程退出,因为该程序希望输入自动终止(按q键退出) 我试过很多方法,但都不管用 我基本上希望实现以下目标: args = [os.path.join(path, 'myProgram.exe'), '/run'] p = subprocess.Popen(args) 在myProgram.exe仍在运行的情况下执行其他操作 myProgram.exe也可以

是否可以在不等待子流程终止的情况下启动子流程? 我有一个需要在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.bat文件,它启动myProgram.exe。 但有一个陷阱,如果我这样做的话

启动myProgram.exe

它的行为与调用子流程时完全相同-它终止。然而,如果我这样做

超时0--@表示等待0秒

启动myProgram.exe

程序正常启动。

您可以尝试:

args = ['start', os.path.join(path, 'myProgram.exe'), '/run']

请参阅
start/?
以获取帮助(或)

如果程序希望退出
q
,是否可以发送一个

args = [os.path.join(path, 'myProgram.exe'), '/run']
p = subprocess.Popen(args, stdin=subprocess.PIPE)
...
p.stdin.write("q\n")

我不清楚为什么第一种方法不起作用?这正是我的建议……这也是问题所在,我也是。这两种方法都应该有效。我不知道为什么程序会终止。加上它以返回代码1结束,这意味着有一些错误,但我无法以任何方式到达错误。它不在程序的日志中,也不在strerr.trusted的可能副本中:args=['start',os.path.join(path,'myProgram.exe'),'/run']p=subprocess.Popen(args,shell=True),但窗口打开并立即关闭。如果在命令行中输入
myProgram.exe/run
,会发生什么?start只是打开一个新的命令行,然后返回python…当我这样做时:>p=subprocess.Popen(args,stdin=subprocess.PIPE)子进程。Popen执行程序并立即终止。我不想退出那个项目。