【发布时间】:2013-09-22 04:16:59
【问题描述】:
我的问题很简单。 在 Linux 上,不带 exec 使用 fork 非常流行
但是,我发现在 MacOS 上这是不可能的(参见 fork 手册)
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/fork.2.html
您可以在子进程中执行的操作是有限制的。为了完全安全,你应该限制你自己 self 只执行异步信号安全操作,直到 exec 函数之一 叫。任何框架或库中的所有 API(包括全局数据符号)都应假定为 除非明确记录为安全或异步信号安全,否则在 fork() 之后不安全。如果您需要使用 这些框架在子进程中,你必须执行。在这种情况下,执行自己是合理的。
这对我来说似乎很奇怪?是什么原因?有办法解决吗?
【问题讨论】: