【发布时间】:2014-07-12 18:30:50
【问题描述】:
我有一个越狱应用程序需要以 root 身份运行,所以在 main 函数的开头,我调用 setuid(0);当我想通过任务切换器终止应用程序时,就会出现问题。我将它从多任务栏中删除,但它继续在后台运行。有人知道如何解决这个问题吗?我知道“iFile”有一段时间有这个问题。
【问题讨论】:
标签: ios iphone objective-c root jailbreak
我有一个越狱应用程序需要以 root 身份运行,所以在 main 函数的开头,我调用 setuid(0);当我想通过任务切换器终止应用程序时,就会出现问题。我将它从多任务栏中删除,但它继续在后台运行。有人知道如何解决这个问题吗?我知道“iFile”有一段时间有这个问题。
【问题讨论】:
标签: ios iphone objective-c root jailbreak
你遇到的问题其实很简单。
SpringBoard 和多任务栏以用户 mobile 运行,而您的应用程序以 root 运行。 mobile 用户无法终止以 root 身份运行的进程。
我解决这个问题的第一个想法是将 (MobileSubstrate) 挂接到多任务栏中,并且由于 MS 调整可以以 root 运行,因此检测用户何时杀死您的应用程序并以 root 用户身份自行杀死它,因为 SpringBoard 根本可以不要这样做。
或者如果这不能解决问题,请询问制作 iFile 的人,他真的很有帮助,我相信他会给你一些关于这个问题的指导。
【讨论】:
exit(0)。但我认为无论进程权限如何,都应该调用applicationWillTerminate。这只是一个事件,SpringBoard 应该可以将它发送到root 进程。
我建议您准确调查您是如何实现 root 权限提升的,它是否构建为普通的 UIApplication,并安装在 /Applications/ 中?
我认为这应该阻止你杀死应用程序。看看 Cydia 应用程序本身,它也以 root 身份运行。
我可以通过任务切换器毫无问题地杀死 Cydia(之后使用 ps 命令验证)。
如果您登录越狱手机,请查看:
/Applications/Cydia.app/Cydia
/Applications/Cydia.app/MobileCydia
我相信技术是well described here。否则,您可能需要发布有关如何编写应用程序的更多信息。
【讨论】:
voip 应用程序,还是使用其他一些功能可能会提示 iOS 在被杀死时重新启动应用程序?