面试题【2】‘exit()’与‘_exit()’的区别
一、exit()函数的作用最为简单:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构(用户状态结构 user-mode constructs);exit()函数则在这些基础上作了一些包装,在执行退出之前加了若干道工序(调用用户自定义的清除程序),也是因为这个原因,有些人认为exit已经不能算是纯粹的系统调用。
exit()函数与_exit()函数最大的区别就在于exit()函数在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件,即所谓的"清理I/O缓冲"。
二、‘exit()’与‘_exit()’有不少区别在使用‘fork()’,特别是‘vfork()’时变得很 突出。