Mac app沙盒和forkpty()

kri*_*ill 8 c cocoa sandbox objective-c 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会接受一个具有如此松散定义的临时例外权利的应用程序吗?

先谢谢你们.我真的希望我可以启动并运行这个沙箱,所以我继续通过App Store分发我的应用程序.

小智 2

在沙盒应用程序中实现有用的终端模拟器是不可能的——即使您为 PTY 设备添加了权限,shell 最终也会与应用程序位于同一个沙盒中,从而阻止它执行很多操作。