fork() 到底在做什么?在我的C++程序中
what is fork() really doing? in my C++ program
我可能的重复项:
在 C 语言中分叉的工作
有一个非常简单的程序,我正在尝试理解fork()现在,在我的程序中是 fork() 每次遇到 fork() 时复制整个程序还是上面的一行(作为父级)?
我得到了奇怪的结果,这使得它更难理解。
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
cout << "Ha! " << endl;
fork();
cout << "Ho! " << endl;
fork();
cout << "He! " << endl;
}
输出:
apple.seed@wint:~$ ./program1
Ha!
Ho!
He!
Ho!
He!
apple.seed@wint:~$ He!
He!
在 fork() 点,操作系统将创建一个与父进程完全相同的新进程(无论可能是什么?这意味着之前讨论的所有状态都被复制,包括打开的文件、寄存器状态和所有内存分配,其中包括程序代码。(所以当程序到达fork()时,整个程序被复制了?
He! <-- original
/
Ho! <
/
/ He! <-- forked from original's second fork call
/
Ha! <
He! <-- forked from origin's first fork call
/
He! <
He! <-- forked from the first fork
^
|
+----------- after second forks
<
= 分叉调用。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- cmake在我的项目中所需的所有静态库都不成功
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 为什么我的for循环不能正确获取argv
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 0-1背包代码中的错误.我的代码中有什么错误
- 当我的阵列太大时出现分段错误
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 为什么二进制搜索在我的测试中不起作用
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- OpenGL在启用深度测试时不会丢弃我的碎片
- 为什么我的 std::ref 无法按预期工作?
- clang整洁10忽略了我的NOLINT命令
- 为什么我的删除节点函数实际上没有删除节点?