进程环境详解---进程终止和 atexit 函数详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程环境详解---进程终止和 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 函数详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux - atexit()(注册终止)函数

Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四)

关于atexit函数

Linux中相关知识(atexit(),fork(),粘滞位)

atexit()函数

UNIX环境高级编程第七章