1、进程正常退出与异常退出的方式
1.1 进程的5种正常退出方式
正常退出方式 | 备注 |
---|---|
Main函数调用return返回 | 属于隐式退出方式,例如return 0; 等价于exit(0); |
进程调用exit或者_exit函数, | 位于标准C库(stdlib.h),exit清洗缓冲,_exit不清洗缓冲 |
进程调用_Exit函数, | 位于unistd.h |
进程的最后一个线程调用pthread_exit | |
进程的最后一个线程返回 |
1.2进程的3种异常退出方式
异常退出方式 |
---|
调用abort |
进程收到某种信号,例如Ctrl+C |
进程的最后一个线程对取消(cancellation)请求做出相应 |
2、进程未正常退出的后果
1)当一个进程未调用exit、_exit()、_Exit()而正常退出时,会对该进程中的数据造成破坏
2)当调用vfork创建子进程后,如果子进程未调用exit或者_exit等正常退出,那么父进程可能不会被执行。