【Linux】进程终止

在这里插入图片描述

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤
📃个人主页 阿然成长日记 👈点击可跳转
📆 个人专栏: 🔹数据结构与算法🔹C语言进阶🔹C++🔹Liunx
🚩 不能则学,不知则问,耻于问人,决无长进
🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍

一、什么是进程终止

我们前面学过,一个程序运行起来变成一个进程,进程本质就是它的代码和数据 + 内核数据结构。那这些数据是需要占用内存空间的,那肯定要去进行释放

所以,进程终止就是要释放进程申请的内核数据结构和对应的数据和代码。本质是释放系统资源。

二、退出码

回想以前,我们通常喜欢在main函数中的最后写上一个【return 0】,那么你有没有想过为什么是0呢?其实这里的0就是退出码。

1.退出码是什么意思呢?

退出码可以用来标识不同的错误原因.给我们的程序运行结束之后,方便定位错误的原因细节.一般来说【0】就是成功,【非0】就是运行结果不正确

2.使用函数strerror()产看一下退出码有哪

头文件:<string.h>
可以看到非零值,每一个值都对应这错误信息。
在这里插入图片描述
当然,我们可以自己使用这些退出码和含义,但是你如果想自己定义,也可以自己设计出一套退出方案.

使用echo $?指令查看该可执行程序的退出码:查看上一次的最近退出进程退出码

二、 进程终止的方法

1.使用return 【n】

注意:只有main函数内的return语句才是终止进程的.

使用return的方式,有很大的局限性,只有执行到main函数中的return,进程才会终止。如果,想在一些地方直接终止进程,则做不到。

看个例子:
在这里插入图片描述

函数sum中的return并不会中止进程,而是返回函数的结果。

在这里插入图片描述

2.exit和_exit

(1)exit

首先,使用man命令查看一下exit指令

  • 作用是让进程正常终止
  • 函数参数是status,这个就是用来标识退出码的
  • exit函数在任何地方调用,都是直接终止进程

在这里插入图片描述

同样使用上面的代码,稍加修改。

在这里插入图片描述

在这里插入图片描述
可以看到,进程执行到sum函数中时,由于exit(200),导致进程直接终止,并且返回错误码200.

(2)_exit

那么_exit是什么呢,又有什么区别呢?

在这里插入图片描述

区别也就是在,exit在程序结束时会刷新缓冲区的内容到屏幕上,而_exit是直接结束,而不会刷新缓冲区的内容.

三、函数的退出如何查看错误码

学习了进程的退出,那我们如何知道函数的执行情况呢?

答:函数的返回值。但是这个返回值只能说明函数执行成功或者失败。不能返回失败原因。
使用errno变量,在C语言中,当你调用库函数时,失败的话就可以告诉你函数失败的原因

四、进程退出的三种场景

1.进程成功运行,所得结果也正确,退出码为0

2.进程成功运行,所得结果不正确,退出码为!0

3.进程运行过程中出现异常,结果无意义,退出码也无意义。

其中,如果3发生了即程序运行出现异常,则不再走1,2的过程,所以无意义!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿然成长日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值