ungentle exit() 是处理严重错误的可接受方法吗?

Is ungentle exit() acceptable way to handle critical error?

在多线程 C 程序中,由于严重的程序错误,温和的程序退出真的很难实现,使用 exit_group(); 函数硬退出是否可以接受停止程序执行的方式?

我的意思是真正严重且不可恢复的错误,直到任何进一步的操作都可能损坏文件系统和数据库。我有点担心潜在的资源泄漏。事实上,甚至没有泄漏,而是锁定 - 因此如果不重新启动,该进程将无法重新启动,因为某些资源将保留。

OS 有问题的是现代 Linux(4.x 内核)

exit 运行用 atexitat_quick_exit 注册的清理处理程序,刷新 stdio 流,并执行许多其他清理。对于真正严重的错误(例如可能被利用的内存损坏),_exit 将是一个更安全的选择。在较旧的 glibc 版本中,abort(或 assert(false))也会刷新 stdio 流。另一种选择是执行未定义的指令。