使用Python终止我的应用程序启动的“logcat”进程

时间:2011-08-17 03:19:02

标签: python

我创建了一个小应用程序,点击按钮将启动“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 :(得分: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进程等待无限时间