【发布时间】:2012-03-11 07:02:33
【问题描述】:
我知道使用stdio.hFILE 而不是直接使用read()/write() 的优势之一是缓冲、中断处理等。所以,据我所知,所有fwrite()s 都会被缓冲直到我做一个fclose()。到目前为止,一切都很好。现在,当我执行fclose() 时,我会阻塞直到数据刷新到磁盘,还是fclose() 在将数据交给操作系统并让它在空闲时刷新到磁盘后立即返回?
【问题讨论】:
-
在 Linux 上,即使
write也不能保证数据在物理上位于磁盘上。您需要使用fsync。 -
@Banthar 或使用 O_DIRECT 选项。
标签: c asynchronous stdio buffered