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 系统调用 (bsd/kern/kern_exec.c) 的 XNU 内核的源代码,但我不习惯那些我不能轻易说出是否可以做类似事情的代码用户空间与否。

4

1 回答 1

3

Mac OS X 严重限制了你在没有execing 的情况下可以做的事情。请参阅fork 手册页的 CAVEATS 部分。允许的操作不包括使用 Cocoa 或 CoreFoundation,因此您必须调用exec以启动新程序。

于 2011-09-11T16:22:39.663 回答