1:进程结束方式
在Unix 环境中,有 8 中方式可以结束一个进程,通常用的是以下五种方式:
1:从 main 函数返回
2:调用 exit 函数
3:调用 _exit 函数或者是 _Exit 函数
4:从最后一个线程中返回
5:从最后一个线程中调用 pthread_exit
还有三种非正常的结束方式:
6:调用 abort
7:接收到信号
8:应答最后一个线程的取消请求
后三种结束方式和线程有关,以后再讨论。
2:进程退出函数
ISO C标准规定一个进程可以注册 32 个退出函数,当结束时有 exit 函数自动的调用。退出函数有 atexit 函数来注册。
函数的头文件即原型、返回值如下:
#include <stdlib.h>
int atexit(void (*func)(void));
Returns: 0 if OK, nonzero on error
其中头文件声明包含的意思如下:
1: atexit 函数只是把退出函数的地址传递过去。 2 :退出函数没有返回值。 3 :退出函数不能有参数
退出函数调用的顺序为注册的顺序,一个函数注册多少次就调用多少次。
以下为一个例子:
输出结果:
Calling my_exit_fun1
Calling my_exit_fun2
Calling my_exit_fun2