我正在构建一个 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
,似乎没有一个像样的解决方案。
是否有一种相当干净的方法可以杀死su
在 Android 上启动的进程?