我希望对应用程序进行沙箱处理,以符合Mac App Store 3月1日的沙箱处理要求。我的应用程序包含一个内置的终端模拟器,该模拟器利用forkpty()调用在伪tty环境中启动进程。不幸的是,尽管fork()调用可以正常工作,但此调用在沙箱下失败,并显示错误“不允许操作”。大概forkpty()调用需要对/dev/目录的读/写访问权限才能创建伪tty(根据手册页)。我尝试添加具有对/的读/写访问权限的临时沙盒授权(com.apple.security.temporary-exception.files.absolute-path.read-write),现在我确实可以在文件系统,但forkpty()调用仍然失败,并出现相同的错误。有谁知道我如何让forkpty()在沙盒下工作?

我的应用程序是带有内置终端仿真器和文件浏览器的编程文本编辑器,因此从本质上讲,它需要访问整个文件系统。除了forkpty()问题之外,这种暂时的权利似乎可以满足我的需求。但是,Apple会接受具有如此宽松定义的临时异常(exception)权利的应用程序吗?

在此先感谢大家。我真的希望我可以启动并运行此沙箱,因此我将继续通过App Store分发我的应用程序。

最佳答案

在沙盒应用程序中不可能实现有用的终端仿真器-即使在为PTY设备添加了权利之后,shell最终仍与该应用程序位于同一沙盒中,从而阻止了它的大量工作。

关于objective-c - Mac应用程序沙箱和forkpty(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9353918/

10-09 06:31
查看更多