【Linux系统编程】进程终止

news2024/11/18 2:39:23

目录

strerror函数

 errno错误码

退出码

正常终止(可以通过 echo $? 查看进程退出码):

1. 从main返回(return)

2. 调用exit

3. _exit(一般尽量不要用)

异常退出:

ctrl + c,信号终止


 进程退出有以下三种场景:

1.进程代码运行完毕,运行结果无错误。

2.进程代码运行完毕,运行结果有某种错误。

3.代码异常终止。

在进程运行结束后系统可能会给我们用户返回某种进程运行错误,通过进程返回的错误信息来使我们审视 为什么会发生异常?发生了什么异常?这两个问题。我们认识一下几个与进程返回错误信息有关的函数:

strerror函数

解释错误码对应的错误信息,头文件:<string.h>

1594e3b124714eb7897ccfd0ab47cfa7.png

 errno错误码

对应程序执行过程中的错误信息,头文件:<errno.h>

65cd2adfe3a8426aae126f3ca1b86e0e.png

退出码

是进程return后的数字,退出码可以得到相应的进程代码执行过程发生的错误信息。

接下来我们来看一下在linux操作系统中,进程执行时发生的错误对应的错误码代表的错误信息有哪些:

b0a13e5959964f4394e98d8c1dbeb49a.png

其实错误码errno一共有133中(不算0),这里只截取了115个。

下面我们来看一下利用返回错误码来获取程序执行时发生的错误信息。

5bd11c514a35407fb6f014d5dfa0e985.png

为了查看程序因在堆上申请内存失败而产生的错误信息,我们故意利用malloc函数申请超额空间。

我们执行可执行程序proc:

cfc2d1d3dba44c9cb189be5e8255b1e0.png?这个问号符存储的是命令行最近执行的进程退出码。$?查看?里的退出码,echo是打印指令,echo $?打印出最近命令行进程的退出码。注意:错误码/退出码是0不表示任何错误信息,0代表的是进程执行无异常。

aff074ed9d844d488abb52b46cd33487.png

 在命令行执行的指令本质上是一个进程,在执行完打印proc进程的退出码的指令后,再执行打印指令:echo $?此时结果是0即进程执行成功,这是因为执行上一次echo指令进程在终端打印了12因此上一次的echo指令进程执行成功,因此命令行最近执行的进程退出码是0。

进程常见的退出方式:

正常终止(可以通过 echo $? 查看进程退出码):

1. 从main返回(return)

2. 调用exit函数

3b155a6548a54e87a780d3d54e149f32.png

3. _exit函数(一般尽量不要用)

 
f2ca6ec1f9ed4bf397a70e947a6a7434.png

下面来了解一下return和调用exit的程序退出方式:

a508419ae0ee4b79bd620dea3b93f350.png

fcaefe450d1d4e5e9bc736f3f9a740c8.png

没有打印hello world是因为进程调用exit函数被终止退出。并且进程的退出码是exit的参数。

认识一下exit和_exit的区别:

77589137f747420195f5986748082aa3.png

482b51219b81409cb3a17e14369d8773.png

注意:在linux操作系统中如果要打印的字符串后没有加\n那么执行到该句代码,该字符串就会被暂时存入缓冲区,不会立刻被打印在终端,只有进程结束时才会将该字符串打印到终端;要打印的字符串后加\n执行到该句代码缓冲区被刷新,会立刻在终端打印该字符串。

55e1f5f281514ffea312ace6b51fdae1.png

82d06125d996456590a89a37fe32c4a6.png

6e022240817c4800a2596776275ef0fe.png

异常退出:

ctrl + c,信号终止

 
这里我们来看一下信号终止进程:
1785d07f58dd43e8abfd75b8e606dc68.png
 
6a4c6738c9c34a96a330f1ba64d03696.png
 
这里故意给进程一个错误信号以终止该进程。
进程出现异常本质是进程收到了对应的信号。
 

 

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

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

相关文章

django 旅游服务系统-计算机毕业设计源码88939

摘 要 旅游服务系统采用采用django框架、python语言、以及Mysql数据库等技术。系统主要分为管理员和用户两部分&#xff0c;管理员管理主要功能包括&#xff1a;首页、轮播图&#xff08;轮播图管理&#xff09;、公告信息管理&#xff08;公告信息&#xff09;、资源管理&…

解析 Spring 框架中的三种 BeanName 生成策略

在 Spring 框架中&#xff0c;定义 Bean 时不一定需要指定名称&#xff0c;Spring 会智能生成默认名称。本文将介绍 Spring 的三种 BeanName 生成器&#xff0c;包括在 XML 配置、Java 注解和组件扫描中使用的情况&#xff0c;并解释它们如何自动创建和管理 Bean 名称。 1. Be…

2024 年 5 月区块链游戏研报:市值增长、玩家参与变迁、迷你游戏兴起

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;GameFi 研究页面 2024 年 5 月&#xff0c;以太坊的表现因 SEC 批准现货以太坊 ETF 的初步申请而得到显著提振。区块链游戏代币的总市值达到 201 亿美元&#xff0c;环比上涨 6.7%。然而&#xff0c;尽管市值有…

年薪80w的AI产品经理技术知识合集

前言 最近&#xff0c;有很多的小伙伴向我咨询&#xff0c;为什么他们学习了大量的产品相关知识&#xff0c;却依然难以转行成为AI产品经理。经过分析&#xff0c;我发现主要原因可以归结为三点&#xff1a;不系统、没产出、不懂技术。那么&#xff0c;如何才能突破这些障碍&a…

ES升级--05--快照生成 和备份

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 备份ES数据1.关闭集群自动均衡2.执行同步刷新3.停止集群节点的Elasticsearch服务4.修改Elasticsearch配置文件&#xff0c;开启快照功能&#xff0c;配置仓库目录为…

金融数据中心布线运维管理解决方案

金融行业的核心业务&#xff0c;如交易、支付、结算等&#xff0c;对网络的依赖程度极高。布线作为网络基础设施的重要组成部分&#xff0c;其稳定性和可靠性直接关系到业务的连续运行。因此&#xff0c;良好的布线管理能够确保网络系统的稳定运行&#xff0c;减少因网络故障导…

EVS9329-ES驱动器EVS9329ES可议价

EVS9329-ES驱动器EVS9329ES可议价 EVS9329-ES驱动器EVS9329ES可议价 EVS9329-ES驱动器EVS9329ES可议价 EVS9329-ES驱动器EVS9329ES可议价 EVS9329-ES驱动器EVS9329ES可议价 EVS9329-ES步进电机按结构分类&#xff1a;步进电动机也叫脉冲电机&#xff0c;包括反应式步进电动…

VBA即用型代码手册:删除空列Delete Empty Columns

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…

Transformer结合U-Net登上Nature子刊!最新成果让精度和效率都很美丽

最近一种基于视觉Transformer改进的U-Net来检测多光谱卫星图像中甲烷排放的深度学习方法登上了Nature子刊。与传统方法相比&#xff0c;该方法可以识别更小的甲烷羽流&#xff0c;显著提高检测能力。 这类Transformer与U-Net结合的策略是一种创新的深度学习方法&#xff0c;它…

账号密码无错误,xshell可以连接,但是WindTerm连接失败

xshell可以连接&#xff0c;但是WindTerm却连接失败 报错提示内容&#xff1a; 连接WindTerm是&#xff0c;账号密码是正确的&#xff0c;但是一输入账号&#xff0c;就报The remote host closed the connection错误&#xff0c;或者是Unknown error错误 解决方法 在新建…

数据可视化如何提升智慧展厅的展示效果

数据可视化是如何在智慧展厅中发挥作用的&#xff1f;随着科技的进步&#xff0c;智慧展厅成为展示信息、互动体验和传递品牌价值的前沿平台。数据可视化作为智慧展厅的重要组成部分&#xff0c;通过将复杂的数据转化为直观的图形、图表和互动界面&#xff0c;极大地提升了展厅…

echarts学习: 将y轴刻度标签放置到轴线内侧

前言 在上一篇文章中&#xff0c;我试图复现下面的这张图表。经过一番努力实现了对6条y轴的布局。 对比上面的两张图就会发现&#xff0c;效果图中所有y轴的刻度标签都在轴线内侧&#xff0c;而我的图表中y轴的刻度标签都在轴线外侧。 实现方法 这个实现起来也很简单&#xf…

解锁ChatGPT:从原理探索到GPT-2的中文实践及性能优化

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…

部署LVS—DR群集

1、LVS-DR工作流向分析 &#xff08;1&#xff09;客户端发送请求到 Director Server&#xff08;负载均衡器&#xff09;&#xff0c;请求的数据报文&#xff08;源 IP 是 CIP,目标 IP 是 VIP&#xff09;到达内核空间。 &#xff08;2&#xff09;Director Server 和 Real Se…

详细教学wps中公式如何居中,公式编号如何右对齐

废话少说&#xff0c;首先打开WPS&#xff0c;新建一个空白文档。 详细步骤如下&#xff1a; &#xff08;1&#xff09;新建一个模板样式&#xff0c;在开始一栏中&#xff0c;点击新建样式具体操作看下图&#xff1a; &#xff08;2&#xff09;设计样式 修改样式名称为公…

JavaScript的数据类型(基础数据类型和数据类型转换)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

华为OD技术面试-统计全1子矩形-2024手撕代码真题

题目描述: 给你一个 m x n 的二进制矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 。 示例 1: 输入:mat = [[1,0,1],[1,1,0],[1,1,0]] 输出:13 解释: 有 6 个 1x1 的矩形。 有 2 个 1x2 的矩形。 有 3 个 2x1 的矩形。 有 1 个 2x2 的矩形。 有 1 个 3x1 的矩形。…

MySQL的发展历程:欧洲诞生,中国兴盛,美国低谷

目录 1 早期历史 2 成长与发展 3 重大变化和收购 4 现代发展 5 结语 一直比较写一些数据库相关的技术和操作、优化等文章。但写数据库在中国一般也逃脱不了MySQL这个数据库。下面简单谈一些个人看法。 MySQL整体上是起于欧洲&#xff1a; 一直有开源社区运营&#xff0c…

掌握Google搜索结果获取

在数据驱动的决策世界中&#xff0c;获取准确而全面的信息至关重要。Google 搜索结果抓取是一种强大的技术&#xff0c;可以让企业、调查人员和研究人员从搜索引擎结果中提取可靠的数据。本综合指南将深入研究 Google 搜索结果的最佳实践、工具和道德考量&#xff0c;以确定能够…

React 懒加载源码实现

懒加载 React 中懒加载是一种按需加载组件的机制&#xff0c;有些组件不需要在页面初始化就进行加载&#xff0c;这些组件可以按需加载&#xff0c;当需要时再进行加载。懒加载是怎么实现的呢&#xff1f;如果要实现一个懒加载功能应该怎么去做呢&#xff1f;可以通过异步动态…