首页/新闻资讯/正文详情

【进程控制】-1-进程创建

发布时间:2026/9/27 4:06:13 来源:云帆数科 栏目:资讯中心
【进程控制】-1-进程创建
** 博主名称**迷途之人不知返 个人专栏: 《C语言》、《数据结构》、《C》、《Linux》️ Gitee仓库: 《C语言》、《数据结构》、《C》、《Linux》/ 算法专栏: 《算法精选集》进程创建1、概述2、回顾fork创建子进程2、再谈写时拷贝2.1、触发机制2.2、“拷贝”原因3、fork常见用法4、fork调用失败的原因5、一个实际应用场景——fork的妙用1、概述进程的创建本质上是操作系统中多了一个进程。进程包含两大部分内核数据结构侧重管理。如task_struct mm_struct vm_area_struct...代码与数据侧重执行。同时进程具有独立性。意味着进程之间代码数据和内核结构是相互独立的。2、回顾fork创建子进程fork作为系统调用功能是创建子进程。fork之后的代码和数据连同全局变量为父进程与子进程共用。我们回顾fork的三点细节fork给子进程返回0而给父进程返回创建成功的子进程的pid父进程需要得到子进程pid以管理子进程而子进程只需要知道创建成功即可。一个函数返回两次fork父与子共用代码父进程有一个return语句子进程也有一个return语句。(同一个变量)地址相同内容不同写时拷贝。2、再谈写时拷贝这里我们关注写时拷贝的两点写时拷贝触发的机制为什么要“拷贝”。2.1、触发机制我们知道子进程刚创建出来父子进程是共用数据的当子进程需要对数据进行修改那么写时拷贝就会发生。具体是什么样子的呢还记得吗虚拟地址空间里头的页表不仅存有虚拟地址、物理地址还有一项权限位。当只有父进程的时候页表上数据(地址)会标上rw可读写权限而创建子进程后父与子共用数据时父进程和子进程页表上的数据就会标记成r只读权限。当子进程(或者父进程)想要修改数据时由于数据在页表的权限是只读转化失败触发报错操作系统就会检查进而发现原来子(父)进程想要修改数据于是进行写时拷贝然后修改各自页表的权限位。所以进程fork之后通过修改页表权限位的方式来触发报错进而引发操作系统的介入最终完成写时拷贝。2.2、“拷贝”原因对于写时拷贝有人可能还有疑问为什么还要拷贝呢我直接新开辟一个空间不就好了实际上写入的方式除了覆盖写入还有在原来基础上进行修改的写入。为了同时满足这两个条件Linux就实现成拷贝而不是仅仅开辟一个新空间。// 覆盖写入intcount10;count20;// 修改写入intcount10;count;3、fork常见用法fork有两个常见用法父进程希望复制自己使父子进程执行不同的代码段。比如父进程执行等待客户请求的函数子进程执行处理请求的函数。父进程希望创建一个子进程执行一个之前从未出现的程序。这就要用到以后的进程程序替换的知识。4、fork调用失败的原因原因有二内存资源不够进程数量超过限定值。5、一个实际应用场景——fork的妙用我们来实现一个程序父进程修改修改数据子进程备份数据。由于我们还没有学习文件而且向屏幕写入本质也是向一个文件写入所以子进程就把数据打印出来就可以了。#includestdio.h#includestdlib.h#includetime.h#includeunistd.h#includesys/types.h#defineNUM10intarr[NUM];voidChange(){inti0;for(;iNUM;i)arr[i]irand();printf(Origin: \n);for(i0;iNUM;i)printf(%d ,arr[i]);printf(\n);}voidBackup(){pid_tidfork();if(id0){perror(fork failed!\n);exit(2);}elseif(id0){// 子进程printf(backup: \n);inti0;for(;iNUM;i)printf(%d ,arr[i]);printf(\n);sleep(10);// 不要让子进程那么快退出exit(1);}}intmain(){srand((unsignedint)time(NULL));while(1){Change();Backup();sleep(5);}return0;}我们就完成了一边修改数据一边数据备份的工作至此我们就演示了如何利用fork 写时拷贝进行安全备份。这就匹配上了我们将数据保存到磁盘的需求。

相关推荐

TradingAgents-Astock完整指南:7个AI分析师如何联手产出A股投研报告
TradingAgents-Astock完整指南:7个AI分析师如何联手产出A股投研报告

TradingAgents-Astock完整指南:7个AI分析师如何联手产出A股投研报告 【免费下载链接】TradingAgents-astock A股多Agent投研框架 — 适配A股数据源(龙虎榜/游资/解禁等),7位分析师基于A股规则的辩论决策,基于TradingAgents深度改造&#xff0… · 2026/9/27 4:05:49

电流平均值、RMS与AC值的本质区别与工程应用
电流平均值、RMS与AC值的本质区别与工程应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:05:42

CANoe新手入门:从安装配置到报文分析实战全流程
CANoe新手入门:从安装配置到报文分析实战全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:05:36

小红书店群自动化管理系统:彻底解决IP关联与硬件指纹穿帮
小红书店群自动化管理系统:彻底解决IP关联与硬件指纹穿帮

小红书店群自动化管理系统:彻底解决IP关联与硬件指纹穿帮 做店群的老板都知道,小红书的自动回复与客服,是店群运营中最耗人力也最容易出错的环节。 店群客服是纯人力消耗战。一个店日均50条咨询,20个店就是1000条。招人&#xff1… · 2026/9/27 4:44:10

RT-Thread 大疆 STM32F407 RoboMaster C 型开发板 Arduino 生态兼容(RTduino)引脚映射与实战指南
RT-Thread 大疆 STM32F407 RoboMaster C 型开发板 Arduino 生态兼容(RTduino)引脚映射与实战指南

操作系统嵌入式物联网嵌入式OSRTOS 【免费下载链接】rt-thread RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/ 项目地址: https://gitcode.com/gh_mirrors/rt/rt-thread 点击查看 免费下载 RTduino… · 2026/9/27 4:44:04

数字IC后端PR short修复实战:Innovus与ICC2自动化ECO指南
数字IC后端PR short修复实战:Innovus与ICC2自动化ECO指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:43:52

SSS1700C1 USB声卡芯片实战:电路设计与多系统免驱配置指南
SSS1700C1 USB声卡芯片实战:电路设计与多系统免驱配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:43:52

新手入门网站建设规划书主题别乱选 避开3个坑让排名起飞
新手入门网站建设规划书主题别乱选 避开3个坑让排名起飞

新手入门网站建设规划书主题别乱选 避开3个坑让排名起飞 很多新手刚接触建站,第一反应就是找个好看的模板套上去。结果呢?页面虽然花哨,但结构混乱,图片大得加载慢,连最基本的关键词布局都没做对。这种“模板网站太丑不够用”的尴尬,90%的新手都踩… · 2026/9/27 4:43:46

YOLOv5车牌检测数据集:工业级标注规范与训练接入指南
YOLOv5车牌检测数据集:工业级标注规范与训练接入指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:43:46

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码