启动adb守护程序python

时间:2017-06-22 14:43:22

标签: python multithreading subprocess adb

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

以下是我尝试调用它的方法,以启动adb服务器。

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

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

当我从任务管理器中删除adb时,程序会退出,并输出正确的输出。

我如何解决这个问题,我认为自守护程序运行以来该命令没有退出?

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

1 个答案:

答案 0 :(得分: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

这也有一些优点,比如通过stdin为进程提供输入的可能性,使用Popen.communicate()