我正在用C++編寫一個模塊,它將在一組機器上運行,所有這些機器都有一個nfs掛載文件存儲。避免在NFS共享文本文件上同時寫入
我有一個配置文件與所有的機器通過NFS共享;並且所有人都可以讀取/寫入該文件。如何確保不會因同時訪問而導致數據損壞?
我知道NFS有自己的鎖定協議,但我看到它不可靠 - concurrent nfs access。我也看到iNotify在nfs安裝的驅動器上不太好 - inotifiy example。我不確定stat將有助於檢查在寫入/讀取之前是否正在訪問文件。
如何在C++中實現一個簡單的鎖定機制以避免同時訪問?
...通過不嘗試同時寫入同一文件。寫入文件的唯一副本,並使用重命名重新轉向舊文件。 – Petesh 2012-07-06 20:09:50
......換句話說,如果文件是本地文件,則完全可能與您應該做的事情完全相同。 – Celada 2012-07-06 20:16:49
這對我來說不是一個選項,因爲文件(使用它的fd)正在被IPC(unix域套接字)跟蹤以進行更改。所做的更改將傳回模塊以供進一步處理。 – sillysheep 2012-07-06 20:18:51