【问题标题】:Getting error in writing a background process for iPhone为 iPhone 编写后台进程时出错
【发布时间】:2014-06-03 12:16:11
【问题描述】:

对于我的应用程序,我想创建一个后台进程,所以我做到了。 但是现在当尝试像这样在 postinst 中通过脚本加载进程时 /Library/LaunchDaemons/com.dev.app.

我收到错误消息:

无法打开作业覆盖数据库位于:/private/var/db/launchd.db/com.apple.launchd/overrides.plist:2:没有这样的文件或目录

谁能帮我解决这个问题?

编辑:

Debian postinst 脚本:

chown root:wheel /Library/LaunchDaemons/com.dev.app.plist
launchctl load /Library/LaunchDaemons/com.dev.app.plist

【问题讨论】:

  • 向我们展示您的整个 postinst 脚本
  • 它是第 1 行。(chown root:wheel /Library/LaunchDaemons/com.dev.app.plist) 第 2 行。(launchctl load /Library/LaunchDaemons/com.dev.app.plist)

标签: ios objective-c jailbreak cydia


【解决方案1】:

我也看到了这个错误信息。

如果您查看手机的文件系统(例如使用ssh 登录),我敢打赌您在/private/var/db/launchd.db 没有文件夹。

仅仅因为 iOS 找不到该数据库文件并不意味着您的守护程序没有加载(或卸载)。在命令行(登录手机)使用ps -Aef命令检查你的守护进程是否正在运行。

在你的守护进程的 plist 文件中(例如/System/Library/LaunchDaemons/com.mycompany.mydaemon.plist),你可以设置一个 Disabled 标志(但是,你可能不会)。 overrides.plist 文件可以覆盖守护进程 plist 文件中的 Disabled 设置。

我的猜测是,这主要是 OS X 的一项功能,而不是 iOS 常用的功能,它共享大部分相同的代码库。

编辑:

如果您真的觉得有必要删除该消息,看起来只需创建该目录即可删除它。因此,您可以在调用launchctl 之前在postinst 脚本中添加类似的内容:

mkdir -p /var/db/launchd.db/com.apple.launchd

【讨论】:

  • 你是对的 在列出正在运行的进程后,我知道我的进程正在成功运行,但为什么现在会发生这种情况,因为在 6 个月之前,当我创建这样的后台进程时,它没有显示任何那样的错误。而且我也没有/var/db/launchd.db/com.apple.launchd。再次感谢您的帮助
  • iOS 7 可能会有所不同。我现在没有可用的较旧的越狱 iOS 设备,但 Apple 可能已经更改了他们的代码,或者删除了 iOS 上不需要的额外目录,导致此消息开始出现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多