怎么在Linux中調(diào)用fsync函數(shù)

怎么在Linux中調(diào)用fsync函數(shù)?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的巴彥淖爾網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

功能描述:

同步內(nèi)存中所有已修改的文件數(shù)據(jù)到儲(chǔ)存設(shè)備。

用法:
#include <unistd.h>

int fsync(int fd);

參數(shù):
fd:文件描述詞。

返回說(shuō)明:
成功執(zhí)行時(shí),返回0。失敗返回-1,errno被設(shè)為以下的某個(gè)值
EBADF: 文件描述詞無(wú)效
EIO : 讀寫(xiě)的過(guò)程中發(fā)生錯(cuò)誤

EROFS, EINVAL:文件所在的文件系統(tǒng)不支持同步

強(qiáng)制把系統(tǒng)緩存寫(xiě)入文件sync和fsync函數(shù),, fflush和fsync的聯(lián)系和區(qū)別2010-05-10 11:25傳統(tǒng)的U N I X實(shí)現(xiàn)在內(nèi)核中設(shè)有緩沖存儲(chǔ)器,大多數(shù)磁盤(pán)I / O都通過(guò)緩存進(jìn)行。當(dāng)將數(shù)據(jù)寫(xiě)
到文件上時(shí),通常該數(shù)據(jù)先由內(nèi)核復(fù)制到緩存中,如果該緩存尚未寫(xiě)滿,則并不將其排入輸出
隊(duì)列,而是等待其寫(xiě)滿或者當(dāng)內(nèi)核需要重用該緩存以便存放其他磁盤(pán)塊數(shù)據(jù)時(shí),再將該緩存排
入輸出隊(duì)列,然后待其到達(dá)隊(duì)首時(shí),才進(jìn)行實(shí)際的I / O操作。這種輸出方式被稱(chēng)之為延遲寫(xiě)
(delayed write)(Bach 〔1 9 8 6〕第3章詳細(xì)討論了延遲寫(xiě))。延遲寫(xiě)減少了磁盤(pán)讀寫(xiě)次數(shù),但是
第4章文件和目錄8 7
下載
卻降低了文件內(nèi)容的更新速度,使得欲寫(xiě)到文件中的數(shù)據(jù)在一段時(shí)間內(nèi)并沒(méi)有寫(xiě)到磁盤(pán)上。當(dāng)
系統(tǒng)發(fā)生故障時(shí),這種延遲可能造成文件更新內(nèi)容的丟失。為了保證磁盤(pán)上實(shí)際文件系統(tǒng)與緩
存中內(nèi)容的一致性,U N I X系統(tǒng)提供了s y n c和f s y n c兩個(gè)系統(tǒng)調(diào)用函數(shù)。
#include <unistd.h>
void sync(void);
int fsync(intf i l e d e s) ;
返回:若成功則為0,若出錯(cuò)則為-1
s y n c只是將所有修改過(guò)的塊的緩存排入寫(xiě)隊(duì)列,然后就返回,它并不等待實(shí)際I / O操作結(jié)束。
系統(tǒng)精靈進(jìn)程(通常稱(chēng)為u p d a t e )一般每隔3 0秒調(diào)用一次s y n c函數(shù)。這就保證了定期刷新內(nèi)
核的塊緩存。命令s y n c ( 1 )也調(diào)用s y n c函數(shù)。
函數(shù)f s y n c只引用單個(gè)文件(由文件描述符f i l e d e s指定),它等待I / O結(jié)束,然后返回。f s y n c可
用于數(shù)據(jù)庫(kù)這樣的應(yīng)用程序,它確保修改過(guò)的塊立即寫(xiě)到磁盤(pán)上。比較一下f s y n c和O _ S Y N C標(biāo)
志(見(jiàn)3 . 1 3節(jié))。當(dāng)調(diào)用f s y n c時(shí),它更新文件的內(nèi)容,而對(duì)于O _ S Y N C,則每次對(duì)文件調(diào)用w r i t e
函數(shù)時(shí)就更新文件的內(nèi)容。


fflush和fsync的聯(lián)系和區(qū)別
[zz ] http://blog.chinaunix.net/u2/73874/showart_1421917.html

1.提供者fflush是libc.a中提供的方法,fsync是系統(tǒng)提供的系統(tǒng)調(diào)用。2.原形fflush接受一個(gè)參數(shù)FILE *.fflush(FILE *);fsync接受的時(shí)一個(gè)Int型的文件描述符。fsync(int fd);3.功能fflush:是把C庫(kù)中的緩沖調(diào)用write函數(shù)寫(xiě)到磁盤(pán)[其實(shí)是寫(xiě)到內(nèi)核的緩沖區(qū)]。fsync:是把內(nèi)核緩沖刷到磁盤(pán)上。

c庫(kù)緩沖-----fflush---------〉內(nèi)核緩沖--------fsync-----〉磁盤(pán)

關(guān)于怎么在Linux中調(diào)用fsync函數(shù)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)頁(yè)標(biāo)題:怎么在Linux中調(diào)用fsync函數(shù)
鏈接URL:http://muchs.cn/article20/ghchjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、用戶體驗(yàn)網(wǎng)站營(yíng)銷(xiāo)、定制開(kāi)發(fā)全網(wǎng)營(yíng)銷(xiāo)推廣、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化