c++ - 在 main 之前调用 fork

标签 c++ c fork posix language-lawyer

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/

相关文章:

c++ - 类函数和成员变量踩内存

c++ - 打印: Displaying an SHA1 hash in hexadecimal

c++ - QT 在锁定线程中通过 QTest 关闭窗口

c - 在 C99 的嵌套 for 循环中声明计数器变量的最佳实践

使用回溯计算硬币数组的可能组合

linux - 循环 fork()

C++ 生成文件 3 个文件

c - 当只有一个损坏的堆栈核心文件时如何找到调用堆栈?

python - 为什么 if block 在 else 之后执行?

c - 在不使用 shell 的情况下在 C 中运行程序