如果你从终端杀死程序,打开的ofstream对象会发生什么?

时间:2015-09-11 11:35:52

标签: c++

首先,我使用的是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的析构函数,或者我会有一个损坏的文件或类似的东西?请记住,我将来会再次使用该文件。

1 个答案:

答案 0 :(得分:0)

嗯,你使用中断(Ctrl-C),在一般情况下:

  

...中断是由硬件或软件发出的指示需要立即关注的事件的处理器的信号。中断将处理器警告到需要中断处理器正在执行的当前代码的高优先级条件。处理器通过暂停其当前活动,保存其状态,并执行一个称为中断处理程序(或中断服务程序,ISR)的函数来处理事件...

您的输出流会发生什么情况是系统特定的,这取决于是否正在进行某些缓存。