2
實現跨平臺的文件鎖定
我需要實現在GO以下行爲:如何GO
- 的處理應該能夠讀取文件而不管是否有其他進程已鎖定該文件編寫
- 在寫入文件之前,進程應獲得寫入鎖定。這是爲了保證多個進程不能寫同一個文件
- 的處理不應該等待獲取寫鎖,如果不能獲得一個鎖,應該在
對於基於UNIX的系統,系統調用包移到在GO中定義了flock功能,可以用以下方式實現上述行爲:
- 使用syscall.flock函數和LOCK_EX | LOCK_NB嘗試寫入文件
- 從GO文件
系統調用封裝的Windows閱讀之前不檢查任何鎖之前獲取的鎖,不包括羊羣。鑑於此,如何才能最好地編寫可執行跨平臺並具有上述行爲的代碼?
我想盡量做到這一點,而不會使操作系統特定的呼叫或使用不安全。
PS:我不想強制性的文件鎖定,該過程將檢查文件鎖執行文件操作
我不是要求強制文件鎖定 – Ngm
好的,你只需要LockFile [Ex]在windows上。我認爲你將不得不掛鉤到那個win cgo中(也許有一種方法可以通過系統調用從系統dll中獲得它;對不起,不是windows的傢伙) – JimB
@JimB,但是有另一種方式,而不必調用系統特定的來電和使用不安全? – Ngm