exit和_exit的区别

exit()函数和_exit()函数看似相同,实际上其中的操作差别还是挺大的

_exit()和exit两个函数最终都会调用系统调用sys_exit

exit()函数定义在stdlib.h中,而_exit()定义在unistd.h中。exit()和_exit()都用于正常终止一个函数。但_exit()直接是一个sys_exit系统调用,而exit()则通常是普通函数库中的一个函数。它会先执行一些清除操作,例如调用执行各终止处理函数、关闭所有标准IO等,然后调用sys_exit。


exit和_exit的区别_第1张图片

  比如:

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是立刻关闭文件,文件缓冲区的内容也就消失了,这个时候就不可能再输出到显示设备了。



exit和_exit的区别_第2张图片


参考博客:https://blog.csdn.net/qq_29350001/article/details/70255915

你可能感兴趣的:(exit和_exit的区别)