POSIX 标准是否允许在 main()
之前调用 fork()
- 例如,在 C++ static
实例中,或在__attribute__((constructor))
C 函数?
最佳答案
fork
手册页中没有任何迹象表明它是被禁止的,我也想不出它被禁止的原因。
确实,就 POSIX 而言,main
并没有什么特别之处。只是 C 选择以具有该名称的函数开始其程序,而 C++ 几乎也是如此。但就 POSIX 而言,一旦你的进程启动,你的进程就启动了。它可以用任何旧语言编写,并且 fork
仍然必须工作。
在 C 中(不是 C++!)你不可能编写在 main
之前执行的代码(因为 的初始化程序static
变量在该上下文中必须是常量),因此对于 C 来说,这有点争议。然而,暂时脱离 C 抽象,POSIX 中仍然没有阻止编译器供应商在 C 运行时中包含在进入 main
之前执行 fork
的代码。回想一下,“真正的”入口点实际上并不是 main
;在调用 main
开始您的程序部分之前,“true”入口点会执行一些库初始化等操作。
关于c++ - 在 main 之前调用 fork,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37817651/