在 C++11 或更高版本中,我们可以调用 std::quick_exit
来退出进程而不进行任何展开,也就是说,不会调用析构函数 [after |在] std::quick_exit
.
我有一个项目:
- 它有一个全局对象,并且在全局对象的析构函数中存在 fatal error ;
- 我无权访问全局对象的源;
- 如果我可以在
main
函数的最后一行调用std::quick_exit
,则不会触发错误; - 出于某种原因,该项目必须使用C++98编译器进行编译;也就是说,我不能在 C++98 编译器中调用
std::quick_exit
。
简而言之:
C++98 中的哪个函数等同于 C++11 的 std::quick_exit
?
在 Windows 下,我可以调用 ExitProcess(0)
强制退出进程而不进行任何清理。
Linux下对应的是什么?
最佳答案
您可以使用 abort()
来自 <cstdlib>
.它发送一个 SIGABRT
到一个进程,如果信号没有被捕获,程序将终止而不调用任何销毁例程,如 atexit()
或任何析构函数。
更多信息在这里:link
编辑:std::quick_exit
正常退出,同时调用 abort()
导致异常终止,不知道这是否是一个问题。
关于c++ - 在 C++98 中,如何在不展开的情况下退出进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43062192/