linux下创建进程的系统调用是fork。其定义如下

#include <sys/types.h>
#include <unistd.h>

pid_t fork();

在循环中创建进程时,进程的个数是怎样的?

1、循环中没有任何父子进程的判断

#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>int main()
{pid_t pid;int idx = -1;for (int i = 0; i < 2; i++) {pid = fork();}while (1);    exit(0) ;
}

输出为

可以看出总共有4个进程

其生成过程图如下所示

2、创建指定个数的子进程

在创建子进程后,根据fork的返回值判断是否是子进程,如果是子进程,(1)退出循环,进入子进程的事件处理;(2)不退出循环,直接是子进程的事件处理,其中 事件处理是一个循环,所在循环退出前,子进程是不会执行for语句的,这也是nginx创建工作进程的方式

代码如下

int main()
{pid_t pid;int idx = -1;for (int i = 0; i < 2; i++) {pid = fork();if (pid < 0) {exit(-1);} else if (pid > 0) {continue;} else {idx = i;while (1) {printf("idx=%d\n", idx);}}}while (1);    exit(0) ;
}

输出为

可以看到有3个进程,两个子进程,一个父进程

其生成过程图如下所示

循环中fork创建进程的个数相关推荐

  1. Linux创建进程必须fork么,Linux - fork() 创建进程

    Linux - fork() 创建进程 Linux - fork() 创建进程 介绍创建进程之前,先简单地介绍一下 Linux 下的进程内存布局. Stack - 所有函数的 local variab ...

  2. Linux系统编程10:进程入门之系统编程中最重要的概念之进程进程的相关操作使用fork创建进程

    文章目录 (1)进程的概念 (2)如何管理进程 A:描述 B:PCB C:task_struct (3)进程相关操作 A:查看进程 B:进程与父进程 (4)创建进程-fork A:fork的作用:演示 ...

  3. Linux_进程控制(创建进程,等待进程,进程终止)

    文章目录 1.创建进程 1.1 fork()函数初识 1.2 fork()创建进程代码示例 2.等待进程 2.1 进程等待概念 2.2进程等待必要性 2.3 进程等待方法 2.3.1 wait 2.3 ...

  4. 理解进程、通过调用 fork 函数创建进程

    文章目录 1.理解进程 1.1 CPU核的个数与进程数 1.2 进程 ID 2.通过调用 fork 函数创建进程 1.理解进程 进程(Process),其定义如下:"占用内存空间的正在运行的 ...

  5. linux创建进程fork函数和vfork函数

    #include <unistd.h>pid_t fork(void);#include <sys/types.h>#include <unistd.h>pid_t ...

  6. python中fork创建新的进程

    为了了解其中工作原理, 在结合linux的查看进程ps命令,对进程做了进一步的理解: 1.在linux下运行.py文件,系统就会创建一个进程 # coding=utf-8 from time impo ...

  7. linux c之创建进程fork和vfork函数之间的区别

    1.函数简介 1).得到当前的进程id pid_t getpid(); 2).fork函数 要创建进程,必须调用fork函数, 系统调用fork用于派生一个进程,函数原型如下 #include< ...

  8. Linux系统【一】CPU+MMU+fork函数创建进程

    切板中的内容输出到文件### 进程相关概念 程序:编译好的二进制文件,在磁盘上,不占用系统资源(不包括磁盘).(剧本) 进程:占用系统资源,是程序的一次运行.(戏剧) 一个程序可以产生多个进程,一个进 ...

  9. Linux进程全解4——fork创建子进程

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 1.为什么要创建子进程? (1)每一次程序的运行都需要一个进程: (2)多进程实现宏观上的并行. 2.fork的内 ...

最新文章

  1. SAP QA32 做使用决策系统报错:分类数据的不一致性=交易终止
  2. create-react-app留言板
  3. c++ 使用对象指针
  4. Python的 is 和 == 弄懂了吗?
  5. 火狐web开发清楚缓存_如何使用Firefox的Web开发工具
  6. JSPatch真强大!
  7. 2020-11-18 Ubuntu 安装 Chrome
  8. 推荐几款好用的CRM
  9. 机器学习【系列】之第六章随机森林模型
  10. 网络/命令行抓包工具tcpdump详解
  11. Android基础--ListView的刷新
  12. 亚信安全获得ISO14001和OHSAS18001双认证 提升管理软实力
  13. 计算机小型机是机箱么,广州励康科技
  14. 3D摇杆控制器一种简单实现!Cocos Creator 3D!
  15. 《iOS移动开发从入门到精通》图书连载2:如何成为一名iOS开发者
  16. 接待员如何向客人upsell_前厅部接待员办理入住操作步骤
  17. 升级!鹏业云计价i20(西藏)软件V11.0.27版本
  18. Process用法与进程详解
  19. 爱奇艺财报解读:连续两个季度盈利 会员同比增收7%
  20. 河北计算机软件职业技术学院,河北软件职业技术学院2021年排名

热门文章

  1. 有关于GB2312与Unicode的编码位
  2. 网站开发常用jQuery插件总结(15)上传插件blueimp
  3. python自动化脚本实例100条-自动化运维基础实例解析-Python批量登录到服务器执行任务...
  4. python的jupyter的使用教程-Jupyter notebook快速入门教程
  5. python的工作方向-python职业发展方向有哪些,各有什么优劣?
  6. 用python的turtle画炫酷的图-使用Python的turtle画炫酷图形
  7. python网站开发实例-【9】Python接口开发:flask Demo实例
  8. python中plot柱状图-Matplotlib中柱状图bar使用
  9. python 程序流程控制结构-Python基础—程序控制结构
  10. python操作excel表格-Python学习—对excel表格的操作