-1

是否可以在不等待它终止的情况下启动子进程?我有一个需要在 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

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

timeout 0 -- @表示等待 0 秒

启动 myProgram.exe

程序正常启动。

4

2 回答 2

0

你可以试试:

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

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

于 2013-10-29T13:33:05.923 回答
0

如果程序希望q退出,也许发送一个?

args = [os.path.join(path, 'myProgram.exe'), '/run']
p = subprocess.Popen(args, stdin=subprocess.PIPE)
...
p.stdin.write("q\n")
于 2013-10-29T13:36:58.857 回答