1

うまく機能していたアプリを手に入れたのですが、サンドボックスが発表されたとき、私は準拠し始めたほうがよいと考えました。私のアプリでは、ユーザーは 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 に読み書きできます....

どんな助けでも大歓迎です。

4

1 に答える 1

0

答えは、パスが間違っていた、サンドボックスで、リダイレクトは問題ありませんでしたが、NSDocumentsDirectory 内のファイルに対して行う必要があります...したがって、iOS のように考え始めたら、魔法はなく、思い出してください。書き込みはアプリのドキュメント ディレクトリで行う必要があり、stdout/stderr のリダイレクトは書き込みです...

于 2012-04-19T15:25:04.027 に答える