размешайте процесс какао и повторно инициируйте какао.как? - PullRequest
1 голос
/ 11 сентября 2011

Я попытался 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() действительно ограничена, однако мне интересно, есть ли еще способ сделать это, а не только то, что написано в документации.

Я пытался прочитать исходный код ядра XNU, которое обрабатывает системный вызов execve (bsd / kern / kern_exec.c) но я не настолько привык к коду, который не могу легко сказать, возможно ли этоили не делать что-то подобное в пользовательском пространстве или нет.

1 Ответ

3 голосов
/ 11 сентября 2011

Mac OS X строго ограничивает то, что вы можете сделать после разветвления без exec ing.См. Раздел CAVEATS справочной страницы *1003*.Разрешенные действия не включают использование Cocoa или CoreFoundation, поэтому вы должны вызвать exec, чтобы запустить новую программу.

...