问题:
如果我退出程序而不关闭文件会发生什么?
是否发生了一些不好的事情(例如,某些操作系统级别的文件描述符数组未释放..?)
两种情况下的答案相同
代码示例:
对于程序退出,我的意思是这样的:
int main(){
fopen("foo.txt","r");
exit(1);
}
对于意外崩溃,我的意思是这样的:
int main(){
int * ptr=NULL;
fopen("foo.txt","r");
ptr[0]=0; // causes segmentation fault to occur
}
P.S.
如果答案取决于编程语言,那么我想了解 C 和 C++。
如果答案取决于操作系统,那么我对 Linux 和 Windows 行为感兴趣。
这取决于你如何退出。在受控情况下(通过exit() http://pubs.opengroup.org/onlinepubs/9699919799/functions/exit.html或返回main()
),(输出)缓冲区中的数据将被刷新并按顺序关闭文件。该进程拥有的其他资源也将被释放。
如果您的程序失控崩溃,或者它调用了替代方案之一_exit() or _Exit() http://pubs.opengroup.org/onlinepubs/9699919799/functions/_Exit.html函数,那么系统仍然会清理(关闭)打开的文件描述符并释放其他资源,但缓冲区不会被刷新等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)