fsync fflush 相关

fsync fflush 相关最近做保存数据到文件操作 有 2 个数据 一个是视频 一个是小数据 一样的操作函数 保存视频没有问题 但保存数据就不行 仔细查看 保存视频数据时 由于视频数据都比较大 我每收到 64kB 保存一次 没有问题 问题就出现在保存信息数据上 这个数据量比较小 一秒 10B 我不可能收到 64KB 再保存 于是我就想着 fsync 同步一下 voidtest file wr FILE g fd constuint8 tdat 10 0 1 2 3 4 5 6 7 8

最近做保存数据到文件操作,有2个数据,一个是视频,一个是小数据,一样的操作函数,保存视频没有问题,但保存数据就不行,仔细查看,

保存视频数据时,由于视频数据都比较大,我每收到64kB保存一次,没有问题,

问题就出现 在保存信息数据上,这个数据量比较小,一秒10B,我不可能收到64KB再保存,于是 我就想着fsync同步一下,

上面的程序,实际是不行的,虽然写数据成功,同步数据也成功,但是数据根本没有保存到磁盘里,

要想真正保存到磁盘里,在加fflush(),就可以了,

我的理解+解释:fflush把内核中的数据 清到stream中, fsync把文件属性更新, 如果stream流中没有数据,则只调用fsync是不起作用的。事实也证明了这一点。

仅仅是把上层缓冲区中的数据刷新到内核缓冲区就返回,因此相对于fsync而言不是很安全,还需要再调用一下fsync来把数据真正写入硬盘。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226661.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午10:25
下一篇 2026年3月16日 下午10:25


相关推荐

  • bp神经网络应用实例(简述bp神经网络)

    原理clear;clc;TestSamNum=20;%学习样本数量ForcastSamNum=2;%预测样本数量HiddenUnitNum=8;%隐含层InDim=3;%输入层OutDim=2;…

    2022年4月15日
    140
  • vscode php snippet,为vscode写snippet插件

    vscode php snippet,为vscode写snippet插件本文为博主原创 转载请注明原作者 xioqua xioqua 本文将教大家怎么为 vscode 里写一个 snippet 插件 我默认大家全无基础 大家跟我一步步做下去 就能得到一个自己的 snippet 插件 以此为蓝本 以后不管想为 vscode 添加什么语言 库或者框架的 snippet 都不在话下 Let sGo 环境配置安装 vscode 为 vscode 写插件 首先得有 vscode 直接去官网选择

    2026年3月18日
    2
  • PHP教程 Array 函数_deft最后一舞

    PHP教程 Array 函数_deft最后一舞…件的属主、属组和权限,防止权限不一致问题。#chowndb2inst1:db2iadm1S0003170.LOG#chowndb2inst1:db2iadm1S0003171.LOG#chowndb2inst1:db2iadm1S0003172.LOG#chowndb2inst1:db2iadm1S0003173.LOG#chowndb2inst1:db2iadm…

    2025年5月27日
    5
  • 翻转ListNode「建议收藏」

    翻转链表复制代码链表定义publicclassListNode{publicvarval:Intpublicvarnext:ListNode?publicinit(_val:Int){self.val=valself.next=nil}}复制代码extension方便测试观察e…

    2022年4月7日
    93
  • django使用celery_Django unchained

    django使用celery_Django unchained前言环境celery==5.0.2在安装完celery后,运行celery会报以下错误ModuleNotFoundError:Nomodulenamed'click._bashc

    2022年8月7日
    7
  • sql触发器

    sql触发器在SQLServer里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。常见的触发器有三种:分别应用于Insert,Update,Delete事件。我为什

    2022年7月3日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号