进程终止可以分为 进程正常终止 和 进程异常终止 。
- 进程正常终止有以下几种情况:
- 在 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
时间: 2024-11-02 23:21:18