我的应用因一个我无法理解的神秘而令人困惑的原因而遭到拒绝。我还没有写到这个位置(沙箱不会允许它)并且在写入模式下打开文件会导致写入该文件对我没有任何意义。
有没有办法监控您的应用是在写某个位置,还是在哪种模式下打开哪些文件?我可以从沙箱访问我写/读的所有位置,所以我不明白为什么模式甚至很重要。即使我更改了某些代码,我也无法验证此文件是否已写入,因此我现在几乎不可能进行调试。
感谢任何有助于调试此问题的想法。
应用程序访问以下位置:
' /私有的/ var /运行/了utmpx'
大多数遇到此问题的开发人员都在打开文件 在读/写模式而不是只读模式,在这种情况下它应该 被改为只读。
此问题的其他常见原因包括:
在上述位置创建或编写文件,这些文件不是文档中所述文件的有效位置
在不使用有效的app-id作为书面文件的容器的情况下写入上述位置
请查看App Store的"文件系统使用要求" 提交到Mac App Store以获取允许的位置应用程序 写作和进一步指导。
答案 0 :(得分:0)
如果我是你,我会按照this指南确保您已正确启用App Sandbox。
以下是Apple将本指南描述为(请注意我加粗的声明):
在本快速入门中,您将获得一个OS X应用并在沙箱中运行。 您确认该应用确实是沙盒,然后了解如何排查和解决典型的App Sandbox错误。 您使用的应用是Xcode,Keychain Access,Activity Monitor和控制台。
我的理解是,如果App Sandbox设置不正确,则无法有效确保您的应用在沙盒中正常运行。
答案 1 :(得分:0)
您引用的文件通常存储用户的登录/注销信息。如果您的应用程序以非本身用户身份调用命令或将权限升级为其他用户,则会以写入操作的形式进行。您应该小心不要调用导致对该文件进行登录写入的辅助进程(破坏沙箱)
有关此文件的信息,请参阅http://en.wikipedia.org/wiki/Utmp
答案 2 :(得分:0)
所以答案是命令"正常运行时间"正在写入/ private / var / run / utmpx。这只是意味着在sanboxed应用程序中无法调用正常运行时间,使其成为沙盒的另一个受害者。