objective-c - Mac 应用程序沙盒和 forkpty()

标签 objective-c c cocoa sandbox appstore-sandbox

我希望对应用程序进行沙盒处理,以符合 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/

相关文章:

objective-c - 如何在 View Controller 之间传递变量?

ios - 需要随着底部列表滚动移动顶部红色选择器

c - 指针错误

macos - NSOutlineView的outlineViewSelectionDidChange(_通知: Notification) get called twice some times

objective-c - Cocoa 应用程序菜单栏不可点击

cocoa - 如何解决安装 cocoapods 的错误(未定义方法 `invoke_with_build_args' for nil :NilClass)?

ios - uitableview 的框架没有以编程方式更改

ios - iOS-如何在UIWebView上自动播放youtube视频或直接与任何Video Player一起播放?

android - 将c文件与android bionic c库静态链接

c - 使用汇编器和 C 接口(interface)执行多项操作