簡體   English   中英

flush、write() 和 fflush() 之間的實際區別是什么?

[英]what is practical differences between flush, write() and fflush()?

這篇文章中,答案是

Flushing:將應用程序數據的臨時 state 與數據的永久 state 同步(在數據庫中或磁盤上)。

我認為刷新是在write()系統調用將某個緩沖區寫入 i/o 設備(如磁盤)時執行的。

因此,似乎使用write()將數據寫入設備和將數據刷新到設備是做同樣的事情。

如果是這樣,我可以說用fflush()刷新數據和用write()寫入數據完全相同嗎?

首先,讓我們做一件顯而易見的事情:

沖洗

對於 output 流(以及輸出最后一個操作的更新流),將流緩沖區中的任何未寫入數據寫入關聯的 output 設備。

C 標准沒有 state 數據是如何寫入 output 設備的。 在 Posix 系統上,很可能通過write ,其他系統可能有不同(相似)的接口。

從概念上講,刷新將使用底層寫原語將數據從緩沖區傳輸到 output 設備。

簡而言之:

  • fflush()write()相同 -> 否。
  • fflush()使用write() -> 是的,很有可能。
  • fflush()write()確保數據寫入 output 設備 -> 是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM