subprocess.Popen在启动adb服务器

时间:2018-01-09 10:38:58

标签: android python

test.py:

import os
from subprocess import Popen,PIPE,STDOUT

os.system("adb kill-server")
p = Popen("adb devices", stdout=PIPE, stderr=PIPE, stdin=PIPE)
for str in p.communicate()[0].split("\r\n"):
    print str
p.wait()
p.terminate()

执行独立操作时,此脚本可以正常退出。

test2.py

import os
from subprocess import Popen,PIPE
p = Popen("python test.py", stdout=PIPE, stderr=PIPE, stdin=PIPE)
for str in p.communicate()[0].split("\r\n"):
    print str
p.wait()
p.terminate()

此脚本调用“test.py”,并将挂起“p.communicate()”。 这是怎么发生的?

1 个答案:

答案 0 :(得分:0)

shell=True中添加test.py,如下所示,然后执行test2.py

import os
from subprocess import Popen,PIPE,STDOUT

os.system("adb kill-server")
p = Popen("adb devices", stdout=PIPE, stderr=PIPE, stdin=PIPE, shell=True)
for str in p.communicate()[0].split("\r\n"):
    print str
p.wait()
p.terminate()