使用Python终止我应用启动的"logcat"进程

1 投票
2 回答
2240 浏览
提问于 2025-04-16 23:45

我创建了一个小应用,里面有一个按钮,点这个按钮就会启动“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”。这样你就不用担心要手动结束这个程序了。 :)

撰写回答