有8种方式使进程终止,其中5种是正常终止
1)从main函数返回
2)调用exit
3)调用_exit或者_Exit
4)最后一个线程从其启动历程返回
5)最后一个线程调用pthread_exit
异常终止有3中方式
6)调用abort
7)接收到一个信号并终止
8)最后一个线程对取消请求作出回应
exit
有三个函数用于正常终止一个程序:
_exit和_Exit都是直接进入内核,而exit则会在进入内核之前先调用一些清理程序,例如关闭所有的io流等等。
atexit
ISO c规定,一个进程可以注册多大32个函数,这些函数将由exit调用,我们称这些为终止处理程序,并调用atexit来注册。
int atexit(void (*fun)(void));
exit调用这些函数的时候和其注册顺序相反,而且如果同一个函数注册多次的话,也会调用多次。