|
在一个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了??
}
请指教。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|