程序中,正常的文件操作,
非法关机(断电)之前,能在磁盘上看到文件,但是非法关机,重启之后,文件丢失。
测试验证OK。
File *fp= fopen("文件名","a+");
if(fp== NULL) return;
fwrite(buffer,size,count,fp);
fflush(wFile);
fclose(wFile);
非法关机(断电)之前,能在磁盘上看到文件,但是非法关机,重启之后,文件丢失。
百思不得其解。
查看资料终于弄明白:
通过fwrite函数之后,文件是被写到缓冲区的,
调用fflush函数之后,会把缓冲区中的文件写到文件系统中,数据还没有被真正的写入到物理介质上,
调用fileno获得文件描述符之后,再调用fsync 函数返回后才将文件写入到物理介质上。
正确代码如下:
File *fp= fopen("文件名","a+");
if(fp== NULL) return;
fwrite(buffer,size,count,fp);
fflush(wFile);
fsync(fileno(fd));
fclose(wFile);
测试验证OK。