写数据到文件,并同步写到磁盘

fwrite    应用层缓存区--->c库缓存区

fflush    c库缓存区--->内核缓存区

fsync    内核缓存区--->磁盘

fileno  将文件句柄指针转换为文件描述符

用法实例(redis中的文件写入代码片段)

/* Returns 1 or 0 for success/failure. */
static size_t rioFileWrite(rio *r, const void *buf, size_t len) {
    size_t retval;

    retval = fwrite(buf,len,1,r->io.file.fp);
    r->io.file.buffered += len;

    if (r->io.file.autosync &&
        r->io.file.buffered >= r->io.file.autosync)
    {
        fflush(r->io.file.fp);
        aof_fsync(fileno(r->io.file.fp));
        r->io.file.buffered = 0;
    }
    return retval;
}
时间: 2024-08-27 23:58:18

写数据到文件,并同步写到磁盘的相关文章

写数据到文件注意事项write方法

使用FileOutputStream类写数据到文件中,本来是很简单的实现,但就是生成的文件与原文件大小不一样,排查了一整天,才找到问题原因所在, writer = new FileOutputStream(savePath); byte[] buffer = new byte[2048]; while ((len = reader.read(buffer)) > 0){ writer.write(data, 0, size); 注意:1.不要使用write(),而应该使用write(data,

Java 写数据到文件

private boolean writeToFile(BusGpsBean gpsBean) { String dataStr = DateUtil.date2String(new Date(), DateUtil.YMD); String filePath = PathKit.getWebRootPath() + File.separatorChar + "writeFile" + File.separatorChar + dataStr + ".txt"; /

写数据到文件,并同步到磁盘

fwrite    应用层缓冲区--->c库高速缓存 fflush    c库高速缓存--->内核缓冲区 fsync    内核缓冲区--->圆盘 fileno  将文件句柄指针转换为文件描写叙述符 使用方法实例(redis中的文件写入代码片段) /* Returns 1 or 0 for success/failure. */ static size_t rioFileWrite(rio *r, const void *buf, size_t len) { size_t retval;

程序中写数据到文件

#include <iostream>#include <iomanip>#include <fstream> using std::ofstream;ofstream fout3("/home/wang/Desktop/teleop_control.txt"); fout3<<twist.linear.x<<" "<< twist.angular.z<<std::endl;

beanshell 通过java写数据到文件

import java.io.*; String filePath = "/data/account.txt"; String conent = vars.get("account"); BufferedWriter out = null; try { File file = new File(filePath); File fileParent = file.getParentFile(); if (!fileParent.exists()) { filePare

基于Flume做FTP文件实时同步到本地磁盘的windows服务。

需求:做一个windows服务,实现从ftp服务器实时下载或者更新文件到本地磁盘. 功能挺简单的.直接写个ftp工具类用定时器跑就能搞定,那我为什么不用呢? 别问,问就是我无聊啊,然后研究一下Flume打发时间.哈哈~ 一.Flume部分 Source组件和Sink组件用的都是第三方. source组件:https://github.com/keedio/flume-ftp-source Sink组件用的谁的目前已经找不到了,网上搜到了一个升级版的. sink组件:https://github.

android 写行为日志到SD卡 并发处理 异步写入数据到文件不影响界面响应时间

公司在做一个项目 要求记录用户行为,写行为日志文件到SD卡.实现思想 不影响界面用户体验,要时时记录日志 不能漏掉. 1.并发处理日志 写一个类负责管理各个线程传过来的日志数据,日志数据放在队列中等待写线程去处理.这里每次添加一条日志数据都会检查写日志线程是否在工作,同时为了并发处理传过来的数据采用synchronized 同步: ConcurrentLinkedQueue 是基于链接节点的.线程安全的队列.并发访问不需要同步.因为它在队列的尾部添加元素并从头部删除它们,所以只要不需要知道队列的

Hadoop源码分析——数据节点写数据1

即使不考虑数据节点出错后的故障处理,文件写入也是HDFS中最复杂的流程.本章以创建一个新文件并向文件中写入数据,然后关闭文件为例,分析客户端写文件时系统各节点的配合,如下图所示. 客户端调用DistributedFileSystem的create()方法创建文件,上图的步骤1,这时,DistributedFileSystem创建DFSOutputStream,并由远程过程调用,让名字节点执行同名方法,在文件系统的命名空间中创建一个新文件.名字节点创建新文件时,需要执行各种各样的检查,如名字节点处

串行通讯之.NET SerialPort异步写数据

目 录 第1章 说明    2 1 为什么需要异步写数据?    2 2 异步写数据的代码    2 3 源代码    4 第1章 说明 1 为什么需要异步写数据? 如下图所示,以波特率300打开一个串口. 图1 单击"同步发送"按钮,则数据未发送完之前写数据的函数不会返回.波特率300,每秒大概能发送25个字符,发送500个字符就需要20秒.这20秒之内,整个程序将处于假死状态. 单击"异步发送"按钮,就不会出现假死状态. 2 异步写数据的代码 异步写数据的代码如