1.正常退出
(1)从main函数return返回
(2)调用exit函数
(3)调用_exit或者_Exit函数
(4)最后一个线程从其启动例程返回
(5)从最后一个线程调用pthread_exit
2.异常退出
(1)调用abort函数
(2)收到信号
(3)最后一个线程对取消请求做出响应
exit()
exit函数是c库函数,flush缓冲区,执行 atexit 函数注册的函数,然后调用_exit结束进程
_exit()
陷入内核,进入内核态,直接结束进程
abort()
异常退出,输出aborted