語言中sync()

sync是C語言的一個庫函數。調用sync可以將系統緩沖區(內存中)的數據寫入到文件系統(磁盤)中。

sync的聲明為:

int sync(void);

位于頭文件unistd.h

當同步成功返回0,否則返回-1。

功能為將系統緩沖區的內容寫回磁盤,以確保數據同步

操作系統中,除非設置了自動同步,否則為了減少磁盤的寫入量,延長磁盤壽命,寫入文件時并不是即時寫入到磁盤中,而是先寫入內存,這段內存區域被稱為系統緩沖區。在系統緩沖區數據累計到一定數量后(具體數量因系統實際設置而定),會有系統進程一次性寫入所有緩沖數據。這樣,如果意外斷電,那么系統緩沖區內數據就會因此丟失。于是在寫入一些重要數據時,都會在寫入結束后進行一次sync()的調用,保證數據已經被寫入磁盤,降低數據丟失或損壞的可能性。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

部分代碼:

int ret = 0;

char caBuf[32] = "HelloWorld";

//write數據時,首先會將數據寫到磁盤緩沖區

//并不會立刻寫到磁盤上

ret = write(fd, caBuf, strlen(caBuf));

if (ret >= 0)

{

printf("write ok\n");

}

//若想要緩沖區的數據寫到磁盤上

//可以通過調用函數sync()或者syncfs()來實現

//sync();

ret = syncfs(fd);

if (0 == ret)

{

//commit buffer cache to disk ok

}

else if (-1 == ret)

{

printf("errno:%d, err:%s\n", errno

, strerror(errno));

}

close(fd);

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容