作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我希望对应用程序进行沙盒处理,以符合 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/
我是一名优秀的程序员,十分优秀!