
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤
📃个人主页 :阿然成长日记 👈点击可跳转
📆 个人专栏: 🔹数据结构与算法🔹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的过程,所以无意义!
1111

被折叠的 条评论
为什么被折叠?



