logcmd = "adb logcat -v time > C:/log.txt"
self.Popen = subprocess.Popen(logcmd ,stdout = subprocess.PIPE,shell=True)
用上面的方法来获取logcat的信息,它的实际原理是另外开启一个cmd命令来运行adb logcat的命令,即使后面用popen.terminate()也只能关闭cmd的命令,cmd命令被kill掉后,adb的线程由系统来托管,杀死不了adb的进程,从而导致adb logcat不能退出
解决思路:直接启动adb logcat,不能通过cmd命令来启动,就是不能启动cmd进程,然后cmd进程来启动adb进程,代码如下:
filename = "C:/log.txt"
logcat_file = open(filename, 'w')
logcmd = "adb logcat -v time"
self.Poplog = subprocess.Popen(logcmd,stdout=logcat_file,stderr=subprocess.PIPE)
最后使用完记得关闭:Poplog.terminate()
原文链接:
http://www.th7.cn/Program/Python/201507/513606.shtml