fork函数是用来创建进程时进行调用的系统函数,调用成功会有两个返回值,若调用不成功会返回-1;如果我们想对创建的进程进行操作就需要从它的反值入手,如果返回值为0这该进程为子进程其它则为父进程,一般fork函数会与wait函数一起用 wait函数是用在父进程中等待子进程死亡的,子进程死亡则wait成非阻塞函数,相反则阻塞。下面来看fork函数的嵌套调用:
#include<stdio.h>
#include<wait.h>
int main()
{
pid_t pid;
pid_t zpid;
pid=fork();
if(fork==-1)
{
printf("creat progress fail!!!\n ");
}
else if(pid==0)//该进程为子进程
{
zpid=fork();
if(zpid==-1)
{
printf("creat progress fail!!\n");
}
else if(zpid==0)
{
while(1);
//这是父进程中的子进程。
}
else
{
printf("this is father progress!\n");
wait(NULL);
//这表示的是父进程里要执行的东西 跟外面的fork创建的父进程是同级别的。
}
while(1);//让子进程一直执行
}
else
{
printf("this is father progress!\n");
wait(NULL);
}
}