C語言檔案與目錄(四)緩衝區

loophome發表於2015-11-06

1)檔案緩衝區

將緩衝區資料寫入到磁碟函式sync:所謂緩衝區,是Linux系統對檔案的一種處理方式。在對檔案進行寫操作時,並沒有立即把檔案寫入到磁碟,而是把檔案寫入到緩衝區中。如果需要把檔案立即寫入到磁碟,可以用sync函式。用這個函式強制寫入緩衝區資料的好處是保證資料有同步。這個函式的使用方法如下所示。

int sync(void)
這個函式會對當前程式開啟的所有檔案進行處理,將緩衝區中的內容寫入到檔案。函式沒有引數,返回值為0。這個函式一般不會產生錯誤。要使用這個函式,需要在程式中包含下面的標頭檔案。
#include<unistd.h>

提示:Linux系統下還有一個sync指令能達到同樣的效果,可以在命令列中呼叫,用於將緩衝區中的資料立即寫入的磁碟中。

2)單個檔案緩衝區

將緩衝區資料寫入到磁碟函式fsync:函式fsync的作用是將緩衝區的資料寫入到磁碟。這個函式的使用方法如下所示。
int fsync(int fd);
引數fd是open函式開啟檔案時返回的編號。函式如果執行成功,則返回0,否則返回-1。
提示:與sync函式不同的是,函式fsync可以指定開啟檔案的編號,執行以後會返回一個值。
在使用這個函式時,需要在檔案前面包含下面的標頭檔案。
#include<unistd.h>
函式可能發生下面這些錯誤,可以用errno捕獲錯誤。
EBADF:引數fd不是一個正確的檔案開啟編號或者檔案不能寫入。
EIO:發生了I/O錯誤。前面的章節已經講述過I/O錯誤。
EROFS或EINVAL:fd是一個特殊的檔案,不能夠寫入內容。


相關文章