2011-09-11 26 views
1

は私がfork()にココアプロセスとセットアップ新しいココア/にObjC環境を試してみましたが、私はエラーを取得:フォークココアプロセスと再スタートココア。どうやって?

The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec(). 
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug. 

フォークプロセスにココア/にObjCを再初期化する方法はありますか?それを行うための方法がまだあるならば、私はfork()についてのドキュメントは、それには限界があると言うんことを知っている


は、しかし、私はドキュメントが言うだけで何、ではないだろうか。

私はsource code of the XNU kernel which handles the execve syscall (bsd/kern/kern_exec.c)を読もうとしましたが、コードに慣れていないので、ユーザー空間に似たようなことをすることはできません。

答えて

3

Mac OS Xでは、フォーク後にできることは、execなしで厳しく制限されています。 fork man pageの警告セクションを参照してください。許可されたアクションにはCocoaやCoreFoundationは含まれていませんので、execに電話して新しいプログラムを開始する必要があります。

+0

ドキュメンテーションが何を言っているのか知っていますが、それはどういうわけか、私の質問にはまだ答えていません。私は可能な方法として私が心に持っていることを示すために少し質問を延長しました。 – Albert

+0

@Albert関連: 'fork()'と 'exec()'の前にasync-safe関数に頼ることができるので、[PLCrashReporter質問へのLandonの答え](http:// stackoverflow。 com/questions/7312905/using-plcrashreporter-can-you-receive-the-crash/7365872#7365872)を参照してください。 –

関連する問題