c++并发编程之进程创建

妖精的绣舞 提交于 2019-11-29 03:24:52

 

1.进程创建

先上代码:

 1  #include"iostream"                                                                                                                                        
 2  #include<unistd.h>
 3    int main()
 4    { 
 5        using namespace std;
 6        pid_t pid;
 7       cout<<"parent have!"<<endl;
 8            pid = fork();//执行fork的时候到底发生了什么?
 9        if(pid == -1)//错误创建
10        {
11            perror("fork error");
12              _exit(1);
13        }
14        else if(pid == 0)//子进程
15        {
16 
17            cout<<"i am child,pid = "<<getpid()<<" my parent is:"<<getppid()<<endl;
18        }
19        else//父进程
20        {
21           // sleep(1);
22            cout<<"i am parent,pid = "<<getpid()<<" my parent is:"<<getppid()<<endl;
23        }
24        cout<<"both have!"<<endl;
25        return 0;
26    }

运行结果:

 

 

 程序及结果分析:

 

 

 

2.创建多个子进程

 1  #include"iostream"                                                                                                                                        
 2  #include<unistd.h>
 3    int main()
 4    { 
 5        using namespace std;
 6        pid_t pid;
 7       cout<<"parent have!"<<endl;
 8       for(int i = 0;i < 5;i++)
 9       {
10             pid = fork();//执行fork的时候到底发生了什么?
11             if(pid == 0)
12             {
13                // cout<<"the ID of son "<<i+1<<":"<<getpid()<<endl;
14                  break;//这个很重要,思考为什么
15             }
16       }
17          
18        if(pid == -1)//错误创建
19        {
20            perror("fork error");
21              _exit(1);
22        }
23        else if(pid == 0)//子进程
24        {
25            //sleep(1);
26            cout<<"i am child,pid = "<<getpid()<<" my parent is:"<<getppid()<<endl;
27        }
28        else//父进程
29        {
30            sleep(1);
31            cout<<"i am parent,pid = "<<getpid()<<" my parent is:"<<getppid()<<endl;
32        }
33        cout<<"both have!"<<endl;
34        return 0;
35    }

程序运行结果:

 

 

 程序及结果分析:

 

 

父子进程共享

共享遵循的原则:读时共享写时复制原则

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!