使用Python终止我应用启动的"logcat"进程
我创建了一个小应用,里面有一个按钮,点这个按钮就会启动“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,然后手动结束它。
任何帮助都非常感谢。
2 个回答
0
导入操作系统和系统模块
执行命令:adb logcat -d | grep -i --line-buffered searchstring > logtest.txt
--line-buffered -> 这个选项是为了把控制台的输出内容复制到logtest.txt文件里
-d -> 这个选项是为了让logcat命令不会一直等待,避免无限期地停在那里
1
如果你不想让这个程序一直运行下去,可以使用“-d”这个选项。就像这样:“adb logcat -d”。这样你就不用担心要手动结束这个程序了。 :)