4.3、Linux进程(2)

 

个人主页:Lei宝啊 

愿所有美好如期而遇


通过系统调用创建进程--fork函数

结果是什么呢?

为什么会出来三个打印呢? 

就是因为父进程调用了fork函数创建出了子进程的task_struct,但是一个进程不止task_struct,还有代码和数据,他们从哪里来,于是,子进程就从fork函数之后共享父进程的代码和数据。

再来看一段代码

感兴趣的话,可以去试试通过fork返回的id值的不同去实现两个循环同时跑,一个父进程的,一个子进程的。

我们有三个问题:

  1. 为什么fork给父进程的id返回子进程的PID,给子进程的id返回0?
  2. fork为什么会返回两个值? 
  3. fork创建了子进程,下面的代码都是共享的,但是怎么一个id会有两个值呢?  

 1:一个父亲可以有多个儿子,但一个儿子是不是只有一个父亲?(只考虑亲生的),也就是说,当你走在外面碰见你父亲的朋友,他就知道你父亲是谁,但是你父亲和别人说我儿子是程序员,有人就会问是哪个儿子?所以给父进程的id返回子进程的PID,要我们知道是创建了哪个子进程,而给子进程返回0,表示创建成功,如果给父进程的id返回小于0的数,那就是创建失败。

2:在fork函数中,我们说父进程会创建子进程的task_struct,此时代码和数据也完成了共享,CPU也就将他们同时跑起来了,那么此时的fork函数的return也是代码吧,是不是也共享,那是不是父进程和子进程各自返回一次?

3:父进程和子进程的代码和数据在子进程创建好后就共享了,但是子进程对数据进行更改,是不是也会影响到父进程呢?

我们平时的经验告诉我们,多个进程同时跑,一个崩了,其他的不会被影响,就像我同时开着浏览器和QQ音乐,其中一个崩了,会不会影响另一个?不会,这是操作系统设计好的,进程之间是独立的,谁也不会影响到谁。

那么子进程对数据修改是不是也不应该影响到父进程啊,所以就有写时拷贝,当父进程或者子进程对数据进行修改时,会开辟一个临时变量拷贝原数据,你对这个临时变量做修改。

那么id值会不会有两个呢?我们想想C语言中,变量名在编译后还存在吗?

不存在了,变量名是给程序员看的,机器不需要,所以编译后变量名就变成了地址,我们的id也是如此,他是虚拟地址映射到物理空间上的,所以编译后,由于父子进程,其实不是一个地址,是两个,也就不存在一个id两个值的问题了。

在Linux中,可以用一个变量名表示不同的地址。

我们试着创建多个进程:

看右边,子进程不断被创建。

而后不断退出,从S+变成Z+,以及<defunct> 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux免密登录——A登录B密钥设置(SSH SCP)

密钥登录 密钥登录比帐号密码方式更安全、更方便&#xff0c;并提供了更多的自动化和批处理选项。 安全性&#xff1a;使用非对称加密算法&#xff0c;公钥存在服务器&#xff0c;私钥存在本地计算机&#xff0c;私钥不在网络传输&#xff0c;降低被黑客截获风险。强密码&#…

3分钟看完NVIDIA GPU架构及演进

近期随着 AI 市场的爆发式增长&#xff0c;作为 AI 背后技术的核心之一 GPU&#xff08;图形处理器&#xff09;的价格也水涨船高。GPU 在人工智能中发挥着巨大的重要&#xff0c;特别是在计算和数据处理方面。目前生产 GPU 主流厂商其实并不多&#xff0c;主要就是 NVIDIA、AM…

MySql 计算同比、环比

一、理论 国家统计局同比、环比计算公式 增长速度是反映经济社会某一领域发展变化情况的重要数据&#xff0c;而同比和环比是反映增长速度最基础、最核心的数据指标&#xff0c;也是国际上通用的指标。在统计中&#xff0c; 同比和环比通常是同比变化率和环比变化率的简称&…

ventoy安装操作系统

下载ventoy https://github.com/ventoy/Ventoy/releases/download/v1.0.96/ventoy-1.0.96-windows.zip 解压后执行 Ventoy2Disk 2、安装后将ISO放入U盘大的分区&#xff0c;通过U盘启动就可以识别到ISO镜像开始装系统

电商数据|淘宝商品数据接口接入|参数|获取商品订单物流|电商数据分析

授权认证 授权不是开放平台对服务商应用的授权 &#xff0c;而是需要开放平台的客户&#xff08;用户&#xff09;对服务商应用的授予&#xff0c;比如ERP应用&#xff0c;也就是淘宝的店铺商家对应用进行授权&#xff0c;使其能够拉取到店铺的订单来完成订单履约。 淘宝授权页…

在Linux服务器中查找mysql的配置文件并修改其内容并保存,清空mysql8.0以上默认开启SSL的配置,防止odbc无法连接的问题

------每个命令输完记得按【enter】回车键------- 1、查找mysql的配置文件命令-mysql的配置文件默认名是my.cnf&#xff1a; find / -name my.cnf 2、查看显示的配置文件内容&#xff1a; cat /etc/my.cnf 3、修改配置文件的内容&#xff1a; 使用vi 或vim 命令 vi /etc…

微创机器人:CRM撬动售后服务数字化升级

一方面&#xff0c;我国医疗器械行业起步较晚&#xff0c;更注重产品的销售和业务的拓展&#xff0c;企业售后服务整体比较滞后。 另一方面&#xff0c;医疗器械售后服务环节数字化程度不足&#xff0c;一些企业仍通过传统的线下手段管理售后服务&#xff0c;进行数字化尝试的…

单例设计模式是什么?什么是 Singleton 单例设计模式?Python 单例(单件)设计模式示例代码

什么是 Singleton 单例设计模式&#xff1f; 单例模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。 主要思想&#xff1a; 单例模式确保某个类只有一个实例&#xff0c;并提供了一个访问该实例的全局访问点。它…

怎么做好品牌营销,小红书爆款笔记怎么做?

只要在小红书平台进行传播&#xff0c;能够尽可能多的创造爆款笔记&#xff0c;就是所有品牌方和达人的目标。今天来马文化传媒为大家分享下怎么做好品牌营销&#xff0c;小红书爆款笔记怎么做&#xff1f; 一、判断爆款笔记的三大指标 判断一篇笔记是否是爆款笔记&#xff0c;…

【攻防世界-misc】simple_transfer

1.下载并打开文件&#xff0c; 2.这个文件是一个pcap文件&#xff0c; 用wireshark打开&#xff0c;并按上图步骤操作&#xff0c; 会自动定位到有flag的这个信息行&#xff0c;这时需要右键追踪该信息的tcp流即可。 向下查找时&#xff0c;可以看到有一个pdf文件在这个里面&…

C++医学影像PACS系统源码,影像归档和通信系统全套源码

C医学影像PACS系统源码 PACS系统&#xff0c;意为影像归档和通信系统。它是应用在医院影像科室的系统&#xff0c;主要的任务就是把日常产生的各种医学影像&#xff08;包括核磁&#xff0c;CT&#xff0c;超声&#xff0c;各种X光机&#xff0c;各种红外仪、显微仪等设备产生的…

许战海战略文库|三步成就技术品牌:奥迪如何打造Quattro技术品牌?

引言&#xff1a;在当前全球化和信息化快速发展的背景下,技术品牌的打造不仅是企业竞争力提升的重要途径,也是企业实现长远发展的基石。技术品牌的建设并非一蹴而就的过程,而是需要企业准确把握市场趋势发掘自身核心竞争力,并通过长期的积累和推广逐渐在市场中树立起良好的技术…

13.真刀实枪做项目---博客系统(页面设计)

文章目录 1.预期效果1.1博客列表页效果1.2博客详情页效果1.3博客登陆页效果1.4博客编辑页效果 2.实现博客列表页2.1实现导航栏2.2实现版心2.3实现个人信息2.4实现博客列表2.5博客列表页完整代码 3.实现博客正文页3.1引入导航栏3.2引入版心3.3引入个人信息3.4实现博客正文3.5博客…

uniapp和vue3+ts创建自定义下拉选择框组件

使用uniapp开发小程序的时候&#xff0c;使用了uview的ui组件&#xff0c;但是里面没有下拉选择组件&#xff0c;只有Picker 选择器&#xff0c;但是我们想要使用下拉选择的组件&#xff0c;所以需要自定义个一个下拉选择的自定义组件&#xff0c;我就只能自己动手创建这个自定…

【C++进阶之路】第四篇:set和map

文章目录 一、关联式容器健值对二、set & multiset三、map & multimap在这里插入图片描述 四、set和map底层原理 一、关联式容器健值对 关联式容器 & 键值对 二、set & multiset set & multiset 三、map & multimap map & multimap 四、set和…

Spring Framework IoC依赖注入-按Bean类型注入

Spring Framework 作为一个领先的企业级开发框架&#xff0c;以其强大的依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;机制而闻名。DI使得开发者可以更加灵活地管理对象之间的关系&#xff0c;而不必过多关注对象的创建和组装。在Spring Framework中&am…

将kali系统放在U盘中插入电脑直接进入kali系统

首先准备一个空白的 U 盘。 Kali Linux | Penetration Testing and Ethical Hacking Linux Distribution 在 Windows 上制作 Kali 可启动 USB 驱动器 Making a Kali Bootable USB Drive on Windows | Kali Linux Documentation 1. 首先下载 .iso 镜像 Index of /kali-images…

单链表OJ题--9.环形链表

9.环形链表 141. 环形链表 - 力扣&#xff08;LeetCode&#xff09; /* 解题思路&#xff1a; 定义快慢指针fast,slow, 如果链表确实有环&#xff0c;fast指针一定会在环内追上slow指针。 */typedef struct ListNode Node; bool hasCycle(struct ListNode *head) {Node* slow …

设计模式—结构型模式之享元模式

设计模式—结构型模式之享元模式 享元模式(Flyweight Pattern)&#xff0c;运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象&#xff0c;而这些对象都很相似&#xff0c;状态变化很小&#xff0c;可以实现对象的多次复用。对象结构型。 在享元模式中可以共…

Arduino库之U8g2lib

某些图片、表格在手机竖屏状态下会显示不全&#xff0c;横屏显示即可。最好是用平板或电脑看。大部分内容摘自官网。 简介 U8g2 U8glib是用于单色显示屏的图形库&#xff0c;它可以用于51、Arduino、ARM控制显示屏&#xff0c;目前作者olikraus已经更新到version2了&#xff0…