问题代码:
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()
本文探讨了在使用adblogcat命令时遇到的问题,即通过cmd命令启动后,即使终止cmd进程也无法使adb线程正常退出的原因。提出了直接启动adblogcat命令并指定输出文件的解决思路,避免了cmd进程的影响。最后强调了正确关闭adblogcat进程的重要性。
4839

被折叠的 条评论
为什么被折叠?



