Linux fork()||fork()问题

news2024/11/24 2:30:36

以下代码会输出几个"A"?

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

	printf("A\n");
     
}   

代码分析:

//父进程
	fork() || fork();

	printf("A\n");

这里父进程中的第一个fork先执行,产生一个子进程:

//子进程1
	fork() || fork();

	printf("A\n");

这时有两个进程,且两个进程的第一个fork已经执行完了。

在父进程中fork的返回值是大于0的,子进程1中fork的返回值是等于0的。按照期望,如果父进程中的fork()||fork();是“或”的关系,第一个fork大于0时表达式就已经成立了,那么后边的fork是不执行的,它没有机会执行,所以直接执行printf("A\n");,输出"A"。

这时,对于子进程1来说,第一个fork已经执行完了,它的返回值是等于0的,对于“或”的关系来说,表达式不成立,就要看“||”的另一边,所以执行子进程1中fork()||fork();的第二个fork,这个fork执行,就把子进程1复制了一份又产生了一个子进程2:

//子进程2
	fork() || fork();

	printf("A\n");

这时候,对于子进程1来说fork() || fork();中的第一个fork的返回值等于0,第二个fork的返回值大于0,表达式成立,执行printf("A\n");,输出"A"。这时候其实无论第二各fork是否大于0都会执行printf("A\n");,输出"A"。

在子进程2中,fork() || fork();两个fork都执行过了,直接执行printf("A\n");,输出"A"。

运行结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/877025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Electron-builder打包和自动更新

前言 文本主要讲述如何为 electron 打包出来软件配置安装引导和结合 github 的 release 配置自动更新。 electron-builder 是将 Electron 工程打包成相应平台的软件的工具,我的工程是使用 electron-vite 构建的,其默认集成了 electron-builder &#x…

K8S之存储卷

K8S之存储卷 一、emptyDir emptyDir:可实现Pod中的容器之间共享目录数据,但emptyDir存储卷没有持久化数据的能力,存储卷会随着Pod生命周期结束而一起删除二、hostPath hostPath:将Node节点上的目录/文件挂载到Pod容器的指定目录…

【JavaWeb】实训的长篇笔记(下)

文章目录 八、功能实现1、注册功能2、登录功能3、问题说明4、首页数据显示5、后台管理 八、功能实现 1、注册功能 jsp:能够在页面中把数据动态化,jsp和html在元素标签上是无区别的,区别是html中写上java代码就成了jsp文件。filename.jsp。 需…

Threejs学习01——坐标轴展示立方体并实现来回移动

在三维坐标轴上展示立方体并实现来回移动 这是一个非常简单基础的threejs的学习应用!创建应用先创建一个场景Scene,然后创建爱你一个透视相机PerspectiveCamera,然后创建立方体BoxGeometry,立方体添加一些材质,将立方…

SPSS多元线性回归操作入门实例

做农情反演的时候往往需要用到SPSS多元线性回归,这里提供一个操作案例 (一)SPSS安装 关于SPSS安装,请参考本人博客:保姆级SPSS图文安装教程_追忆苔上雪的博客-CSDN博客 (二)SPSS多元线性回归实例 在文章ArcGIS入门操作手册_追忆苔上雪的博…

Windows下升级jdk1.8小版本

1.首先下载要升级jdk最新版本,下载地址:Java Downloads | Oracle 中国 2.下载完毕之后,直接双击下载完毕后的文件,进行安装。 3.安装完毕后,调整环境变量至新安装的jdk位置 4.此时,idea启动项目有可能会出…

CCF考试:201703-1 分蛋糕(java代码)

1、【问题描述】 小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为a1, a2, …, an。小明想分给每个朋友至少重量为k的蛋糕。小明的朋友们已经排好队准备领蛋糕,对于每个朋友,小明…

2023年新学期12306高铁火车学生票如何在线核验享受优惠?

2023学年优惠资质核验已开始,完成学生优惠资质核验后,您可以在线购买2022年10月1日至2023年9月30日的学生优惠票。(注:非该时间段需要重新核验,可享受学生优惠票); 『扩展阅读』 1、美团外卖红…

日常BUG——SpringBoot关于父子工程依赖问题

😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 在父子工程A和B中。A依赖于B,但是A中却无法引入B中的依赖,具体出现的…

新基建助推数字经济,CosmosAI率先布局AI超算租赁新纪元

伦敦, 8月14日 - 在英国伦敦隆重的Raffles OWO举办的欧盟数字超算新时代战略合作签约仪式,CosmosAI、Infinite Money Fund与Internet Research Lab三方强强联手,达成了历史性的合作协议,共同迈向超算租赁新纪元。 ​ 这次跨界的合作昭示了全球…

Docker入门指南:从零开始轻松掌握容器化技术【超级详细版】

文章目录 什么是Docker?平时应用部署的环境问题Docker解决依赖兼容问题Docker可以解决操作系统环境差异 Docker和虚拟机的区别Docker架构镜像容器仓库Docker的安装 Docker基本操作镜像操作容器操作数据卷(容器数据管理)1. 什么是数据卷2.数据…

C++初阶之一篇文章教会你stack(理解使用和模拟实现)

stack(理解使用和模拟实现) 什么是stackstack的使用1. stack构造函数2.empty()3.size()3.top()4.push5.emplace6.pop()7.swap 模拟实现stack的准备1.什么是容器适配器?2. deque的简单介绍3. deque的缺陷4. 为什么STL中stack和queue默认使用de…

抢红包系统---(java)

需求:直播抽奖活动,分别有【2,588,888,1000,10000】五个奖金,模拟抽奖。打印每个奖项,奖项的出现顺序随机但不重复。package demo;import java.util.Random;/* * 案例;抢红包 * 需求:直播抽奖活动,分别有【…

shell脚本循环语句

shell脚本循环语句 一.echo命令二.查看当前系统的时间--date命令三.循环语句for四.while循环语句结构五.while循环语句结构(迭代)六.continue和break 一.echo命令 echo -n 表示不换行输出 echo -e输出转义符,将转义后的内容输出到屏幕上 常…

抖音小程序排名代发需要提供什么资料

抖音小程序排名代发需要提供什么资料 抖音小程序如何做搜索排名,排名提升方法#小程序搭建#小程序建设#小程序排名# 营业执照,注册抖音的手机号,对公账户,关键词以及对应的图片 提供以上资料就可以 小程序包括两大功能&#xff0…

springboot 数据库版本升级管理常用解决方案

目录 一、前言 1.1 单独执行初始化sql 1.2 程序自动执行 二、数据库版本升级管理问题 三、spring 框架sql自动管理机制 3.1 jdbcTemplate 方式 3.1.1 创建数据库 3.1.2 创建 springboot 工程 3.1.3 初始化sql脚本 3.1.4 核心配置类 3.1.5 执行sql初始化 3.2 配置文…

Spark 学习记录

基础 SparkContext是什么?有什么作用? https://blog.csdn.net/Shockang/article/details/118344357 SparkContext 是什么? SparkContext 是通往 Spark 集群的唯一入口,可以用来在 Spark 集群中创建 RDDs 、累加和广播变量( Br…

股票指数——RSI指数

RSI指数的计算非常简单,就是使用一段时间内的平均上涨除以平均上涨加平均下跌(取正值)。也就意味着RSI指数的取值是[0,100]之间,其中0表示周期内没有上涨的,100表示周期内没有下跌的。RSI的直观意义是它表示了一段周期…

[保研/考研机试] KY43 全排列 北京大学复试上机题 C++实现

题目链接&#xff1a; 全排列https://www.nowcoder.com/share/jump/437195121692001512368 描述 给定一个由不同的小写字母组成的字符串&#xff0c;输出这个字符串的所有全排列。 我们假设对于小写字母有a < b < ... < y < z&#xff0c;而且给定的字符串中的字…

Vulnhub: MoneyBox: 1靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.194 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.194 ftp匿名登录发现trytofind.jpg 目录爆破发现blogs目录 gobuster dir -u http://192.168.111.194 -w /usr/share/word…