Mac AppStore拒绝写入/private/var/run/utmpx



我的应用程序被拒绝了一个神秘而令人困惑的原因,我没有办法理解。我还没有写到这个位置(沙箱不允许),并且在写模式下打开文件导致写入该文件对我来说没有任何意义。

是否有一种方法来监控您的应用程序是否正在写入位置或哪些文件正在哪种模式下打开?我可以从沙盒访问我写/读的所有位置,所以我不明白为什么这种模式甚至很重要。即使我修改了一些代码,我也没有任何方法来验证这个文件是否被写入,所以在这一点上我几乎不可能进行调试。

感谢您的任何建议来帮助调试。

应用程序访问以下位置:

/私人/var/跑步/utmpx"

大多数遇到此问题的开发人员正在打开文件在读/写模式下,而不是只读模式下,在这种情况下修改为只读

这个问题的其他常见原因包括:

  • 在上述位置创建或写入文件,这些位置不是文档

  • 中规定的要写入文件的有效位置。
  • 写入上述位置,而不使用有效的应用程序id作为写入文件的容器

请查看"应用商店的文件系统使用要求"提交到Mac App Store的位置应用程序是允许的写作和进一步指导。

如果我是你,我会按照这个指南来确保你已经正确地启用了应用程序沙盒。

苹果公司是这样描述这个指南的(注意我加的语句):

在这个快速入门中,您可以在沙盒中启动并运行OS X应用程序。您验证应用程序确实是沙盒,然后学习如何排除和解决典型的应用程序沙盒错误。您使用的应用程序是Xcode, Keychain Access, Activity Monitor和Console。

我的理解是,如果应用程序沙盒没有正确设置,你就不能有效地确保你的应用程序在沙盒中正常运行。

您引用的文件通常存储用户的登录/注销信息。如果你的应用程序以用户而不是自己的身份调用命令,或者将特权升级到另一个用户,这将作为写操作发生。您应该注意不要调用导致登录写入该文件(破坏沙箱)的辅助进程

有关此文件的信息,请参阅http://en.wikipedia.org/wiki/Utmp

所以答案是命令"uptime"写入/private/var/run/utmpx。这仅仅意味着在沙盒应用程序中不可能调用正常运行时间,使其成为沙盒的另一个受害者。

最新更新