是否可以在不等待终止的情况下启动子进程? 我有一个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
程序正常启动。
答案 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")