exit() _exit()区别:
_exit()函数:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;
exit()函 数则在这些基础上作了一些包装,在执行退出之前加了若干道工序。
exit()函数与_exit()函数最大的区别就在于 exit()函数在调用 exit 系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件。
如果程序使用exit()来结束进程,那么在结束前会进行清理I/O缓存的操作,不会立马结束。
程序如果写了处理signal信号的函数,那么可能会引起捕捉信号导致无法结束进程,程序进入一种无法结束状态,一直打印堆栈信息。
如果程序使用_exit()来结束进程,则不会进行I/O缓存清理,会结束进行。解决上述问题。但是_exit()函数直接将进程关闭,缓冲区的数据将会丢失。