这是一个代码,我一个接一个地使用 2 个 fork() 系统调用 - 它实际上是如何工作的?
#include <unistd.h>
#include <iostream.h>
using namespace std;
int main()
{
cout << "0. I am process " << getpid() << endl;
(void) fork();
cout << "1. I am process " << getpid() << endl;
(void) fork();
cout << "2. I am process " << getpid() << endl;
}
我得到的输出为:
0.我是进程 27701
1.我是进程 25915 1.
我是进程 27701
2.我是进程 27781
2.我是进程 26170
2.我是进程 27701
这是我使用 3 个 fork 系统调用的下一个程序,我如何获得这样的输出?如果我要手动解决此代码,逻辑是什么?
#include <unistd.h>
#include <iostream>
using namespace std;
int main()
{
cout << "0. I am process " << getpid() << endl;
(void) fork();
cout << "1. I am process " << getpid() << endl;
(void) fork();
cout << "2. I am process " << getpid() << endl;
(void) fork();
cout << "3. I am process " << getpid() << endl;
}
在这里我得到的输出为:
0.我是进程 27116
1.我是进程 26147
2.我是进程 27371
2.我是进程 26147
3.我是进程 24416
3.我是进程 27371
3.我是进程 27508
3 .我是进程26147
1.我是进程27116
2.我是进程21406
2.我是进程27116
3.我是进程27369
3.我是进程21406
3.我是进程26752
3.我是进程27116