这里写目录标题
当我们需要结束一个进程的时候,我们可以使用exit()函数或_exit()函数来终止该进程。当程序运行到exit()函数或_exit()函数时,进程会无条件停止剩下的所有操作,并进行清理工作,最终将进程停止。
exit()
所需头文件:
#include<stdlib.h>
函数原型:
void exit(int status)
函数参数:
status 表示让进程结束时的状态(会由主进程的wait();负责接收这个返回值,也可以不接收,类似函数的返回值),默认使用0表示正常结束
返回值:无
_exit()
所需头文件:#include<unistd.h>
函数原型:
void _exit(int status)
函数参数:
status 同exit()函数
返回值:无
exit()和_exit()的区别
exit()函数与_exit()函数用法类似,但是这两个函数还是有很大的区别的。
_exit()函数直接使进程停止运行,当调用_exit()函数时,内核会清除该进程的内存空间,并清除其在内核中的各种数据。
exit()函数则在_exit()函数的基础上进行了升级,在退出进程之间增加了若干工序。exit()函数在终止进程之前会检测进程打开了哪些文件,并将缓冲区内容写回文件。
因此,exit()函数与_exit()函数最主要的区别就在于是否会将缓冲区数据保留并写回。_exit()函数不会保留缓冲区数据,直接将缓冲区数据丢弃,直接终止进程运行;而exit()函数会将缓冲区内数据写回,待缓冲区清空后再终止进程运行。