在段错误时,std::ofstream是否正确关闭

does std::ofstream close properly upon segfault?

本文关键字:是否 ofstream std 段错误 错误      更新时间:2023-10-16

当我的进程段错误时,std::ofstream是否正确关闭并刷新缓冲区?我怀疑在段错误之前立即丢失的日志消息,并且在没有这些日志消息的情况下调试长时间运行的c++服务器是一种痛苦:(有人知道记录到文件的正确方法是什么吗?

段错误通常是由程序中未定义的行为引起的;在这种情况下,无法保证会发生什么。实际上,如果没有处理函数,段错误通常会导致程序立即停止,因此ofstream没有机会刷新自己。

你可以通过在流中写入std::endl来结束日志代码来解决这个问题。这有刷新流的副作用。