Linux进程补充

进程

一、进程创建

1.fork

fork()
//Linux创建子进程的系统调用,允许创建多个子进程,使用循环创建多个子进程;
//需要注意的是,创建出来的进程与父进程在调度是由调度器决定的,并没有严格的先后顺序;

二、进程终止

​ 进程终止有三种情况,分别是:1.运行完成结果正确;2.运行完成结果错误;3.出现异常,程序终止;

​ 进程终止之后会先处于僵尸态,等待父进程回收;即父进程可以知道子进程的终止信息;

2.1进程正常终止结果正常

​ 对于程序正常退出时会返回退出码0;

echo $?
#可以查看最近一次进程退出的退出码;退出码可以使用return 数字返回,也可以使用exit(数字)返回;exit(n)是库函数,底层都会去调用系统调用_exit(n);

2.2程序正常终止结果错误

​ c语言根据不同的错误设置了错误码表,根据不同的错误码对比错误表来查找信息;进程的退出码其实指的就是错误码;父进程可以接收子进程终止信息;

2.3程序异常终止

​ 当程序发生重大错误是就会异常终止,本质上就是子进程向父进程发送了信号。

三、进程等待

​ 父进程会对僵尸进程进行等待,获取退出信息后,子进程才能被操作系统释放。

​ 进程等待一方面是为了防止僵尸进程导致的内存泄漏,另一方面提供了一种方式可以直到子进程的运行情况;

wait(int status)
#等待任意子进程,status输出型参数,获取子进程退出状态。status的构成是低16位起作用,低七位标识终止信号,第八位为核心转储,次八位为退出码;查看退出码使用(status>>8)&0xFF,查看异常状态使用status&0x7F获取。也可以使用宏来接收,WIFEXITED表示是否异常,WEXITSTATUS表示退出码。如果不接收时传入空指针;
waitpid(pid_t id, int* status,int options)
#id=-1表示等待任意进程,具体其他id表示接收pid为id的进程,options表示父进程的等待方式,0表示默认阻塞等待,使用WNOHANG表示非阻塞等待;使用非阻塞轮询可以让父进程与子进程并发完成任务;
#对于返回值如果大于0则等待成功,=0,则还未就绪常在非阻塞轮询中使用,<0等待失败,即等待的不是id子进程

在这里插入图片描述

四、程序替换

​ 使用exec*系列函数可以实现进程的程序替换,到注意的是程序替换后就不会执行原本的代码;

4.1程序替换原理

​ 原理就是,哪一个进程执行了该函数就将哪一个进程的代码和数据完全替换,即将内存空间替换,不会创建新的进程,如果与其他进程指向同一个进程地址空间,就进行写时拷贝;

4.2exec*系列函数

​ 一共有7个函数,如下是库函数,execve是系统调用;这些函数起到加载器的作用,将可执行程序载入到内存当中;

在这里插入图片描述

五、脚本语言编写

# #!(shebang)解释器
# 如下是解释器的相关指令,bash命令行解释器就是一个可执行程序,以.sh结尾

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

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

相关文章

组建对等网

一、概念 对等网络&#xff08;Peer-to-Peer, P2P&#xff09;是一种分布式网络架构&#xff0c;其中每个参与节点&#xff08;称为"对等体"或"节点"&#xff09;既可以作为客户端也可以作为服务器&#xff0c;直接与网络中的其他节点分享资源&#xff08…

基于Python django的人脸识别门禁系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、Python技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&…

Chrome的V8引擎 和操作系统交互介绍

Chrome的V8引擎是一个用C编写的开源JavaScript和WebAssembly引擎&#xff0c;它被用于Chrome浏览器中&#xff0c;以解释和执行JavaScript代码。V8引擎将JavaScript代码转换为机器代码&#xff0c;这使得JavaScript能够以接近本地代码的速度运行。 V8引擎与操作系统的交互主要体…

亚马逊国际获得AMAZON商品详情 API 返回值说明

亚马逊国际的商品详情API返回值通常包含了关于商品的详细信息&#xff0c;这些信息对于开发者来说是非常有价值的&#xff0c;因为它们可以用于构建电商应用、展示商品信息、比价购物等场景。 item_get-获得AMAZON商品详情调用链接获取 amazon.item_get 公共参数 下面是一个简…

Adobe PDF背景设置护眼模式,缓解眼部疲劳

一、背景 在用Adobe PDF看论文时&#xff0c;默认的白色背景看久了&#xff0c;眼睛会特别疲劳&#xff0c;下面介绍如何设置背景为护眼模式。 二、设置PDF为护眼模式 使用Adobe Acrobat Pro DC打开任意PDF文件&#xff0c;在上方工具栏选择“编辑”&#xff0c;在下拉菜单栏…

浏览器同源策略及跨域问题

同源策略&#xff1a;同源策略是一个重要的安全策略&#xff0c;它用于限制一个源的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档&#xff0c;减少可能被攻击的媒介。 同源策略的作用&#xff1a;保护浏览器中网站的安全&#xff0c;限制ajax只…

第五节:使用SMB开发WebSocket通信

一、概述 本节主要讲解在SMB中如何进行websocket快速开发&#xff0c;实现客户端连接、关闭、消息通讯等功能。 示例下载&#xff1a;https://download.csdn.net/download/lllllllllluoyi/88949743 二、创建WebSocket服务器 1、在csdnProject工程中新建一个消息流。 添加W…

pytorch升级打怪(三)

数据集合数据加载器 简介加载数据集迭代和可视化数据集为您的文件创建自定义数据集__init____len____getitem__ 准备您的数据以使用DataLoaders进行训练通过DataLoader进行遍载 简介 处理数据样本的代码可能会变得混乱且难以维护&#xff1b;理想情况下&#xff0c;我们希望我…

N7977A 先进电源系统:动态直流电源,160 V,12.5 A,2000 W

N7977A 先进电源系统&#xff1a;动态直流电源 160 V&#xff0c;12.5 A&#xff0c;2000 W Keysight N7977A 专为需要高速动态电源和测量功能的自动化测试设备&#xff08;ATE&#xff09;应用而设计。 简述 支持 BenchVue 软件。 无需编程&#xff0c;即可结合使用您的计…

NCP1271D65R2G中文资料规格书PDF数据手册引脚图参数图片价格功能特性描述

产品描述&#xff1a; NCP1271 是成功的 7 引脚电流模式 NCP12XX 系列的新一代引脚-引脚兼容新产品。该控制器通过使用可调节 Soft Skip 模式和集成的高电压启动 FET&#xff0c;实现了卓越的待机功耗。此专属 Soft Skip 还大大降低了噪音的风险。 因此可以在箝位网络中使用不…

模型蒸馏--一起学习吧之人工智能

一、定义 模型蒸馏&#xff08;Model Distillation&#xff09;是一种模型压缩技术&#xff0c;旨在将一个复杂的大型模型&#xff08;通常称为教师模型&#xff09;的知识转移到另一个更小、更简单的模型&#xff08;通常称为学生模型&#xff09;中。这种技术通过训练学生模…

如何在代理的IP被封后立刻换下一个IP继续任务

目录 前言 1. IP池准备 2. 使用代理IP进行网络请求 3. 处理IP被封的情况 4. 完整代码示例 总结 前言 当进行某些网络操作时&#xff0c;使用代理服务器可以帮助我们隐藏真实IP地址以保护隐私&#xff0c;或者绕过一些限制。然而&#xff0c;经常遇到的问题是代理的IP可能…

BlenderGIS 快捷键E 报错问题 Report: Error

最新版的Blender4.0 对于 BlenderGIS2.28版本的插件不兼容&#xff0c;BlenderGIS2.28兼容Blender3.6.9及之前的版本&#xff0c;应该是BlenderGIS插件很久没更新了导致的。

C#构建类库

类库程序集能将类型组合成易于部署的单元&#xff08;DLL文件&#xff09;&#xff0c;为了使编写的代码能够跨多个项目重用&#xff0c;应该将他们放在类库程序集中。 一、创建类库 在C#中&#xff0c;构建类库是指创建一个包含多个类的项目&#xff0c;这些类可以被其他应用…

热流道融合3D打印技术正在成为模具制造新利器

在模具领域中&#xff0c;3D打印技术与热流道技术联手&#xff0c;能迸发出更耀眼的光芒。两种技术虽然各有特点&#xff0c;但两者结合将形成互补作用&#xff0c;从而实现11&#xff1e;2”的跨越式提升。 将增材制造的灵活思维融入传统模具设计时&#xff0c;不仅能够突破传…

王勇:硬科技的下一站 | 演讲嘉宾公布

一、智能耳机与可穿戴专题论坛 智能耳机与可穿戴专题论坛将于3月27日同期举办&#xff01; 智能耳机、可穿戴设备已经逐渐融入我们的生活&#xff0c;它们不仅带来了便捷与舒适&#xff0c;更在悄然改变着我们的生活方式和工作模式。在这里&#xff0c;我们将分享最新的研究成果…

别再手动拼接 SQL 了,MyBatis 动态 SQL 写法应有尽有,建议收藏!

一、MyBatis动态 sql 是什么 动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中&#xff0c;开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。 例如&#xff0c;拼接时要确保添加了必要的空格&#xff0c;还要注意去掉…

[SaaS] 淘宝设AI

“淘宝设计AI” 让国际大牌造世界双11超级品牌 超级发布https://mp.weixin.qq.com/s/xFVDARQHxlweKAYG91DtYw下面是一个完整的品牌营销海报设计流程&#xff0c;AIGC起到了巨大作用&#xff0c;但是仍然很难去一步解决这个问题&#xff0c;还是逐步修改的一个过程。 Midjouner…

分布式与集群,二者区别是什么?

&#x1f413;分布式 分布式系统是由多个独立的计算机节点组成的系统&#xff0c;这些节点通过网络协作完成任务。每个节点都有自己的独立计算能力和存储能力&#xff0c;可以独立运行。分布式系统的目标是提高系统的可靠性、可扩展性和性能。 分布式服务包含的技术和理论 负…

LabVIEW多表位数字温湿度计图像识别系统

LabVIEW多表位数字温湿度计图像识别系统 解决数字温湿度计校准过程中存在的大量需求和长时间校准问题&#xff0c;通过LabVIEW开发平台设计了一套适用于20多个表位的数字温度计图像识别系统。该系统能够通过图像采集、提取和处理&#xff0c;进行字符训练&#xff0c;从而实现…