首页 > 代码库 > 进程环境详解(二)---进程终止和 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 函数详解