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