fwrite的文件緩衝同步到磁盤

    這是個小細節。windows

    用fwrite寫文件的時候,我發現刷新文件夾,對應文件大小一直是0。緩存

    網上有一篇博客寫得比較完善http://blog.csdn.net/sctq8888/article/details/7409985spa

C語言中的:標準IO都有緩存區,這和系統緩衝不一樣,咱們使用fflush()只保證了將IO緩衝寫入系統緩衝中,使IO讀操做能成功,但系統何時寫入磁盤,由系統決定,通常是達到必定量時系統他就寫入磁盤。固然能夠強制系統將系統文件緩衝的內容寫入磁盤。     系統調用中的read/write是將內容直接寫到系統的文件緩衝區。  .net

    在windows下文件緩衝內容寫到磁盤:code

#include <stdio.h>
#include <io.h>

FILE* fp = fopen("./test.dat", "w+");
fwrite(buffer, size, 1, fp);   
int fd = _fileno(fp); //獲取文件描述符
_commit(fd); //強制寫硬盤

    這樣就能夠實時的看到文件寫到磁盤上進去了。blog

相關文章
相關標籤/搜索