2012-02-19 84 views
8

我正在寻找沙盒应用,以符合Mac App Store的3月1日沙盒要求。我的应用程序包含一个内置的终端仿真程序,它利用forkpty()调用在伪tty环境中启动进程。不幸的是,这个调用在沙箱下出现错误“操作不允许”,但fork()调用工作正常。假设forkpty()调用需要读/写/ dev /目录来创建一个伪tty(根据手册页)。我已经尝试添加一个临时沙盒权限(com.apple.security.temporary-exception.files.absolute-path.read-write),并对/进行读/写访问,现在我确实可以读取和写入文件系统,但forkpty()调用仍会失败并出现相同的错误。有谁知道我可能会如何在沙箱下工作forkpty()Mac应用沙盒和forkpty()

我的应用程序是一个带有内置终端仿真器和文件浏览器的编程文本编辑器,所以它基本上需要访问整个文件系统。除了forkpty()问题之外,这种临时权利似乎正在做我所需要的。但是,苹果是否会接受一个具有这种松散定义的暂时例外权利的应用程序?

在此先感谢你们。我真的很希望我能够使这个沙盒正常运行,所以我继续通过App Store分发我的应用程序。

+0

嗯,如果你正在启动一个shell,这个shell应该有完整的权限来避免恼人的用户,这与沙盒的想法相矛盾。 – jilles 2012-02-21 21:43:41

回答

2

在沙盒应用程序中实现有用的终端仿真程序是不可能的 - 即使在为PTY设备添加权利后,shell也会与应用程序在同一个沙箱中结束,从而阻止它做得太多。