【问题标题】:What happens to open files which are not properly closed?打开未正确关闭的文件会怎样?
【发布时间】:2018-01-27 11:24:15
【问题描述】:

如果我在写入文件后没有关闭文件会怎样?

假设我们遇到了too many open files 错误,因此程序崩溃了。

操作系统会为我处理这个问题吗?如果这损坏了未关闭的文件,我如何注意到它们已损坏?

【问题讨论】:

  • 文件被锁定,无论如何您都无法编辑或修改它,我认为这意味着您也无法删除它。如果你在运行中创建这些可能会遇到......你猜它堆栈溢出。或者是巨大的内存泄漏并最终导致您的应用、PC 和/或服务器崩溃。
  • 如果你能找到进程并杀死控制它的进程,你的计算机可以处理这个问题。
  • 是的,如果打开(未关闭)文件过多,则有too many open files error。但是文件本身会发生什么?
  • 感谢@TonyTannous 分享这个,我以前看过。但这是特定于 C 的,并假定存在适当的退出。

标签: file operating-system file-handling


【解决方案1】:

来自exit()

_exit() 确实会关闭打开的文件描述符,这可能会导致未知延迟,等待挂起的输出完成。

每个return 隐藏一个退出系统调用,因此任何未关闭的描述符都会被操作系统关闭。

【讨论】:

    【解决方案2】:

    一般来说,如果您写入文件,那么您的应用程序会崩溃,操作系统会将缓冲区刷新到磁盘并为您清理。如果您的程序在没有明确关闭文件的情况下退出,也会发生同样的情况。这不会损坏文件。

    糟糕的情况是当你写一个文件时有人拔掉了电脑上的插头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      相关资源
      最近更新 更多