python执行子进程而不等待子进程终止

时间:2013-10-29 13:23:57

标签: python windows python-2.7 cmd subprocess

是否可以在不等待终止的情况下启动子进程? 我有一个Windows程序,我需要在python脚本中执行,我想让它在后台运行而不等待子进程退出,因为程序期望输入自行终止(按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 - @means等待0秒

         

启动myProgram.exe

  

程序正常启动。

2 个答案:

答案 0 :(得分:0)

你可以尝试:

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

请参阅start /?寻求帮助(或http://www.computerhope.com/starthlp.htm

答案 1 :(得分:0)

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

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