CSAPP——linux下的 status 函数及进程退出/进程回收详解

status函数是一个系统调用,用于获取子进程的退出状态。它通常在父进程中使用,以便检查子进程是否正常退出或出现错误。

status函数的原型如下:

int waitpid(pid_t pid, int *status, int options); pid参数指定要等待的子进程的进程ID
status参数是一个指向整数的指针,用于存储子进程的退出状态
options参数指定等待子进程的行为。

status函数的返回值为子进程的进程ID,如果出现错误,则返回-1。

status函数的使用方法如下:

int main() 
{ pid_t pid; int status; pid = fork(); if (pid == 0) { // 子进程 printf("Child process\n"); exit(0); } else if (pid > 0) { // 父进程 waitpid(pid, &status, 0); if (WIFEXITED(status)) { printf("Child process exited with status %d\n", WEXITSTATUS(status)); } else if (WIFSIGNALED(status)) { printf("Child process terminated by signal %d\n", WTERMSIG(status)); } } else { // 出错 perror("fork"); exit(1); } return 0; 
} 首先创建一个子进程,然后在父进程中使用waitpid函数等待子进程的退出状态。
如果子进程正常退出,WIFEXITED(status)将返回true,并使用WEXITSTATUS(status)获取子进程的退出状态。
如果子进程被信号终止,WIFSIGNALED(status)将返回true,并使用WTERMSIG(status)获取终止信号的编号。status函数是Linux中非常重要的一个函数,它可以帮助我们检查子进程的退出状态,从而保证程序的正确性和稳定性。

进程等待所使用的两个函数wait和waitpid,都有一个status参数,该参数是一个输出型参数,由操作系统进行填充。

如果对status参数传入NULL,表示不关心子进程的退出状态信息。否则,操作系统会通过该参数,将子进程的退出信息反馈给父进程。

 仅使用 int 型 status 低16 位数据:

正常退出:获取高 8 位退出码
被信号所杀:获取低 7 位终止信号

使用宏来查看:

WIFEXITED(status):用于查看进程是否是正常退出,本质是检查是否收到信号。WEXITSTATUS(status):用于获取进程的退出码。
exitNormal = WIFEXITED(status);  //是否正常退出
exitCode = WEXITSTATUS(status);  //获取退出码

进程退出码

 int main(){return 0;                                                                                                                  } 

上方代码的0就是进程退出码之一,表示程序正确执行。0表示程序执行完了结果正确,其余数字都表示结果不正确。

string.h库中有一个strerror函数,可以将我们的进程退出码的信息以文字方式表示出来

调用 exit() 函数或 _exit() 函数结束进程

exit("退出码");
_exit("退出码");

_exit是一个系统接口,而exit是stdio.h库提供的一个库函数。
并且exit函数内部调用的_exit函数,且exit函数调用没有_exit函数暴力,它会先将前面执行的代码运行完了才结束进程,而_exit会直接退出进程,不管缓冲区的数据等。

为啥信号又有信号又有退出码?????????????????????????????????????????

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

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

相关文章

网络安全这条路,如何打怪升级干掉大Boss?

企业对网络安全的重视是挂在嘴上还是落实在行动中?网络安全人员岗位设置是否合理而有效?网络安全从业者最需要什么样的技能培训?网络安全从业者的职业发展路径应该如何规划?一份“网络安全从业人员现状调查”报告,解你…

与OA完美契合的开放式低代码平台

随着企业数字化转型的加速,越来越多的企业开始寻求能够快速适应业务需求变化、降低IT成本、提高运营效率的信息系统解决方案。OA作为面向企业日常办公需求的信息系统,在提高企业内部协作效率、优化业务流程、降低运营成本方面具有重要的作用。 它涵盖了…

山西电力市场日前价格预测【2023-12-13】

日前价格预测 预测说明: 如上图所示,预测明日(2023-12-13)山西电力市场全天平均日前电价为331.79元/MWh。其中,最高日前电价为371.77元/MWh,预计出现在11:15。最低日前电价为280.66元/MWh,预计…

OpenHarmony 如何去除系统锁屏应用

前言 OpenHarmony源码版本:4.0release / 3.2 release 开发板:DAYU / rk3568 一、3.2版本去除锁屏应用 在源码根目录下:productdefine/common/inherit/rich.json 中删除screenlock_mgr组件的编译配置,在rich.json文件中搜索th…

Vue中使用echarts@4.x中国地图及AMap相关API的使用

一、此 demo 实现的基本功能 1.中国地图的显示 2.地图点击下钻的功能 3.地图相关组件的使用,例 tooltip… 二、实现思路 初始使用下载本地的中国 geo 格式的 json 数据来绘制地图,点击某一区划(例:山东省)时&#xff0…

【计算机设计大赛】冬残奥会可视化系统_附源码—信息可视化赛道获奖项目深入剖析【可视化项目案例-19】

🎉🎊🎉 你的技术旅程将在这里启航! 记得看本专栏里顶置的可视化宝典导航贴哦! 🚀🚀 本专栏为可视化专栏,包含现有的所有可视化技术。订阅专栏用户在文章底部可下载对应案例完整源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不论你…

linux(6):linux用户和权限

在linux基础命令第五弹中http://t.csdnimg.cn/Fu5cJ我们学到了关于如何查看命令选项的帮助手册,到此,基础命令的学习先告一段落,我们来学习linux有关用户和权限的问题,这是很有必要的,如果任何人都可以修改我们的文件内…

数据结构 | 查漏补缺之顺式存储和链式存储、如何评价哈希函数的好坏、链地址法、树的遍历、关键路径、完全图、连通图、迪杰斯特拉、b树

目录 顺式存储和链式存储 优缺点比较 顺序存储 ​编辑 链式存储 如何评价哈希函数的好坏 简述哈希查找中链地址法解决冲突的方法 树的遍历 关键路径 完全图 连通图 迪杰斯特拉 b树 特点: 插入(索引不能大于:最大为 M-1 个&#…

拼接不同文件夹中同名图片的方法

有时候为了方便对比不同文件夹中同名图片,需要拼接在一起,这里提供一个拼接方法,当然不同命文件也可以实现拼接,稍微改改就能实现 如下图,在文件夹中有五个文件夹中的图片需要拼接,拼接后的图片存放在img_…

Spark RDD的转换

按颜色区分转换: 绿色是单 RDD 窄依赖转换黑色是多 RDD 窄依赖转换紫色是 KV 洗牌型转换黄色是重分区转换蓝色是特例的转换 单 RDD 窄依赖转换 MapPartitionRDD 这个 RDD 在第一次分析中已经分析过。简单复述一下: 依赖列表:一个窄依赖&…

日历管理:应对金融服务行业数据调度的复杂挑战

在当今快速发展的金融服务行业中,数据管理和调度的复杂性日益增加。在金融服务公司面临着多元化的挑战,这些挑战不仅涉及技术层面,还包括安全、运维和业务流程的优化。 日历管理在工作流调度中看似是一个较小的功能,但对于许多企业…

cmake的下载及安装

文章目录 下载安装 下载 cmake官网下载 进入 v3.22版本目录下。或者直接点击https://cmake.org/files/v3.22/进入,省略上面的步骤 浏览器上下载太慢,这里选择在Linux上通过wget方式下,不过下载速度也不是它快。主要是软件所在的服务器在国…

数据质量管理软件行业分析:2023年复合增长率达到31.9%

数据质量管理软件按照一般的功能模块划分可以划分为产品信息管理、存货管理、销售管理、采购管理、生产管理、设备管理、实验室管理、品质管理、售后管理等模块,质量管理绝非仅仅检验,或者常说的批检、巡检、首检、自检等,质量管理是对只要影…

串行计时芯片D1380/D1381,2.0V~5.5V 工作电流: 2V时 与TTL 兼容,采用DIP8、SOP8封装

D1380/D1381是一个带秒、分、时、日、日期、月、年的串行时钟保持芯片,每个月多少天以及闰年能自动调节, D1380/D1381低功耗工作方式, D1380/D1381用若干寄存器存储对应信息,一个32.768kHz 的晶振校准时钟,为了使用最小弓|脚,D1380/D1381使用…

论文润色会被认为是代写吗知乎 神码ai

大家好,今天来聊聊论文润色会被认为是代写吗知乎,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧: 标题:论文润色会被认为是代写吗――探讨论文润色与代写的关系 一、引言 在学术研…

bugku -- 网站被黑--本地管理员

dirsearch 或者御剑扫目录 扫出来有个登录页面 然后bp抓包爆破密码 扫出来密码是heck登录就行了 构造x-forwarded-for:127.0.0.1 本地登录: 爆破账号 密码是text123 下面的base64解码可以知道

java swing 药品销售系统 mysql

数据库 查询药品: 出售药品: 查询客户信息: 查询订单信息:

【算法Hot100系列】两数相加

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

如何用ChatGPT分析恶意软件?

自从我们进入数字化时代以来,恶意软件就一直是计算机应用系统的“心腹大患”。事实上,每一次技术进步都会为恶意行为者提供更多的工具,使得他们的攻击行为更具破坏性。不过,如今生成式人工智能的崛起,似乎让一直以来的…

2023年【G3锅炉水处理】找解析及G3锅炉水处理模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 G3锅炉水处理找解析根据新G3锅炉水处理考试大纲要求,安全生产模拟考试一点通将G3锅炉水处理模拟考试试题进行汇编,组成一套G3锅炉水处理全真模拟考试试题,学员可通过G3锅炉水处理模…