我创建了一个小应用程序,点击按钮将启动“adb logcat”进程,但在启动此过程后,我们必须按Ctrl + C命令停止它。 我想让它变得通用,所以不要使用Ctrl + C命令,并希望在几秒钟后(例如5秒)自行终止它。
在点击按钮时开始执行的def LOGGER():
buildID=os.popen("adb shell getprop ro.build.id").read().strip()
device=os.popen("adb shell getprop ro.product.device").read().strip()
Log = ("D:\\Profiles\\hjv743\\Desktop\\Logs\\"+device+"_"+buildID)
if not os.path.isdir(Log):
os.mkdir(Log)
os.system("adb pull /data/logger "+Log+"\\flash")
os.system("adb pull /sdcard-ext/logger "+Log+"\\sdcard-ext")
我已尝试使用其pid终止进程,但它不会终止它并继续在后台运行(不用提及进程名称始终是“logcat”,因为进程是adb logcat)
同样在这个完整的过程中,我的应用程序在进程运行时保持挂起,所以我不能再使用另一个按钮(使用Tkinter)来终止正在运行的进程。因此,我唯一的选择是在一段时间后自动终止它。 这对我的应用程序非常重要,因为我无法在整个过程中与它进行交互。
我是否采取了错误的方式,还有其他方法可以做同样的过程。我可以将(adb logcat)进程作为后台进程启动,并再引入一个按钮来获取pid并手动终止它。
感谢任何帮助。
答案 0 :(得分:1)
如果您不想无限运行该进程,可以使用'-d'标志。 如“adb logcat -d”中所示。这样你就不必费心去杀死这个过程了。 :)
答案 1 :(得分:0)
import os,sys
os.system(“adb logcat -d | grep -i --line-buffered searchstring> logtest.txt”)
- 行缓冲 - >用于将consol输出复制到logtest.txt
-d - >防止logcat进程等待无限时间