当前位置: 首页 > news >正文

Linux 进程:父子进程

目录

  • 一、了解子进程
  • 二、创建子进程
    • 1.创建子进程
    • 2.区分父子进程
  • 三、理解子进程
  • 四、创建子进程的意义

  进程就是运行中的应用程序,如果一个程序较为庞大,我们可以给这个程序创建多个进程,每个进程负责一部分代码的运行。

  A进程如果创建了B进程,A进程就是B进程的父进程,B进程就是A进程的子进程。当然,B进程还可以接着创建子进程,创建出的子进程又可以创建子进程…… 但一般我们不会这么做的,因为这样太过复杂,控制起来比较难。

一、了解子进程

  简单来说,子进程就是父进程创造的、来帮父进程干活的进程。比如:领导都不亲自干活,干活都是交给下属去做的。父进程就是领导,子进程就是下属。

  子进程在创建出来以后,从创建子进程的那行开始,子进程和父进程运行的是一模一样的代码。

  如图:有10行代码,父进程运行到第5行的时候创建了一个子进程,子进程创建出来以后,就和父进程运行着相同的代码。

父子进程

二、创建子进程

1.创建子进程

  用专门的函数来创建子进程,常使用 pid_t fork(void) 这个函数来创建一个子进程。但并不是只有这个函数才可以创建子进程,还有其他的函数。

2.区分父子进程

  pid_t fork(void)这个函数最终会有一个返回值,返回一个pid_t类型的数据,在返回这个数据之前,子进程就已经创建好了。

  所以在返回数据的时候,父进程就已经创建出来子进程了。因此父进程和子进程都有一个该函数的返回值,并且父子进程的返回值不同,这个一定要记住。

  对于父进程来说,这个函数的返回值是子进程的pid(pid是大于0的),对于子进程来说,这个函数的返回值是0。如果子进程创建失败,函数的返回值就是小于0的数。

  通过父子进程返回值的不同,我们可以区分父子进程,让父子进程进入不同的代码分支执行程序。

  可以看一下下面这段代码:

#include<stdio.h>              
#include<unistd.h>
#include<stdlib.h>
/*
创建子进程,通过父进程和子进程返回值的不同,使得父进程和子进程执行不同的代码分支
*/int main(){//创建子进程pid_t val=fork();//判断父子进程if(val<0){    //返回值小于0,说明子进程创建失败printf("create error\n");}else if(val==0){          //返回值等于0,说明进入这里的是子进程printf("this is son\n");}else{                    //返回值大于0,说明进入这里的是父进程printf("this is father\n");}                            
}  

三、理解子进程

1.创建子进程的本质是什么?

  创建子进程其实是通过复制父进程来创建子进程。因为进程的信息保存在pcb中,因此创建子进程其实就是复制父进程的pcb中的大部分信息,用这些信息来创建子进程的pcb。这些信息有:内存指针、上下文数据等。

2.复制内存指针的意义是什么?

  内存指针指向程序代码在内存中的位置,复制内存指针意味着子进程和父进程运行的代码是一样的。

3.复制上下文的意义是什么?

 (1)上下文代表了程序的执行状态:上文是程序已经执行过的指令和数据,下文是将要执行的指令和数据。

 (2)子进程复制父进程的上下文数据意味着子进程复制了父进程的运行位置,也就是说,子进程知道父进程创建子进程的时候,父进程运行到哪里了。为了方便,我们把这个位置叫做创建点。

 (3)意味着子进程会从创建点开始运行,在创建子进程后,父子进程都会开始运行相同的代码。这一点可以根据上文的图片来理解。

四、创建子进程的意义

 (1)父子进程运行的功能相同,在大量任务处理中,子进程可以用来分担压力。因为我们可以通过函数返回值的不同区分父子进程,从而使父子进程进入不同的代码分支。

 (2)子进程可以用来做危险的事情,即便崩溃,也不会影响到父进程。因此危险的事情可以让子进程做,父进程负责统筹兼顾。

 (3)子进程的作用主要是用在程序替换中,程序替换就是让子进程去运行另一个程序。

相关文章:

Linux 进程:父子进程

目录一、了解子进程二、创建子进程1.创建子进程2.区分父子进程三、理解子进程四、创建子进程的意义进程就是运行中的应用程序&#xff0c;如果一个程序较为庞大&#xff0c;我们可以给这个程序创建多个进程&#xff0c;每个进程负责一部分代码的运行。 A进程如果创建了B进程&am…...

Unity 之 实现读取代码写进Word文档功能实现 -- 软著脚本生成工具

Unity 之 实现读取代码写进Word文档功能前言一&#xff0c;实现步骤1.1 逻辑梳理1.2 用到工具二&#xff0c;实现读写文件2.1 读取目录相关2.2 读写文件三&#xff0c;编辑器拓展3.1 编辑器拓展介绍3.2 实现界面可视化四&#xff0c;源码分享4.1 工具目录4.2 完整代码前言 之所…...

Typora图床配置:Typora + PicGo + 阿里云OSS

文章目录一、前景提要二、相关链接三、搭建步骤1. 购买阿里云对象存储OSS2. 对象存储OSS&#xff1a;创建Bucket3. 阿里云&#xff1a;添加OSS访问用户及权限4. 安装Typora5. 配置PicGo方法一&#xff1a;使用PicGo-Core (Command line)方法二&#xff1a;使用PicGo(app)6. 最后…...

二进制搭建以太坊2.0节点-2023最新详细版文档

文章目录 一、配置 JWT 认证二、部署执行节点geth2.1 下载geth二进制文件2.2 geth节点启动三、部署共识节点Prysm3.1 下载Prysm脚本3.2 Prysm容器生成四、检查节点是否同步完成4.1 检查geth执行节点4.2 检查prysm共识节点4.3 geth常用命令五、节点同步详细说明5.1 启动时日志5.…...

如何简化跨网络安全域的文件发送流程,大幅降低IT人员工作量?

为什么要做安全域的隔离&#xff1f; 随着企业数字化转型的逐步深入&#xff0c;企业投入了大量资源进行信息系统建设&#xff0c;信息化程度日益提升。在这一过程中&#xff0c;企业也越来越重视核心数据资产的保护&#xff0c;数据资产的安全防护成为企业面临的重大挑战。 …...

带你深入了解c语言指针后续

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:介绍c语言中有关指针更深层的知识. 金句分享: ✨在该…...

借助Intune无感知开启Bitlocker

希望使用 Intune 部署 BitLocker&#xff0c;但不知道从哪里开始&#xff1f;这是人们最开始使用 Intune 时最常见的问题之一。在本博客中&#xff0c;你将了解有关使用 Intune 管理 BitLocker 的所有信息&#xff0c;包括建议的设置、BitLocker CSP 在客户端上的工作方式&…...

零基础该如何转行Python工程师?学习路线是什么?

最近1年的主要学习时间&#xff0c;都投资到了 python 数据分析和数据挖掘上面来了&#xff0c;虽然经验并不是十分丰富&#xff0c;但希望也能把自己的经验分享下&#xff0c;最近也好多朋友给我留言&#xff0c;和我聊天&#xff0c;问我python该如何学习&#xff0c;才能少走…...

Go项目(商品微服务-1)

文章目录简介建表protohandler商品小结简介 商品微服务主要在于表的设计&#xff0c;建哪些表&#xff1f;表之间的关系是怎样的&#xff1f; 主要代码就是 CURD表和字段的设计是一个比较有挑战性的工作&#xff0c;比较难说清楚&#xff0c;也需要经验的积累&#xff0c;这里…...

机器学习——集成学习

引言 集成学习&#xff1a;让机器学习效果更好&#xff0c;单个不行&#xff0c;群殴走起。 分类 1. Bagging:训练多个分类器取平均&#xff08;m代表树的个数&#xff09;。 2.Boosting&#xff08;提升算法&#xff09;:从弱学习器开始加&#xff0c;通过加权来进行训练。…...

VS编译系统 实用调试技巧

目录什么是bug?调试是什么&#xff1f;有多重要&#xff1f;debug和release的介绍windows环境调试介绍、一些调试实例如何写出&#xff08;易于调试&#xff09;的代码编程常见的错误什么是bug?其实bug在英文翻译中有表示臭虫的含义&#xff0c;因为第一次被发现的导致计算机…...

【华为OD机试模拟题】用 C++ 实现 - GPU 调度(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明GPU 调度题目输入输出示例一输入输出说明示例二输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。...

腾讯前端必会react面试题合集

React-Router的路由有几种模式&#xff1f; React-Router 支持使用 hash&#xff08;对应 HashRouter&#xff09;和 browser&#xff08;对应 BrowserRouter&#xff09; 两种路由规则&#xff0c; react-router-dom 提供了 BrowserRouter 和 HashRouter 两个组件来实现应用的…...

Linux搭建SVN服务器,并内网穿透实现公网远程访问

文章目录1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6.2 配置…...

C++STL之list的模拟实现

目录 一.list准备 二. iterator迭代器 1._list_iterator 2.begin()、end() 3.const_begin()、const_end() 4.!&& 5. && -- 6.operator* 7.operator-> 三.Modify(修改) 1.insert() 2.erase() 3.push_back() && push_front() 4.pop_bac…...

为什么硬件性能监控很重要

当今的混合网络环境平衡了分布式网络和现代技术的实施。但它们并不缺少一个核心组件&#xff1a;服务器。保持网络正常运行时间归结为监控和管理导致网络停机的因素。极有可能导致性能异常的此类因素之一是硬件。使用硬件监控器监控网络硬件已成为一项关键需求。 硬件监视器是…...

HTTP缓存

HTTP缓存HTTP缓存引发的一个问题HTTP缓存的作用HTTP缓存的分类强制缓存协商缓存&#xff08;解决强缓存下资源不更新问题&#xff09;缓存策略HTTP缓存引发的一个问题 有一次在开发移动端H5项目&#xff0c;UI提了几个UI问题&#xff0c;经过样式调试&#xff0c;android上没有…...

SPI设备树处理过程

SPI设备树处理过程 文章目录SPI设备树处理过程参考资料&#xff1a;一、 spi_device结构体二、 SPI设备树格式2.1 SPI Master2.2 SPI Device2.3 设备树示例三、设备树实例3.1 使用GPIO模拟的SPI控制器3.2 IMX6ULL SPI控制器四、 设备树处理过程致谢参考资料&#xff1a; 内核头…...

数据有哪些重要的作用?

我们正处在科技高速发展的时代&#xff0c;如今互联网已经与我们的生活息息相关&#xff0c;我们每天在互联网产生大量的数据&#xff0c;这些数据散落在网络中看似没有怎么作用&#xff0c;但是这些数据经过系统的处理整合起来确实非常有价值的。 一、 发展大数据技术可以提高…...

spring面试题总结

1、spring是什么&#xff1f; spring是一个轻量级IOC和AOP容器框架&#xff0c;是为Java应用程序提供基础性服务的一套框架&#xff0c;目的是用于简化企业应用的开发&#xff0c;开发者只需要关注业务需求即可&#xff1a; core container 容器组件 spring context&#xff0c…...

使用MUI与H5+构建移动端app

前言 通过mui构建APP 效果图: <!DOCTYPE html> <html> <head><meta charset...

第17篇:Java变量总结

目录 1.变量的概念 1.1 变量来源 1.2 计算机中的变量 1.3 变量如何在内存中存储 2.Java变量...

使用51单片机的GPIO输出占空比可调节的PWM波

一、前言 在一些单片机或微控制器中&#xff0c;通用GPIO可以被配置为产生PWM信号。PWM即脉冲宽度调制&#xff0c;是一种用于模拟输出的技术。它可以通过改变输出信号的脉冲宽度来控制电路中的电平&#xff0c;从而实现对电路的控制。 二、什么是PWM波&#xff1f; PWM波&a…...

从产品经理的角度如何提升项目的交付质量?

提高交付质量 &#xff0c;对于每个IT公司都是永恒的话题。 交付质量其实包含2重意义&#xff0c; 一是交付的高质量&#xff08;客户角度&#xff09;&#xff0c;即客户的满意度&#xff1b;二是高质量的交付&#xff08;交付团队的角度&#xff09;&#xff0c;这里是指如何…...

JavaScript BOM【快速掌握知识点】

目录 Window对象的常用属性 语法&#xff1a; Window对象的常用方法 语法&#xff1a; open()和close()方法 History对象 常用属性和方法 示例 Location对象 常用属性 常用方法 Document对象的常用方法 定时函数 超时调用&#xff1a;setTimeout() 间歇调用&…...

【算法】哈希表

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法篇 &#x1f43e;或许会很慢&#xff0c;但是不可以停下来&#x1f43e; 文章目录1.定义2.优点3.数字哈希3.1拉链法3.2开放寻址法3.3 例题4.字符串哈希1.定义 哈希表&#xff08;Hash table&#xff09;&#xff0c;是根据键…...

彻底搞懂React-hook链表构建原理

写在前面的小结 每一个 hook 函数都有对应的 hook 对象保存状态信息useContext是唯一一个不需要添加到 hook 链表的 hook 函数只有 useEffect、useLayoutEffect 以及 useImperativeHandle 这三个 hook 具有副作用&#xff0c;在 render 阶段需要给函数组件 fiber 添加对应的副…...

【数据挖掘实战】——应用系统负载分析与容量预测(ARIMA模型)

项目地址&#xff1a;Datamining_project: 数据挖掘实战项目代码 目录 一、背景和挖掘目标 1、问题背景 2、传统方法的不足 2、原始数据 3、挖掘目标 二、分析方法与过程 1、初步分析 2、总体流程 第一步&#xff1a;数据抽取 第二步&#xff1a;探索分析 第三步&a…...

【华为OD机试模拟题】用 C++ 实现 - 九宫格按键输入(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明九宫格按键输入题目输入输出示例一输入输出说明示例二输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高…...

Linux: config: CONFIG_SYN_COOKIES

文章目录 CONFIG_SYN_COOKIESLinux kernel里的超时设置Huawei SBC详细工作机制CONFIG_SYN_COOKIES config SYN_COOKIES,布尔值;是否支持IP:TCP syncookie功能。 详解:一般来说TCP/IP网络不能够阻挡SYN flooding工具。这个工具很容易被利用,而且会导致DOS工具,妨碍其他整…...

幼儿园网站建设费用/百度平台订单查询

描述一个业务问题的现状是什么&#xff0c;是最基础的数据分析需求。常见的问题类型有&#xff1a;产品经理&#xff1a;某个功能的数据表现如何&#xff1f;活动运营&#xff1a;某个活动的数据情况怎么样&#xff1f;渠道运营&#xff1a;新渠道的引流人数是多少。新人数据分…...

杭州网站seo公司/seo排名优化软件价格

一、前述 Storm容错机制相比其他的大数据组件做的非常不错。 二、具体原因 结合Storm集群架构图&#xff1a; 我们的程序提交流程如下&#xff1a; 其中各个组件的作用如下&#xff1a; Nimbus资源调度任务分配接收jar包Supervisor接收nimbus分配的任务启动、停止自己管理的wor…...

广州网站建设制作/长沙网站seo源头厂家

文章目录数字信号模拟信号带宽咋子数字信号中应用得更加广泛数字信号 数字信号系统中&#xff0c;带宽表示通讯线路传送数据的能力即在单位时间内通过网络中某一点的最高数据率&#xff0c;常用的单位为bps&#xff08;又称为比特率—bit per second&#xff09;在生活中常把b…...

金陵热线 网站备案/站长交流平台

使用新浪SAE架构搭建自己的网站。将自己在本地编写的PHP程序上传到SAE上。如果要正常使用需要链接MySQL数据库(如果你的网站使用了MySQL数据库服务)。新浪SAE提供了对PHP访问MySQL的程序支持。所以这个过程要实现起来并不困难。只需要修改用户名和密码。创建完应用后&#xff0…...

自己做网站公司/营销技巧和话术

...

网站流量10g/app开发平台开发

一、拼多多做直播的目的&#xff1f;1、拼多多直播毋庸置疑是为了服务商家&#xff0c;帮助商家快速变现&#xff1b;2、丰富商家的营销玩法&#xff0c;目前5g时代&#xff0c;直播势在必行&#xff1b;3、为了加大促进私域流量的一个转换&#xff1b;4、无论是中小型还是头部…...