>>> 此貼的回復 >> 不是.只是修改了緩沖區.操作系統定期刷新緩沖區的內容到磁盤上.如果想及時更新磁盤上的數據有必要使用fsync()
>>> 此貼的回復 >> fflush()也有這個功能,但它裡面的參數是文件句柄, 同 fsycn()有什麼區別嗎?
>>> 此貼的回復 >> 一個是文件流, 一個是文件描述符. 他們之間是可以相互轉換的. man fdopen 將文件描述符轉換成流 man fileno 講流轉換成文件描述符
>>> 此貼的回復 >> fflush 是把 FILE * 裡的緩沖區(位於用戶態進程空間)刷新到內核中 fsync 是把內核中對應的緩沖(是在 vfs 層的緩沖)刷新到硬盤中
>>> 此貼的回復 >> write() 只是沒有用戶空間的緩沖(就像 stdio 提供的), 但是它仍然有內核中的緩沖.
分不清楚 fflush() 和 fsync() 就說明還沒有用戶空間和內核空間的概念. 建議系統的學習/補習一下.