一文讲懂fork函数(c语言linux)

article/2025/8/23 19:25:43

c语言的fork函数是拿来创建子进程的,

进程 = pcb(process control block) + 代码和数据

子进程中的代码和数据与父进程的一致(共享父进程的代码和数据),没有自己的代码和数据.

如果父进程或者子进程要修改数据,操作系统就会把要修改的数据拷贝一份新的,让目标进程修改这份拷贝的.

如果父进程在创建子进程之前执行了一些代码,那么子进程不会再执行这些代码.

如果fork创建子进程成功,会有两个返回值,父进程得到子进程的PID的值(大于0),子进程得到等于0的返回值.

如果fork创建子进程失败,返回-1给父进程.

父进程可以有很多个子进程,而子进程只有一个父进程.

父进程获得子进程的PID便于管理,子进程通过getppid()函数就能找到父进程的pid.

那为什么fork会有两个返回值呢?

在fotk函数的内部,

它需要完成的功能有:申请新的pcb→拷贝父进程给子进程→将子进程pcb放进进程的清单,甚至放进调度队列.

在子进程已经被创建甚至调度的情况下,子进程和父进程都会执行fork的return语句.因此有两个返回值.

让我们来看看下面的代码加深理解

  1 #include<stdio.h>2 #include<unistd.h>3 #include<sys/types.h>4 5 6 int val=0;7 8 int main()9 {10   printf("我是父进程,我的pid是: %d\n",getpid());11   pid_t id =fork();12   if(id<0)13   {14     printf("进程创建失败\n");15   }16   else if (id == 0)17   {18     val+=10;19     printf("我是子进程,我的pid是: %d, 我的父进程是: %d,我的va 为%d\n",getpid(),getppid(),val);20   }21   else{22     printf("我是父进程,我的pid是: %d,我的val为%d\n",getpid(),val);                                                                                       23   }24   return 0;25 }

运行结果为


http://www.hkcw.cn/article/kBMZVnwHLN.shtml

相关文章

LVDS系列14:Xilinx Ultrascale系可编程输入延迟(四)

本节讲解Ultrascale IDELAYE3的TIME模式仿真&#xff1b;  TIME模式下参数和时序&#xff1a; 必须例化IDELAYCTRL&#xff0c;IDELAYCTRL时钟频率与REFCLK_FREQUEMCY参数相同&#xff1b; 有温度电压补偿&#xff0c;EN_VTC在修改抽头值时拉低&#xff0c;修改完毕后拉高&a…

RTX腾讯通停服后,有哪些兼容Linux及移动端的升级途径?

一、RTX腾讯通停服后的核心挑战 1.国产系统与移动端适配中断 RTX腾讯通停更后无法适配统信UOS、银河麒麟等国产操作系统&#xff0c;原有Windows版本在Linux内核环境下运行异常&#xff0c;且缺乏Android、iOS移动端支持&#xff0c;阻碍跨平台协作。 2.大规模组织架构同步失…

美团启动618大促,线上消费节被即时零售传导到线下了?

首先&#xff0c;从市场推广与消费者吸引的角度来看&#xff0c;美团通过联合众多品牌开展大规模促销活动&#xff0c;并发放高额优惠券包&#xff0c;旨在吸引更多消费者参与购物。这种策略有助于提高平台的活跃度和交易量&#xff0c;同时也能够增强用户粘性。对于消费者而言…

TDengine 运维——巡检工具(安装前预配置)

背景 TDengine 的安装部署对环境系统有一定的依赖和要求&#xff0c;安装部署前需要进行环境预配置操作&#xff0c;本文档旨在说明安装前预配置工具在安装 TDengine 前对环境的预配置内容和工具的使用方法。 预配置工具使用方法 工具支持通过 help 参数查看支持的语法 Usa…

收集飞花令碎片——C语言(数组+函数)

C语言的函数&#xff08;Function&#xff09;是程序的基本构建块&#xff0c;用于封装一段可重用的代码&#xff0c;完成特定任务。函数可以提高代码的模块化、可读性和复用性。 目录 函数库函数标准库头文件自定义函数&#xff08;1&#xff09;基本语法&#xff08;2&#x…

2013-2021年各省电子商务数据

2013-2021年各省电子商务数据 1、时间&#xff1a;2013-2021年 2、来源&#xff1a;国家统计局、各省年鉴 3、指标&#xff1a;统计年度、地区代码、地区名称、电子商务销售额 4、范围&#xff1a;31省 5、指标说明&#xff1a;电子商务销售额是指通过电子商务平台进行商品…

企业级开发的 “技术主权保卫战”:iVX 源码自主性实践指南

在数字化转型的浪潮中&#xff0c;技术主权已成为企业核心竞争力的关键组成部分。iVX 作为全栈可视化开发平台&#xff0c;通过源码自主性实践&#xff0c;为企业构建了从开发工具到行业落地的全栈解决方案&#xff0c;在安全架构、国产替代、合规优势三大领域实现了技术突破与…

Python-12(函数)

函数的主要功能是可以打包代码&#xff0c;最大程度的实现代码的重用&#xff0c;减少冗余代码&#xff0c;可以将不同功能的代码进行封装&#xff0c;从而降低结构的复杂度&#xff0c;提高代码的可读性。 创建和调用函数 使用def语句来定义函数。 def myFunc():print(&quo…

罗德里格斯公式动图演示

一. 罗德里格斯公式形式: R o t ( ω ^ , θ ) e [ ω ] ^ θ I s i n θ [ ω ^ ] ( 1 − c o s θ ) [ ω ^ ] 2 Rot(\hat{\bold{\omega}}, \theta)e^{\hat{\bold{[\omega]}}_{\times} \theta}\bold{I}sin\theta[\hat{\bold{\omega}}]_{\times}(1-cos\theta)[\hat{\bo…

多家医院回应药企向上百名医生行贿 调查正在进行中

近日,一则关于某药企被举报向四川多家医院上百名医生行贿的消息引发广泛关注。举报材料中提及了四川省内包括成都市、绵阳市、广安市在内的多个城市的37家医疗机构。达州市第一人民医院工作人员表示,举报信中提到的医生并不在院方员工名单中,且该院去年才成立,往年员工名单…

高密爆炸警钟长鸣:AI为化工安全戴上“智能护盾”

一、高密爆炸&#xff1a;一声巨响&#xff0c;撕开化工安全“伤疤” 2025年5月27日&#xff0c;山东高密友道化学有限公司的车间爆炸声&#xff0c;像一把利刃划破了化工行业的平静。剧烈的冲击波将车间夷为平地&#xff0c;黑色蘑菇云腾空而起&#xff0c;刺鼻的化学气味弥漫…

微软 Azure AI Foundry(国际版)十大重要更新

2025 年被广泛视为 “AI 智能体元年”。在过去半年&#xff0c;微软密集发布众多创新技术&#xff0c;构建起从基础设施层、开发工具层到场景应用层的完整技术矩阵&#xff0c;加速推动诸多具备自主决策能力的 “超级助理” 智能体落地&#xff0c;形成完整的 AI 赋能生态&…

撒贝宁在广东水陆两栖过端午,广东过端午到底有多嗨?

撒贝宁在广东水陆两栖过端午。“龙舟漂移”惊险刺激,荔枝让苏轼灵感迸发,还有机器人参与的赛博端午节……广东过端午到底有多嗨?撒贝宁近日现身佛山叠滘,沉浸式体验龙舟季活动。在蜿蜒狭窄的河道上,他勇敢挑战龙舟漂移,完成高难度C弯动作时,自信高呼粤语有各位大哥在这里…

【HarmonyOS 5】鸿蒙中的UIAbility详解(二)

【HarmonyOS 5】鸿蒙中的UIAbility详解&#xff08;二&#xff09; 一、前言 今天我们继续深入讲解UIAbility&#xff0c;根据下图可知&#xff0c;在鸿蒙中UIAbility继承于Ability&#xff0c;开发者无法直接继承Ability。只能使用其两个子类&#xff1a;UIAbility和Extensi…

滚珠导轨:电子制造“纳米级”精度的运动基石

在电子制造与半导体设备追求“微米级工艺、纳米级控制”的赛道上&#xff0c;滚珠导轨凭借高刚性、低摩擦与高洁净特性&#xff0c;成为精密运动系统的核心载体。从芯片封装到晶圆检测&#xff0c;其性能直接定义了设备生产的极限精度与可靠性。滚珠导轨在电子制造与半导体设备…

高端装备制造企业如何选择适配的项目管理系统提升项目执行效率?附选型案例

高端装备制造项目通常涉及多专业协同、长周期交付和高风险管控&#xff0c;因此系统需具备全生命周期管理能力。例如&#xff0c;北京奥博思公司出品的 PowerProject 项目管理系统就是一款非常适合制造企业使用的项目管理软件系统。 国内某大型半导体装备制造企业与奥博思软件达…

MS37549/MS37545三相无感正弦波 BLDC 驱动

产品简述 MS37549 和 MS37545 是无感三相直流电机预驱芯片&#xff0c;采用 正弦波驱动方式&#xff0c;具有低噪声及低震动的特点。 芯片通过一个速度控制脚来控制电机的速度。并且电源电压 可以低到 4V 来适应调整电机的转速。 MS37549 和 MS37545 采用 QFN16 …

TCP协议

有连接&#xff0c;可靠传输&#xff0c;面向字节流 16位源端口号 16位目的端口号 4位首部长度 报头的长度&#xff0c;报头中包含了“选项” optional >可选择的&#xff0c;0 - 15 &#xff0c;4个字节&#xff0c;TCP 报头的最大长度是 60 字节 保留位&#xff08;6位…

国标GB28181设备管理软件EasyGBS视频监控平台:社会治安防控的高效解决方案

一、引言​ 随着城市的快速发展和人口的不断增长&#xff0c;社会治安问题日益受到关注。为了有效提升社会治安防控能力&#xff0c;保障人民群众的生命财产安全&#xff0c;视频实时监控系统成为现代城市治理的重要手段之一。EasyGBS作为一款基于GB28181标准的视频监控平台&a…

Spring AI 之对话记忆(Chat Memory)

大型语言模型&#xff08;LLMs&#xff09;是无状态的&#xff0c;这意味着它们不会保留关于之前交互的信息。当想在多次交互中保持上下文或状态时&#xff0c;这可能会成为一个限制。为了解决这一问题&#xff0c;Spring AI 提供了对话记忆功能&#xff0c;允许你在与大型语言…