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

Posted shaonianpi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++并发编程之进程创建相关的知识,希望对你有一定的参考价值。

 

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++并发编程之进程创建的主要内容,如果未能解决你的问题,请参考以下文章

Python 3 并发编程多进程之队列(推荐使用)

并发编程之线程

python之并发编程—协程

并发编程 之 进程 之 进程的模型: 进程同步的工具 继 创建进程( 守护进程)

并发编程之线程

python并发编程之多进程理论部分