2017-06-22 197 views
0

我正在开发一个用于python的ADB客户端,我打算用子进程调用adb二进制文件来获取信息。启动adb守护进程python

下面是我试图调用它,启动adb服务器。

check_output([ 'adb.exe','start-server'],stderr=STDOUT) 

我确实看到adb正在运行,但程序在此之后卡住了。 我试过shell=True,但是这并没有影响到它。

当我从任务管理器中杀死adb时,程序确实退出并打印正确的输出。

我该如何解决这个问题,我认为这个命令并没有退出,因为守护进程正在运行?

我能够通过在单独的线程中启动命令并将当前线程与其他adb命令一起使用来克服此问题,因为它们会立即返回。 有没有更优雅的解决方案?

回答

0

你可以用subprocess.Popen来做到这一点。

import subprocess 

adb = subprocess.Popen(['adb.exe', 'start-server']) 
# Do some other stuff while adb is running... 

adb.terminate() # Kill the process once you're done 

这还具有一些优点,如给予输入以通过标准输入的过程中,有可能通过使用Popen.communicate()