linux下创建进程用到的函数是fork(),头文件为include<unistd.h>
linux下创建单进程
由于系统的原因,可能主进程会在子进程前结束,因此如果想要子进程先结束,可以让主进程先睡眠几秒
#include<iostream>
#include<unistd.h>
using namespace std;
int main()
{
pid_t pid;
pid = fork();
if(pid == -1)
{
cout<<"fork error"<<endl;
}
else if(pid == 0)
{
cout<<"子进程"<<endl;
}
else
{
//sleep(3); 如果想要子进程先结束
cout<<"主进程"<<endl;
}
}
linux下创建多进程
由于子进程在创建后的下一次循环的时,会被当做主进程,因此,此处当创建子进程时,让其退出
如果这个地方不退出,那么创建的进程数量就不是想要的进程数量,子生子会有很多,而且父进程也无法控制
此处也可使用getpid()和getppid()来来显示他们的进程号和父进程号
#include<iostream>
#include<unistd.h>
#include<stdlib.h>
using namespace std;
int main()
{
pid_t pid;
int i;
for(i=0;i<5;i++)
{
pid = fork();
if(pid == -1)
{
cout<<"fork error"<<endl;
}
else if(pid == 0)
{
sleep(i);
cout<<"子进程"<<i<<" "<<getpid()<<" 父进程id:"<<getppid()<<endl;
exit(1); //子进程退出
}
else
{
//父进程.继续循环
}
}
if(i==5) //只有父进程能进入
{
sleep(i);
cout<<"主进程id: "<<getpid()<<endl;
}
}