首页 > 代码库 > 进程环境详解(二)---进程终止和 atexit 函数详解
进程环境详解(二)---进程终止和 atexit 函数详解
进程终止可以分为 进程正常终止 和 进程异常终止 。
- 进程正常终止有以下几种情况:
- 在 main 函数返回
- 调用 exit 函数
- 调用 _exit 或者 _Exit 函数
- 最后一个线程从启动代码中返回
- 最后一个线程调用 pthread_exit
- 进程异常终止有以下几种情况:
- 调用 abort函数
- 进程收到信号终止
- 最后一个线程对取消请求作出响应
========================================================
exit 函数 和 _exit / _Exit 函数的区别就是:
调用 exit 函数后并不会马上进入内核态,而是会先进行一些终止处理程序(使用atexit函数注册的函数),还会强制刷新所有的用户缓冲区等等。而_exit 和 _Exit 函数则是会立马进入到内核态中去执行内核处理,对用户缓冲区不予处理。在 exit 函数中也是封装了 _exit 或者 _Exit 函数。
在 main 函数中使用 return 关键字和 调用 exit 函数是一模一样的。
========================================================
atexit 函数的作用是用来注册函数,被注册的函数将会在调用 exit 函数或者在 main 函数中使用return关键字的时候会被执行。执行的顺序和调用的顺序是相反的。
函数原型:
函数参数:
- function:函数指针
返回值:
- 调用成功时返回 0
- 调用失败时返回 非 0
进程环境详解(二)---进程终止和 atexit 函数详解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。