1

fork()Cocoa プロセスで新しい Cocoa/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.

フォークされたプロセスで Cocoa/ObjC を再初期化する方法はありますか?


ドキュメントには制限があると書かれていることは知っていますがfork()、ドキュメントに書かれていることだけでなく、それを行う方法がまだあるのではないかと思います。

execve syscall (bsd/kern/kern_exec.c) を処理する XNU カーネルのソース コードを読み取ろうとしましたが、同じようなことを実行できるかどうかを簡単に判断できないコードに慣れていません。ユーザー空間かどうか。

4

1 に答える 1

3

execMac OS Xは、フォーク後にingなしで実行できることを厳しく制限します。フォークマンページのCAVEATSセクションを参照してください。許可されるアクションには、CocoaまたはCoreFoundationの使用が含まれていないためexec、新しいプログラムを開始するにはを呼び出す必要があります。

于 2011-09-11T16:22:39.663 に答える