循环创建多个子进程

对于以下循环创建进程是什么样的呢?

int i = 0;
while(i < 3){fork();/*功能代码*/i++;
}

子进程创建如下图

学习笔记

  1. 对于仅含有一个 fork()的循环体,循环n次后,共有2^n个进程(包含最初始的父进程);
  2. 若fork()在循环体的开端,循环体的代码将被执行 (2^(n+1)-2) 次;
  3. 事实上,我们一般只让父进程 fork,不让 子进程 继续fork,所以当 fork()返回值为0时,跳出循环,这样的话,循环n次,创建n个子进程;

练习

通过命令行参数指定创建进程的个数,每个进程休眠 1S 打印自己是第几个被创 建的进程。如:第 1 个子进程休眠 0 秒打印:“我是第 1 个子进程”;第 2 个进程休眠 1 秒打 印:“我是第 2 个子进程”;第 3 个进程休眠 2 秒打印:“我是第 3 个子进程”。

目标

通过该练习掌握框架:循环创建 n 个子进程,使用循环因子 i 对创建的子进程加以区分;

代码

#include <stdio.h>
#include <unistd.h>int main(int argc, char *argv[]){int i, n, pid;i = 0;n = *argv[1]-'0';while(i < n){pid = fork();if(!pid){break;}i++;}sleep(i);if(!pid){printf("I'm the %d child process.\n", i+1);}else if(pid > 0){printf("I'm the parent process %d.\n", i);}return 0;
}

注:

  1. 每个子程序都不会执行i++;

运行结果

2020/07/24 13:03
@luxurylu

fork 循环创建多个子进程相关推荐

  1. linux编程两个子进程,Linux中fork同时创建多个子进程的方法

    怎么创建多个进程呢?我说那还不容易,看下边代码: //省略必要头文件 int main() { pid_t pid[2]; int i; printf("This is %d\n" ...

  2. linux 创建子进程,linux中fork同时创建多个子进程的方法(一)

    Fork同时创建多个子进程方法 第一种方法:验证通过 特点:同时创建多个子进程,每个子进程可以执行不同的任务,程序 可读性较好,便于分析,易扩展为多个子进程 int main(void) { prin ...

  3. Linux中fork()系统调用创建两个子进程

    使用系统调用fork()创建两个子进程: #include <stdio.h> #include <unistd.h>int main(){int fpid = fork(); ...

  4. linux创建多个子进程,[Linux进程]使用fork函数创建多个子进程

    #include #include int main (void) { pid_t pid1,pid2;   //进程标识符 pid1 = fork();      //创建一个新的进程 if(pid ...

  5. Linux学习之系统编程篇:循环创建多个子进程练习

    #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() {int num = 5 ...

  6. Linux系统编程:fork函数的使用【循环创建N个子线程】

    fork函数介绍 在linux下面进行系统编程,一定要养成一个好习惯,不懂的函数 直接 找男人,用man 指令进行查看,虽然是全英文 但是要强迫自己 学会看英文文档!下面是介绍,我们看重点. FORK ...

  7. fork()创建多个子进程

    fork()创建多个子进程 在学习linux中,老师布置了一个作业: 编写一段程序,使用系统调用fork)创建两个子进程.当此程序运行时,在系统中有一个父进程和两个子进程活动.让每一个进程在屏幕上显示 ...

  8. fork创建多个子进程

    references: [1] how to create two processes from a single Parent [2] fork() in C [3] linux中fork同时创建多 ...

  9. linux两个子进程通信,Linux c 匿名管道实例—创建两个子进程与父进程进行管道通信...

    综合: 建立两个子进程: 一个负责计算1-50000的素数 另外一个负责计算50001-100000 父进程负责存储 利用fork创建两个子进程的框架: #include #include #incl ...

最新文章

  1. pandas学习之Series结构
  2. window7 64 VS2015下openCV3.4.0安装
  3. Java反射机制大神必学系列之 ,高级与低级的差别在哪里?
  4. python nameerror import_Python-ImportError:无法导入名称X
  5. LeetCode——树:层次遍历、前中后序遍历
  6. 多功能时钟电路的设计框图_一种病理组织漂片多功能一体机的设计
  7. python time模块详解_py 模块之 time模块 讲解②
  8. 快速JQuery——(第一章)第一个JQuery
  9. tomcat使用线程池配置高并发连接
  10. Excel表中的数据导入到数据库中
  11. 想入行SAP咨询,最具性价比的方式
  12. xp计算机管理命令,XP系统运行命令在哪打开
  13. 如何快速找到微信支付的商户号和商户密钥?望相互转告!
  14. 绿盟 java 面试_绿盟科技校园招聘面试经验|面试问题(共52条)- 职业圈
  15. 163vip邮箱登录,163邮箱怎么登陆?如何登录163vip邮箱?
  16. 2018-12-22-jekyll-theme-H2O
  17. 简单电子产品的蓝牙电路设计和PCB设计
  18. “牌面”养成记7:宜家的成功不是靠设计?!
  19. Squirrel中的类与实例
  20. 并注册烧写钩子 获取启动介质类型_一种基于USB烧写的数据传输方法与流程

热门文章

  1. 【XSS技巧拓展】————7、CSP浅析与简单的bypass
  2. Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tool
  3. unity撤销上一步_Unity3D撤回命令开发详解|chu
  4. LintCode 597.具有最大平均数的子树
  5. 多个List 如何取并集、交集
  6. Amihud非流动性指标计算
  7. springboot中使用freemarker根据flt模板导出word、pdf文档
  8. 应届毕业生工作7个月小结
  9. 【秋招面经】金山前端题目总结
  10. LLVM中的String相关