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

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-08 22:07:33

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

写数据到文件注意事项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; retva

程序中写数据到文件

#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

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

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

内存空间切换:在内核写数据到用户空间的方法

改变内存空间的方法,主要就是set_fs(),get_ds()这两个函数来完成内存空间切换.一般定义的宏如下: #define BEGIN_KMEM {mm_segment_t old = get_fs();set_fs(get_ds())} #define END_KMEM {set_fs(old);}前面一个宏主要是先记录下内存空间的首地址,再设置内存空间的首地址为用户空间首地址,进行内存空间切换.后一个宏主要是将内存空间切换回去. 举例如下: struct file *filep = NU

java实现服务端守护进程来监听客户端通过上传json文件写数据到hbase中

1.项目介绍: 由于大数据部门涉及到其他部门将数据传到数据中心,大部分公司采用的方式是用json文件的方式传输,因此就需要编写服务端和客户端的小程序了.而我主要实现服务端的代码,也有相应的客户端的测试代码.这里须有一个需要提到的是,我在实现接收json文件的同时,而且还需将数据写到hbase中.写入到hbase当中采用的是批量插入的方式,即一次插入多条记录. 好了,有了前面的说明,下面来简单的说一下我实现的服务端的小程序把. 2.为了实现服务端能够监听客户端的行为,因此我在服务端采用多线程的技术

问题:C#打开一个文本文档往里面写数据,没有就新建文档 ;结果:c#FileStream文件读写(转)

FileStream对象表示在磁盘或网络路径上指向文件的流.这个类提供了在文件中读写字节的方法,但经常使用StreamReader或 StreamWriter执行这些功能.这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据.字符数据易于使用, 但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行,稍后对此进行介绍. 还有几种方法可以创建FileStream对象.构造函数具有许多不同的重载版本,最简单的构造函数仅仅带有两