【发布时间】:2011-06-29 20:12:29
【问题描述】:
我正在构建一个 Android 应用程序,它通过调用 su 并向其发送命令来启动一个进程,如下所示:
Process su = Runtime.getRuntime().exec( "su" );
DataOutputStream out = new DataOutputStream( su.getOutputStream() );
out.writeChars( "pppd /dev/pts/0" );
out.flush();
当我想停止服务并终止 pppd 进程时,我目前正在运行 busybox killall pppd 到 su,就像对 pppd 的初始调用一样。简单地调用su.destroy() 失败,即使我在第一次调用中使用pppd /dev/pts/0 nodetach,这会阻止 pppd 分叉和创建后台进程。 killall 有效,但它可能会破坏其他依赖 pppd 的应用程序。
我更喜欢手术刀,它可以让我直接消除 pppd 进程,但缺少运行 ps、搜索 PID 和调用 kill,似乎没有一个像样的解决方案。
是否有一种相当干净的方法可以杀死在 Android 上通过 su 启动的进程?
【问题讨论】:
标签: android service process su pppd