码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-09-01 18:15:29      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:ror   col   pac   span   分析   ace   重要   child   parent   

 

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    }

程序运行结果:

技术图片

 

 

 程序及结果分析:

 

 

父子进程共享

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

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

标签:ror   col   pac   span   分析   ace   重要   child   parent   

原文地址:https://www.cnblogs.com/shaonianpi/p/11442915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!