fork Cocoa 进程并重新初始化 Cocoa。如何?

发布于 2024-12-04 04:29:05 字数 724 浏览 1 评论 0原文

我尝试 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 系统调用的 XNU 内核的源代码(bsd/kern/kern_exec.c) 但我不太习惯这些代码,所以我不能轻易地说它是否可能是否在用户空间中执行类似的操作。

I tried to fork() a Cocoa process and setup a new Cocoa/ObjC environment but I get the error:

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.

Is there a way to re-initialize Cocoa/ObjC in the forked process?


I know that the documentation about fork() does say it is limited, however I wonder if there is still a way to do it, not just what the documentation says.

I tried to read the source code of the XNU kernel which handles the execve syscall (bsd/kern/kern_exec.c) but I am not that used to the code that I cannot easily say wether it is possible or not to do something similar in userspace or not.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一个人练习一个人 2024-12-11 04:29:05

Mac OS X 严重限制了您在 fork 后无需执行即可执行的操作。请参阅 fork man 的“注意事项”部分页面。允许的操作不包括使用 Cocoa 或 CoreFoundation,因此您必须调用 exec 来启动新程序。

Mac OS X severely limits what you can do after a fork without execing. See the CAVEATS section of the fork man page. The allowed actions do not include using Cocoa or CoreFoundation, so you must call exec to start a new program.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文