std::quick_exit() 和 std::abort() exit(), _Exit()的区别

std::quick_exit()

它终止程序,免于在执行实际程序时摆脱死锁的困难部分。 它清除 IO 但不刷新静态析构函数

另一个函数 at_quick_exit()语法如下:

int at_quick_exit( void (*func)(void) );

C++ 将函数作为参数,参数将在调用 quick_exit() 函数时执行。注册到此的函数按其执行的相反顺序调用。

引入 quick_exit() 函数的原因是在清除 IO 的同时结束正在运行的程序,并且仍然获得程序的某些部分,即在 at_quick_exit() 中注册的函数被执行而 std::abort() 函数终止 该程序不执行程序的其他部分并且不清除 IO(这个是对的)

exit() 结束 process 的过程中,除了调用 atexit() 注册的函数,还会 flush 并 close stdio stream。

_Exit(),不调用清理函数,不flush io,不close打开的描述符,直接退出。

std::quick_exit() 和 std::abort() 的区别

深入浅出 C++:与程序终止相关的函数 PART 2 - quick_exit()、_Exit()

 
喜欢 0
分享