嵌入式linux如何立即将文件写入非易失性存储器?(fflush
在一个arm板上写文件,完后立即断电的情况下经常出现被写的文件全部变为0的情况网上搜索,结论是linux在写完文件后并没有马上写到硬盘(或flash等)
方法是调用:
1. fflush(FILE *fp)
2. fsync(int fd)
函数fflush,据说只是刷新内存缓冲,将内容写入内核缓冲,要想将其写入磁盘,还需要调用fsync
问题是,fflush参数是FILE *fp, fsync参数是int fd,那么该如何调用,以保证文件真正写入flash?
例程
#include<>
main()
{
FILE *fp;
int fd;
fp=fopen("file_to_be_written","w");
//---------------------
//write fp.......
//---------------------
fflush(fp);
fd = fileno(fp);//??这么变换吗?
fsync(fd);//??这么sync吗?
fclose(fp);
fclose(fd);//??fd和fp是不是指向同一个文件,close fp就不用close fd了??
}
请指教。
不要沉了,不要沉了!! who knows?? who who who ever ever ever consider consider consider this this this problem problem problem??? fwrite()后直接fsync就可以,fwrite只是写到buffer中,sync可以同步到磁盘 另外可以指定 Direct io
页:
[1]