Re: Linux 上面讀取檔案發生超奇怪問題

看板C_and_CPP (C/C++)作者 (張騫)時間16年前 (2009/04/14 12:55), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
沒有遇到過這樣的問題,說說我的一點看法吧。 在設置nfs server的時候,你可以設置sync或是async,怎么設置可以參考其他 文章,網路上很多。 如果設置為sync,則所有client寫入檔案的內容都不會cache,而是直接寫入disk。 如果設置為async,則所有client寫入檔案的內容都會cache。不管client端的process 在打開檔案的時候設置O_SYNC flag,還是呼叫fsync()。 所以我覺得你的問題有如下兩種解決方法。 1,在你的nfs server端設置sync。 2,在master打開文件之后,在read之前,呼叫fsync()來sync文件。 以上方式并沒有驗證過,僅供參考。 ※ 引述《yoco315 (眠月)》之銘言: : 感謝 richardhesid 給了我很多提示, : 我現在知道是 nfs 會 cache 的關係了。 : 不然之前真的是想破頭想不到原因。 : 今天上網查了很久相關資訊,有點概念了, : 那我現在問題就得改變了,請問: : 1. 請問我有沒有辦法透過某個函數呼叫,讓檔案 sync? : 2. 或是,我有沒有什麼方法檢查某檔案是否 sync 了? : 因為這個程式不是只有自己用 orz : 我也不知道用的人那邊 nfs 是怎麼設定的, : 也沒辦法控制要別人怎麼設定… : 但是如果我可以檢查檔案的狀態, : 那我至少可以 polling 到那個檔案 standby 為止… : 我 Linux 還真是一竅不通阿 orz : 先謝謝 <(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.191.37.122
文章代碼(AID): #19v1Sjhv (C_and_CPP)
文章代碼(AID): #19v1Sjhv (C_and_CPP)