循环中fork创建进程的个数
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创建进程的个数相关推荐
- Linux创建进程必须fork么,Linux - fork() 创建进程
Linux - fork() 创建进程 Linux - fork() 创建进程 介绍创建进程之前,先简单地介绍一下 Linux 下的进程内存布局. Stack - 所有函数的 local variab ...
- Linux系统编程10:进程入门之系统编程中最重要的概念之进程进程的相关操作使用fork创建进程
文章目录 (1)进程的概念 (2)如何管理进程 A:描述 B:PCB C:task_struct (3)进程相关操作 A:查看进程 B:进程与父进程 (4)创建进程-fork A:fork的作用:演示 ...
- Linux_进程控制(创建进程,等待进程,进程终止)
文章目录 1.创建进程 1.1 fork()函数初识 1.2 fork()创建进程代码示例 2.等待进程 2.1 进程等待概念 2.2进程等待必要性 2.3 进程等待方法 2.3.1 wait 2.3 ...
- 理解进程、通过调用 fork 函数创建进程
文章目录 1.理解进程 1.1 CPU核的个数与进程数 1.2 进程 ID 2.通过调用 fork 函数创建进程 1.理解进程 进程(Process),其定义如下:"占用内存空间的正在运行的 ...
- linux创建进程fork函数和vfork函数
#include <unistd.h>pid_t fork(void);#include <sys/types.h>#include <unistd.h>pid_t ...
- python中fork创建新的进程
为了了解其中工作原理, 在结合linux的查看进程ps命令,对进程做了进一步的理解: 1.在linux下运行.py文件,系统就会创建一个进程 # coding=utf-8 from time impo ...
- linux c之创建进程fork和vfork函数之间的区别
1.函数简介 1).得到当前的进程id pid_t getpid(); 2).fork函数 要创建进程,必须调用fork函数, 系统调用fork用于派生一个进程,函数原型如下 #include< ...
- Linux系统【一】CPU+MMU+fork函数创建进程
切板中的内容输出到文件### 进程相关概念 程序:编译好的二进制文件,在磁盘上,不占用系统资源(不包括磁盘).(剧本) 进程:占用系统资源,是程序的一次运行.(戏剧) 一个程序可以产生多个进程,一个进 ...
- Linux进程全解4——fork创建子进程
以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 1.为什么要创建子进程? (1)每一次程序的运行都需要一个进程: (2)多进程实现宏观上的并行. 2.fork的内 ...
最新文章
- SAP QA32 做使用决策系统报错:分类数据的不一致性=交易终止
- create-react-app留言板
- c++ 使用对象指针
- Python的 is 和 == 弄懂了吗?
- 火狐web开发清楚缓存_如何使用Firefox的Web开发工具
- JSPatch真强大!
- 2020-11-18 Ubuntu 安装 Chrome
- 推荐几款好用的CRM
- 机器学习【系列】之第六章随机森林模型
- 网络/命令行抓包工具tcpdump详解
- Android基础--ListView的刷新
- 亚信安全获得ISO14001和OHSAS18001双认证 提升管理软实力
- 计算机小型机是机箱么,广州励康科技
- 3D摇杆控制器一种简单实现!Cocos Creator 3D!
- 《iOS移动开发从入门到精通》图书连载2:如何成为一名iOS开发者
- 接待员如何向客人upsell_前厅部接待员办理入住操作步骤
- 升级!鹏业云计价i20(西藏)软件V11.0.27版本
- Process用法与进程详解
- 爱奇艺财报解读:连续两个季度盈利 会员同比增收7%
- 河北计算机软件职业技术学院,河北软件职业技术学院2021年排名
热门文章
- 有关于GB2312与Unicode的编码位
- 网站开发常用jQuery插件总结(15)上传插件blueimp
- python自动化脚本实例100条-自动化运维基础实例解析-Python批量登录到服务器执行任务...
- python的jupyter的使用教程-Jupyter notebook快速入门教程
- python的工作方向-python职业发展方向有哪些,各有什么优劣?
- 用python的turtle画炫酷的图-使用Python的turtle画炫酷图形
- python网站开发实例-【9】Python接口开发:flask Demo实例
- python中plot柱状图-Matplotlib中柱状图bar使用
- python 程序流程控制结构-Python基础—程序控制结构
- python操作excel表格-Python学习—对excel表格的操作