在this post中,答案表示刷新:将应用程序数据的临时状态与数据的永久状态(在数据库中或磁盘上)同步。我认为,当write()系统调用将某个缓冲区写入I/O设备(如磁盘)时,将执行刷新。因此,向write()设备写入数据和向该设备刷新数据似乎是在做同样的事情。如果是这样,我能说用fflush()刷新数据和用write()写入数据是完全相同的吗?
write()
fflush()
u2nhd7ah1#
首先,让我们做一件显而易见的事情:fflush对于输出数据流(以及输出最后作业的更新数据流),会将数据流缓冲区中任何未写入的数据写入相关的输出设备。C标准并没有说明数据是如何写入输出设备的。在Posix系统上,最有可能是通过write,其他系统可能有不同的(类似的)接口。从概念上讲,刷新将使用底层写原语将数据从缓冲区传输到输出设备。
简而言之:
1条答案
按热度按时间u2nhd7ah1#
首先,让我们做一件显而易见的事情:
fflush
对于输出数据流(以及输出最后作业的更新数据流),会将数据流缓冲区中任何未写入的数据写入相关的输出设备。
C标准并没有说明数据是如何写入输出设备的。在Posix系统上,最有可能是通过write,其他系统可能有不同的(类似的)接口。
从概念上讲,刷新将使用底层写原语将数据从缓冲区传输到输出设备。
简而言之:
fflush()
与write()
相同-〉否。fflush()
使用write()
-〉是的,很有可能。fflush()
和write()
确保将数据写入输出设备-〉Yes。