如何在C++中优雅终止进程?调用对象析构且不生成核心转储
优雅终止进程的需求与问题
优雅终止定义:终止进程前调用局部/静态对象的析构函数(dtor),且不生成核心转储(coredump)。
我尝试过以下终止方法:
std::exit()(终止时生成核心转储)std::_Exit()std::abort()(终止时生成核心转储)std::raise(SIGKILL)std::terminate()(终止时生成核心转储)
上述方法都会立即终止进程,且不会调用局部/静态对象的析构函数。
当前面临的问题:代码库中出现不可容忍的错误,必须终止进程,但部分全局/局部对象(如日志器)需要在终止前执行析构函数完成收尾。
运行环境
- 编译器:Clang 12
- 操作系统:Linux 5.10.0-1
- 架构:Aarch64
内容的提问来源于stack exchange,提问作者Ghasem Ramezani
相关产品推荐
相关产品推荐

