c11标准中包含的void quick_exit( int exit_code )
和c11标准之前已存在的void exit( int exit_code )
函数之间有什么区别?
答案 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
在退出时不会执行尽可能多的清理操作。