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