使用fork循环创建子进程

假设父进程为“阳澄湖大龙虾”,那么我接下来就创建5个子进程,分别为:

皮皮虾1号;

皮皮虾2号;

皮皮虾3号;

皮皮虾4号;

皮皮虾5号;

阳澄湖大龙虾这个主进程生了这么多个儿子以后,有点累,需要休息一下

 //Author:kunshanpipixia
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <pthread.h>
 #include <unistd.h>
 int main(void)
 {
     int i;
     pid_t pid = fork();
     for(i=1;i<=5;i++)
     {
         if(fork()==0)//注意此处不要写pid==0,要写成fork()==0;要不然只fork一个皮皮虾。
         {
              break;
         }
     }
     if(pid==0)
     {
     printf("%s%d%s\n","阳澄湖大龙虾生成了皮皮虾",i,"");
     }
     if(i==6&&pid>0)//此处条件限制了,只有父进程才能进入该循环。
     {
         sleep(1);//注意此处老父亲大龙虾要等皮皮虾1秒钟才执行下一步,你们可以去掉试试看是啥结果。
 
          printf("生完皮皮虾了,大龙虾的任务完成了\n");
 
     }
         return 0;
 }

最终输出如下:

 

 证明已经创建好了5个子进程。

个人心得体会:

1. 注意掌握好fork()的返回值。

如果创建成功,子进程返回0,父进程返回子进程PID。

如果失败,返回-1。

2. 注意fork这个动作完成后,子进程和父进程一同执行以后的代码,这也是我没有将子进程的printf放到if循环里但是仍能打印出来5个子进程的原因。

3. 如下图所示,每次执行一次,皮皮虾生出来的顺序都不一样。这和CPU内部的调度算法有关。

 

posted @ 2020-08-03 02:11  昆山皮皮虾  阅读(903)  评论(0编辑  收藏  举报