立即退出C ++应用程序?

时间:2014-07-18 09:09:19

标签: c++ cross-platform exit

我发现自己处于这样一种情况:我需要立即退出跨平台的C ++应用程序,而不运行析构函数,也不会导致崩溃。我怎么能这样做?

  • exit(0)运行析构函数;
  • quick_exit(0)未在VC ++中实现;
  • abort()导致崩溃;
  • _Exit(0)似乎没有在VC ++中实现(或者至少没有出现在MSDN中);
  • _exit(0)的文档不清楚它是否称为析构函数 - 显然,它在Windows下调用它们。

我相信我可以在非Windows平台下使用quick_exit,但我缺乏VC ++的解决方案。

澄清(因为人们会问我为什么要避免析构函数)这是一个优化方案。我正在处理一个大型应用程序,它操纵数千兆字节的RAM,在复杂的图形中分配,具有多个进程,多个线程,线程安全的引用计数,监视程序等。内存管理/资源释放机制已经过优化,可以保持应用程序的响应速度在运行时使用和/或监视可能的错误(取决于构建标志),但这些机制在关机期间明显过度杀伤,使CPU非常繁忙几秒钟,耗尽电池等等 - 很久以后我们确定所有文件描述符/手柄已经关闭。这使得用户不满意,所以我正在尝试如何改进这一点,最好不必重构所有内容。

调用quick_exit专门针对此类方案而设计,但VC ++不支持。所以我正在为该平台寻找替代方案。

1 个答案:

答案 0 :(得分:0)

使用signal.h中定义的C signals,它应该在大多数平台上得到支持。

你应该使用SIGABRT或kill()来调用raise()。