如果我退出程序而不关闭文件会发生什么?
是否有一些不好的事情发生(例如某些操作系统级文件描述符数组没有被释放..?)
在两种情况下答案都是一样的
程序退出我的意思是这样的:
int main(){
fopen("foo.txt","r");
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
意外崩溃我的意思是这样的:
int main(){
int * ptr=NULL;
fopen("foo.txt","r");
ptr[0]=0; // causes segmentation fault to occur
}
Run Code Online (Sandbox Code Playgroud)
如果答案是编程语言依赖,那么我想知道C和C++.
如果答案取决于操作系统,那么我对Linux和Windows行为感兴趣.
这取决于你如何退出.在受控情况下(通过exit()或从中返回main()),将刷新(输出)缓冲区中的数据并以有序的方式关闭文件.该进程的其他资源也将被释放.
如果您的程序崩溃失控,或者它调用了其中一个替代_exit()或_Exit()函数,那么系统仍将清理(关闭)打开的文件描述符并释放其他资源,但缓冲区将不会被刷新等.