如果从终端终止程序,打开的ofstream对象会发生什么

What happens to an opened ofstream object if you kill the program from the terminal?

本文关键字:对象 ofstream 什么 终端 终止程序 如果      更新时间:2023-10-16

首先,我使用的是Shell终端,所以我通过Ctrl-C终止程序。假设我有这样的代码:

#include <iostream>
#include <fstream>
using namespace std;
int main (){
  ofstream ofs("testing.txt");
  for (unsigned int i=0;;i++){
    ofs << i << endl;
  }
}

这个程序将保存每个自然数在一个文件中,直到我杀死它。我的问题是:fstream的析构函数在程序被终止时被调用,否则我将有一个损坏的文件或类似的东西?请记住,我以后会再次使用该文件。

那么,您使用中断(Ctrl-C),在一般情况下:

…中断是由硬件或软件向处理器发出的指示需要立即注意的事件的信号。中断提醒处理器进入高优先级状态,需要中断处理器正在执行的当前代码。处理器的响应方式是挂起当前活动,保存其状态,并执行一个称为中断处理程序(或中断服务例程,ISR)的函数来处理事件…

你的输出流将会发生什么是系统特定的,它取决于是否正在进行一些缓存