在多线程 C 程序中,由于程序严重错误,温和的程序退出真的很难实现,使用 exit_group();
函数硬退出是否可以接受停止程序执行的方式?
我的意思是非常严重且不可恢复的错误,直到任何进一步的操作都可能损坏文件系统和数据库。我有点担心潜在的资源泄漏。事实上,甚至没有泄漏而是锁定 - 因此该进程无法在不重新启动的情况下重新启动,因为某些资源将保留。
有问题的操作系统是现代 Linux(4.x 内核)
最佳答案
exit
运行使用 atexit
或 at_quick_exit
注册的清理处理程序,刷新 stdio 流,并执行许多其他清理。对于真正的严重错误(例如潜在的可利用内存损坏),_exit
将是一个更安全的选择。在较旧的 glibc 版本中, abort
(或 assert(false)
)也会刷新 stdio 流。另一种选择是执行未定义的指令。
关于c - ungentle exit() 是处理严重错误的可接受方式吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51444631/