(例题)Linux下fork()创建进程的个数

news/2024/4/19 2:13:15

1、输出多少个“-”

int main(){for (int i = 0; i < 4;i++){fork();cout << "-" << endl;}return 0;
}

        30个

        每fork()一次进程数量翻倍,各自打印一次“-”

        当i=0,fork()后进程总数为2,打印2个“-”

        当i=1,fork()后进程总数为4,打印4个“-”

        当i=2,fork()后进程总数为8,打印8个“-”

        当i=3,fork()后进程总数为16,打印16个“-”

        2+4+8+16=30

2、创建进程的个数(fork()创建进程的次数,且不算main的进程个数)

int main(){fork();fork() && fork() || fork();fork();
}

        19个

       对fork()从1到5进行编号

        第一个fork()后进程总数为2,编号为A,称谓2A,之后每一轮fork()出来的进程编号依次为BCD

        此时遇到 fork() && fork(),2A第二个fork()后进程总数为4,分别是2A+2B

        由于fork()的特性,在父进程中返回子进程的pid,在子进程中返回值为0,所以在2A中返回值大于0,即(1 && ?),会继续找下一个条件进行判断,在2B中返回值小于0,即(0 && ? ==  0)表达式不成立,不需要找下一个条件。即2A会经历第三个fork(),但2B不会。于是2A第三个fork()后进程总数为6,分别是2A+2B+2C

        再接下来遇到 (结果) || fork(),对2B,它的结果为(0 && ?) == 0, 那么(0 || ?)需要判断下一个条件,即会走第四个fork(),生成2个D;对2C,它的结果为(1 && 0) == 0,也是(0 || ?)需要判断下一个条件,也会走第四个fork(),生成2个D;合计生成4个D,此时进程总数为10,分别是2A+2B+2C+4D

       第五个fork()进程数量翻倍,变为20个,除去main剩下19个

        


http://www.ppmy.cn/news/1380412.html

相关文章

2024蓝桥杯每日一题(差分)

一、第一题&#xff1a;空调 解题思路&#xff1a;差分 希望P减掉T后就相当于从0到New_P&#xff0c;想到得到New_P只需要对全0数组进行若干次区间加操作&#xff0c;所以只需要对New_P数组进行差分&#xff0c;累加正数和负数&#xff0c;哪个绝对值大答案就是那个。 …

C++switch语句

1.晶晶赴约会 晶晶的朋友贝贝约晶晶下周一起取看展览,但晶晶每周的一,三,五有课必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出YES,如果不能输入NO 输入 一行,贝贝邀请晶晶去看展览的日期,用数字1~7表示从星期一到星期日 输出 一行,若晶晶可以接受贝贝的邀…

数据库的学习

数据库软件&#xff1a; 关系型数据库&#xff1a;Mysql Oracle SqlServer Sqlite 非关系型数据库&#xff1a;Redis NoSQL 1.数组&#xff0c;链表&#xff0c;文件&#xff0c;数据库 数组&#xff0c;链表&#xff1a;内存存放数据的方式&…

JavaSpringBoot的@Value设置默认值,用冒号:

JavaSpringBoot的Value设置默认值,用冒号: JavaSpringBoot的Value设置默认值,用冒号: 如 Value("${property001:默认值} ABC abc &#x1f446;&#x1f447;&#x1f448;&#x1f449; Hello World 你好世界")private Object property001;public Object getPrope…

【C语言】strcpy函数的超细节详解(什么是strcpy,如何模拟实现strcpy?)

目录 一、观察strcpy()库函数的功能与实现 二、模仿实现strcpy()函数 &#x1f50d;优化代码 &#x1f50d;assert断言拦截 &#x1f50d;const修饰常量指针 &#x1f50d;返回值的加入 三、共勉 一、观察strcpy()库函数的功能与实现 首先我们先来观察一下库函数strcpy去实现…

seq2seq翻译实战-Pytorch复现

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客 &#x1f366; 参考文章&#xff1a;365天深度学习训练营 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制]\n&#x1f680; 文章来源&#xff1a;[K同学的学习圈子](https://www.yuque.com/…

Elastic Stack--08--SpringData框架

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 SpringData[官网&#xff1a; https://spring.io/projects/spring-data](https://spring.io/projects/spring-data) Spring Data Elasticsearch 介绍 1.SpringData-…

CentOS 7 devtoolset编译addressSanitizer版本失败的问题解决

在我的一个Cent OS7开发环境中&#xff0c;按https://yeyongjin.blog.csdn.net/article/details/134178420的方法升级GCC版本到8.3.1。 这两天&#xff0c;要用Google的addressSanitizer检验内存问题&#xff0c;加上编译参数后&#xff0c;却发现编译不通过。configure时直接退…

API接口数据集接口pytorch api接口获取数据

API是应用程序的开发接口&#xff0c;在开发程序的时候&#xff0c;我们有些功能可能不需要从到到位去研发&#xff0c;我们可以拿现有的开发出来的功能模块来使用&#xff0c;而这个功能模块&#xff0c;就叫做库(libary)。比如说&#xff1a;要实现数据传输的安全&#xff0c…

系统及其分类

系统定义 系统&#xff1a;指若干相互关联的事物组合而成的具有特定功能的整体。 系统的基本作用&#xff1a;对输入信号进行加工和处理&#xff0c;将其转换为所需要的输出信号。 系统分类 系统的分类错综复杂&#xff0c;主要考虑其数学模型的差异来划分不同类型。主要分为…

基于redis实现用户登陆

因为session有数据共享问题&#xff0c;不同tomcat服务器中的session不能共享&#xff0c;之后负载均衡就无法实现。所以我们用redis代替session。redis可以被多个tomcat服务器共享&#xff0c;redis基于内存。 之前的session可以看做登陆凭证&#xff0c;本次登陆凭证由sessi…

Codeql复现CVE-2018-11776学习笔记

基本使用 1、首先下载struts2漏洞版本源码&#xff1a; https://codeload.github.com/apache/struts/zip/refs/tags/STRUTS_2_3_20 2、构建codeql数据库&#xff08;构建失败文末有解决办法&#xff09;&#xff1a; codeql database create ~/CodeQL/databases/struts2-2.3.…

如果进程等待一个不可能发生的事就叫死锁,一个或多个进程死锁会造成系统死锁

死锁&#xff1a; 如果进程等待一个不可能发生的事就叫死锁&#xff0c;一个或多个进程死锁会造成系统死锁 四个必要条件&#xff1a; 互斥&#xff1a;资源只能同时被一个进程使用 环路等待&#xff1a;在请求的同时保持自己原有的资源&#xff0c;几个进程形成环路 不剥夺…

oppo前端开发一面

提问&#xff1a; 1. 谈谈你怎么实现响应式布局 2. 谈谈你对weback的了解&#xff0c;vite和webpack的区别&#xff0c;webpack loader 3. 你项目怎么用CI/CD&#xff08;不懂&#xff0c;只知道自动化部署了&#x1f62d;&#xff09; 4. ts中type和interface区别 5. axi…

物联网云原生云边协同

文章目录 一、物联网平台设计1.物联网平台设计2.物联网平台实现 二、部署环境1.节点配置2.版本信息 三、物联网平台部署1.部署 Kubernetes 集群2.部署 KubeEdge3.部署 ThingsBoard 集群4.部署 ThingsBoard Edge4.1.创建 Edge 实例4.2.部署 PostgreSQL4.3.创建数据库4.4.部署 Th…

【字典树】 【哈希表】 【字符串】100251. 数组中的最短非公共子字符串

本文涉及知识点 字典树 哈希表 字符串 LeetCode 100251. 数组中的最短非公共子字符串 给你一个数组 arr &#xff0c;数组中有 n 个 非空 字符串。 请你求出一个长度为 n 的字符串 answer &#xff0c;满足&#xff1a; answer[i] 是 arr[i] 最短 的子字符串&#xff0c;且它…

浏览器缓存 四种缓存分类 两种缓存类型

浏览器缓存 本文主要包含以下内容&#xff1a; 什么是浏览器缓存按照缓存位置分类 Service WorkerMemory CacheDisk CachePush Cache 按照缓存类型分类 强制缓存协商缓存 缓存读取规则浏览器行为 什么是浏览器缓存 在正式开始讲解浏览器缓存之前&#xff0c;我们先来回顾一…

Java的控制流语句详解

Java的控制流语句详解 文章目录 Java的控制流语句详解前言一、顺序结构二、选择结构1. if语句&#xff1a;用于判断一个条件是否为真&#xff0c;如果为真则执行相应的代码块。2. if...else if...else语句&#xff1a;用于在条件为真时执行一段代码&#xff0c;否则执行另一段代…

基于React低代码平台开发:直击最新高效应用构建

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录…

Pytorch学习 day07(神经网络基本骨架的搭建、2D卷积操作、2D卷积层)

神经网络基本骨架的搭建 Module&#xff1a;给所有的神经网络提供一个基本的骨架&#xff0c;所有神经网络都需要继承Module&#xff0c;并定义_ _ init _ _方法、 forward() 方法在_ _ init _ _方法中定义&#xff0c;卷积层的具体变换&#xff0c;在forward() 方法中定义&am…