exit和quick_exit之间的区别

时间:2016-09-16 18:08:11

标签: c c11

c11标准中包含的void quick_exit( int exit_code )和c11标准之前已存在的void exit( int exit_code )函数之间有什么区别?

3 个答案:

答案 0 :(得分:5)

exit可确保刷新,关闭等流缓冲区。标准未指定quick_exit的此类行为。

通过这些,您可以定义两种退出应用程序的方法,一种可以让您通过完全清理(由atexit注册的功能完成)终止,另一种方法可以让应用程序更快地终止,而无需清理太多东西(调用使用at_quick_exit注册的函数。)

答案 1 :(得分:5)

只能通过标头signal.h在信号处理程序中调用函数_Exit,abort,signal和quick_exit

调用exit等任何其他函数将导致未定义的行为。

答案 2 :(得分:4)

quick_exit的Linux手册页总结如下:

  

quick_exit - 快速退出程序,运行最少的清理

     

quick_exit()函数快速退出程序,调用任何清理        用at_quick_exit(3)注册的函数,但没有用atexit(3)注册。

对于exit

  

退出 - 导致正常的流程终止

     

exit()函数导致正常的进程终止以及status&的值。 0377将返回父级(请参阅wait(2))。

所以主要区别在于quick_exit在退出时不会执行尽可能多的清理操作。