终止进程:
- 从main函数return返回
- 调用exit(C库函数)
- 调用_exit(系统调用)
- 调用abort(产生SIGABRT信号,异常终止)
- 由信号终止(如ctrl+c 产生的 SIGINT信号)
需要注意的是main函数返回会调用exit;
exit会调用_exit;
exit会调用fflush,但_exit不会调用fflush。
atexit可以注册终止处理程序,ANSI C规定最多可以注册32个终止处理程序。终止处理程序的调用与注册次序相反
int atexit(void (*function)(void));