当前位置: 首页 > 面试题库 >

Linux是否保证在close()之后将文件内容刷新到磁盘上?

鄢英哲
2023-03-14
问题内容

使用close()fclose()(例如)关闭文件时,Linux是否保证将文件写回到(持久)光盘上?

我的意思是,如果close()返回0,然后立即断电,是否可以保证先前写入的数据持久存在,即持久性?

fsync()系统调用确实提供了这种保证。关闭文件是否也足够?

我目前找不到任何能以某种方式要求任何权利的东西。

问题2:

如果close()隐式地做了一个fsync(),是否有办法告诉它不这样做?


问题答案:

来自“ man 2 close”:

成功关闭并不能保证数据已成功保存到磁盘,因为内核延迟写入操作。

手册页指出,如果要确保数据位于磁盘上,则必须自己使用fsync()。



 类似资料:
  • 下面的代码在内存中创建了一个文件。 我想把那个pdf文件保存在磁盘上以便查看。我将如何在python中实现它?

  • 问题内容: 我有一个小的PyGI项目,它使用开罗图像表面,然后使用表面图案缩放并在Gtk.DrawingArea上进行渲染。 我想将 缩放后的 版本写入PNG文件。我尝试使用Surface.write_to_png()从原始表面进行写操作,但是它仅以原始(即非缩放)大小进行写操作,因此我被困在那里。 然后我想我也许可以从Gtk.DrawingArea中获取渲染的图像并将其写入磁盘,但是我还没有找到

  • 如EhCache留档所述: 实际上,这意味着持久性内存中缓存将启动,其所有元素都将在磁盘上。[...]因此,Ehcache设计不会在启动时将它们全部加载到内存中,而是根据需要懒惰地加载它们。 我希望内存缓存启动时将所有元素都存储在内存中,我该如何实现? 这是因为我们的网站对缓存执行了大量的访问,所以我们第一次访问网站时,它的响应时间非常长。

  • 我正在Windows服务器上使用C#处理存储在IIS服务器上的web应用程序。 null

  • 问题内容: 我是一名中级新手,擅长于AJAX。在阅读JavaScript时,我感到奇怪的是,我一直在借鉴的大多数示例都使用PHP进行了这种操作。我知道你们中许多人可能会争辩说“我做错了”或“ JavaScript是一种客户端语言”等问题,但问题仍然存在。。。您可以仅使用JavaScript编写文件吗? 问题答案: 您可以使用 Google Gears之 类的东西来生成JS应用程序,这些应用程序可以

  • 问题内容: 我有敏感文件要下载给用户,每个用户只能 下载 给定文件一次。如果下载失败,我希望允许重新下载,但不允许其他方式。 仅仅依靠在服务器上记录/处理文件下载 请求 是不够的-我需要确定性地知道文件何时完成以及在客户端是否就位,因为我的许多用户都在频繁掉线的环境中工作。 最有效的方法是,浏览器从“另存为…”对话框中暴露出一个“文件已保存”事件,该事件可能会链接到下载页面上的JavaScript