exit()函数和_exit()函数看似相同,实际上其中的操作差别还是挺大的
_exit()和exit两个函数最终都会调用系统调用sys_exit
exit()函数定义在stdlib.h中,而_exit()定义在unistd.h中。exit()和_exit()都用于正常终止一个函数。但_exit()直接是一个sys_exit系统调用,而exit()则通常是普通函数库中的一个函数。它会先执行一些清除操作,例如调用执行各终止处理函数、关闭所有标准IO等,然后调用sys_exit。
比如:
int main()
{
printf("this is a exit test ")
exit(0);
}
int main()
{
printf("this is a _exit test ")
_exit(0);
}
这两个函数的输出结果:
exit test:this is a exit test
_exit test:没有输出。
注:如果在printf最后面加上/n这种特殊符号的话 是会flash缓冲区的
exit的作用就是结束,清理,就是说先检查缓冲区,把没有写入的数据写入到文件,而_exit是立刻关闭文件,文件缓冲区的内容也就消失了,这个时候就不可能再输出到显示设备了。
参考博客:https://blog.csdn.net/qq_29350001/article/details/70255915
网友评论