在Android中杀死根进程

在Android中杀死根进程,android,service,process,su,pppd,Android,Service,Process,Su,Pppd,我正在构建一个Android应用程序,通过调用su并向其发送命令来启动一个进程,大致如下: Process su = Runtime.getRuntime().exec( "su" ); DataOutputStream out = new DataOutputStream( su.getOutputStream() ); out.writeChars( "pppd /dev/pts/0" ); out.flush(); 当我想停止服务并终止pppd进程时,我当前正在运行busybox ki

我正在构建一个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
through
su
,就像最初对pppd的调用一样。简单调用
su.destroy()
会失败,即使我在第一次调用中使用了
pppd/dev/pts/0 nodetach
,这会阻止pppd分叉并创建后台进程
killall
可以工作,但它可能会破坏其他依赖pppd的应用程序

我非常喜欢一把手术刀,它可以让我直接消除pppd过程,但是缺少运行
ps
,搜索PID,调用
kill
,似乎没有一个合适的解决方案


有没有一种合理干净的方法可以终止在Android上通过
su
启动的进程?

结果是,随着我实现ppp连接的进展,我不再需要手动终止pppd进程。只需发送一个终止请求,就可以告诉pppd进程它可以关闭连接,然后进程就会关闭

关于基本问题,很好地终止了根进程,我没有找到一个合适的解决方案。最有效的选择似乎仍然是运行
busybox killall pppd
或使用
ps
和基本Java字符串操作手动搜索进程