沙盒限制freopen Mac OS X.

时间:2012-04-18 15:14:47

标签: macos redirect operating-system sandbox

所以我有一个运行良好的应用程序但是当沙盒被宣布时,我想我可能会开始遵守。在我的应用程序中,用户可以调用python,我一直在做的是stdout和stderr的简单重定向

freopen("error.log","w",stderr);

然后通过

调用Python
status = PyRun_SimpleString(utfString);

从那里我可以简单地回读结果/错误并继续生活。但是对于沙盒,这是不允许的,因为/ dev / stdout和/ dev / stderr不在我的应用程序之外。我尝试在权利中添加临时文件例外:

com.apple.security.temporary-exception.files.absolute-path.read-write => Array
{
    Item 0 => /dev/stdout
    Item 1 => /dev/stderr
}

但这也无济于事......

有谁知道如何解决这个问题?这段代码工作正常,我理解沙盒,但我想保持python界面简单,快速重定向似乎是我可以接受的;毕竟,每个人都可以写入和阅读stdout / stderr ....

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

答案是路径不正确,使用沙箱,重定向很好,但你需要在NSDocumentsDirectory中的文件中进行...所以,如果你开始认为像iOS一样好,没有魔法,回想一下,你需要在应用程序的文档目录中进行编写,并且stdout / stderr的重定向是写入...

相关问题