【问题标题】:Is the file loaded in RAM when i open the file in write mode? [closed]当我以写入模式打开文件时,文件是否加载到 RAM 中? [关闭]
【发布时间】:2021-05-05 14:14:46
【问题描述】:

假设我有一个空文件。现在文件已打开(假设我使用的是 c 语言) 那么我的问题是:-

文件是否加载到 RAM 中?

如果我在大于 RAM 大小的文件中写入数据会怎样?数据是否成功写入文件(因为数据的大小大于RAM)?

【问题讨论】:

  • 取决于底层操作系统的工作方式。在您常用的操作系统上,它很可能不会。
  • 这取决于操作系统,但通常不会提前加载文件,尤其是完整地加载到内存中。
  • 如果我没记错的话,在大多数操作系统上,更改会缓冲在 RAM 中,直到您调用 fflush()。 (所以没有整个文件没有加载到 RAM 中,因为那是不必要的)
  • 只是好奇你认为 empty 文件是如何加载到 RAM 中的。这会涉及清空 RAM 吗?
  • 让我们把它从抽象的推测领域转移到更集中的领域。如果您有代码示例和一些特定的操作系统,我们可以更可靠地检查您的场景。

标签: c file file-handling


【解决方案1】:

如果我将数据写入大小大于 RAM 大小的文件会发生什么?

文件的大小不受 C 语言可用 RAM 内存空间的限制。

文件是否加载到 RAM 中?

通常根据需要将一部分加载到 RAM 中,但这是一个实现细节,不应期望限制文件大小。

当我以写入模式打开文件时,文件是否加载到 RAM 中?

通常不会,但这是一个实现细节,不应期望限制文件大小。

数据是否成功写入文件(因为数据的大小大于RAM)?

在写入文件时,RAM 的大小再次不是一个常见的问题。每个 I/O 命令都可能检测到 I/O 错误,例如从 fprintf() 的返回值。在fclose() 上报告了最终将数据写入文件的成功。在此之前,可能会部分写入该数据。研究fflush() 以帮助确保选择部分数据在fclose() 之前写入。

【讨论】:

    猜你喜欢
    • 2018-02-12
    • 2016-09-10
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多