【问题标题】:Killing Root Processes in Android在 Android 中杀死根进程
【发布时间】: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 pppdsu,就像对 pppd 的初始调用一样。简单地调用su.destroy() 失败,即使我在第一次调用中使用pppd /dev/pts/0 nodetach,这会阻止 pppd 分叉和创建后台进程。 killall 有效,但它可能会破坏其他依赖 pppd 的应用程序。

我更喜欢手术刀,它可以让我直接消除 pppd 进程,但缺少运行 ps、搜索 PID 和调用 kill,似乎没有一个像样的解决方案。

是否有一种相当干净的方法可以杀死在 Android 上通过 su 启动的进程?

【问题讨论】:

    标签: android service process su pppd


    【解决方案1】:

    事实证明,随着我在实现 ppp 连接方面取得进展,我不再需要手动终止 pppd 进程。简单地发送一个 Terminate-Request 告诉 pppd 进程它可以关闭它的连接,然后进程关闭。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 2022-01-18
      相关资源
      最近更新 更多