【Linux进程管理】进程退出的几种方法

进程退出

当一个进程退出后,操作系统会释放掉这个进程的资源。包括这个进程分配的内存,打开的文件等等。所以进程退出后,不会出现内存泄漏的情况,进程一旦退出,所占的整个虚拟内存都被销毁,所有内存资源都会被系统回收

函数描述
exit执行完整的C库终止过程,终止进程,并向主机环境提供状态代码
_Exit执行最少的C库终止过程,终止进程,并向主机环境提供状态代码
_exit执行最少的C库终止过程,终止进程,并向主机环境提供状态代码
quick_exit执行快速的C库终止过程,终止进程,并向主机环境提供状态代码
_cexit执行完整的C库终止过程并返回给调用方。不终止进程
abort只终止进程,不释放进程所占用资源,并抛出abort异常log

exit函数

函数原型

#include <stdlib.h>

void exit(int status);

函数作用

在调用后让进程正常退出;并且在进程退出时会刷新缓冲区数据

函数形参

status:进程退出时的状态值,即在使用时给它一个无符号的整数型,该数将作为进程的退出状态,0表示成功,其他值都表示失败;并且要在0-255范围内,否则将自动默认为未定义退出状态值。

linux提供 ? 特殊变量来保存最后一条命令执行结束的退出状态。执行完一条命令后,立即执行 ?特殊变量来保存最后一条命令执行结束的退出状态。执行完一条命令后,立即执行 ?特殊变量来保存最后一条命令执行结束的退出状态。执行完一条命令后,立即执行?来获取最后一条命令的退出状态值

[Ubtuntu ~]$ echo $?
8

_exit()

函数原型

#include <unistd.h>

void _exit(int status);

函数作用

使用此函数将立即终止一个进程,并把它的状态值返回。由于进程是非正常结束;所以当进程死亡时,会通知父进程发出一个信号, SIGCHLD信号将告知系统回收该进程的资源;并且退出时不刷新缓冲区,若有打开的文件也不会进行关闭操作;所以可能会造成数据丢失。

函数形参

status:进程退出时的状态值,即在使用时给它一个无符号的整数型,该数将作为进程的退出状态;并且要在0-255范围内,否则将自动默认为未定义退出状态值。

atexit()

函数原型

#include <stdlib.h>
    
int atexit(void (*function)(void));

函数作用

注册一个进程退出处理函数,在进程正常退出(at normal exit)后再执行一个自己写的程序(与_exit一起使用无效),并且子进程会继承父进程注册的进程退出处理函数

函数形参

void (*function)(void):本质是一个函数指针,用于接受一个函数名,在执行结束后执行该函数的代码

abort()

函数原型

#include <stdlib.h>

void abort(void);

函数作用

立即终止当前进程,产生异常程序终止,系统会在结束进程后报一句Abort的log,但是abort()函数不会去清理进程环境,也就不会清理内存

(后附系统源码解析)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值