【问题标题】:Will android kill my daemon which is running as root?android会杀死我以root身份运行的守护进程吗?
【发布时间】:2011-05-25 19:39:07
【问题描述】:

我有一个应用程序(有一部分)需要始终运行;它不是作为服务启动的,该应用程序启动了一个以 root 身份运行的守护进程(用 c 编写)。

android 会为了回收内存而杀了我吗?它以root身份运行是否可以保护我免受此侵害?如果没有,我该怎么做才能确保它永远不会死,如果死了,它会重新开始?

【问题讨论】:

    标签: android android-ndk daemon root kill


    【解决方案1】:

    如果您的守护程序是纯原生应用程序(例如,通过系统的 inittab 启动),而不是在 APK 上下文中运行的东西,那么 Android 将永远不会杀死它。至少,在我的情况下,我的守护进程唯一一次终止是在我修复 SIGSEGV 之前;)

    【讨论】:

      【解决方案2】:

      我已经有一段时间没有使用过 android 了,也没有使用过 root 运行进程。但我确实相信,无论您的应用程序正在运行什么用户,如果内存确实变低,Android OS 可能会发出“停止”,然后可能会发出“杀死”命令。我之所以这么说是因为类似于完整的 Linux 内核,如果它需要内存,它会找到一种方法来获取它。我有一部 HTC 手机,实际上我已经看到内核杀死 HTC sense 以获得 RAM,这实际上是重置手机。有一些方法可以设置应用程序的启动时间,我相信您可以设置挂钩,说明应用程序何时应该根据电话事件启动。类似于当手机收到 txt 时 txt msg 应用程序将如何启动,或者即使您在任务管理器中杀死该应用程序,警报应用程序仍将如何关闭。我相信您可以在应用程序 xml 配置中设置这些。

      祝你好运!

      【讨论】:

      • 这很有趣,但你怎么知道回收记忆会扼杀理智?即你怎么知道它不仅仅是感觉崩溃?
      • 我无法确定这不是崩溃的感觉……但所有迹象都表明了这一点。当它是关注的主要应用程序时,我从来没有感觉自己做这件事。只有当我使用我知道会占用大量 RAM 的应用程序时,它才会被杀死,并且 Android 开发人员文档指出这是该过程。由于 Sense 不是操作系统的直接一部分,而更多的是一个层,我最好的猜测是这就是正在发生的事情
      • 我想如果我真的确定要知道是否是这种情况,我可以打开调试并通过 eclipse 在加载一个占用 RAM 的应用程序时查看系统日志。理论上,系统日志会在发出 kill 命令时打印出来,以及哪些应用程序受到了影响。这将证明我的假设。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      相关资源
      最近更新 更多