浅谈对fork函数的理解

来源:互联网 发布:linux crontab每月 编辑:程序博客网 时间:2024/04/28 01:53

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);

         }

}