进程终止
退出的几种场景
- 代码运行结束,结果正确
- 代码运行结束,结果不正确
- 代码异常终止
进程常见的退出方法
正常终止
- 从main返回
- 调用exit
- _exit
异常终止
- Ctrl+c 信号终止
注意exit()和_exit的区别
_exit函数
#include <unistd.h>
void _exit(int status);
//参数:status定义的进程的终止状态,父进程通过wait来获取该值
说明:虽然status是int型,但是仅低8位可以用被父进程所用,所以_exit(-1)时,在终端执行$?时,返回值是255
exit函数
#include <unistd.h>
void exit(int status);
- exit()会比较贴心的为进成退出做好善后的工作,调用exit系统调用之前要调用退出处理函数,还要检查文件的打开情况,把文件缓冲区中的内容写回文件,就是“清理I/O缓冲”。
- _exit则和干脆利落的直接使进程停止运行,销毁其使用的地址空间,删除内核中