我在想如果你能夠:只鎖定一行或一個文件在linux中的單個字符,其餘的文件應該保持可訪問的其他進程? 我收到一個有關在linux下使用c/C++模擬文件事務的任務。 請給我一個答案,如果這個答案是肯定的,給我一些鏈接,我可以從中窺視這個任務。使用c/C++鎖定Linux中的文件
感謝, Madicemickael
我在想如果你能夠:只鎖定一行或一個文件在linux中的單個字符,其餘的文件應該保持可訪問的其他進程? 我收到一個有關在linux下使用c/C++模擬文件事務的任務。 請給我一個答案,如果這個答案是肯定的,給我一些鏈接,我可以從中窺視這個任務。使用c/C++鎖定Linux中的文件
感謝, Madicemickael
是的,這是可能的。
執行此操作的Unix方法是通過fcntl
或lockf
。 無論你選擇什麼,確保只使用它而不是混合兩者。看看這個問題(有答案):fcntl, lockf, which is better to use for file locking?。
如果可以,請參閱Advanced Programming in the UNIX Environment中的第14.3節。
我已經嘗試過他們,他們都是非常好的感謝 – 2010-01-14 18:27:48
lockf(3)
可以申請一個鎖到一個文件中的一部分。
fcntl()是一個可供選擇的API,因爲它是最少破壞的並且是POSIX。它是唯一一個跨NFS工作的人。這就是說它也是一個完整的災難,因爲鎖定與進程綁定,而不是文件描述符。這意味着如果你鎖定一個文件,然後其他某個線程或某個庫函數鎖定/解鎖它,那麼你的鎖也將被打破。此外,您不能使用文件系統鎖來保護相同進程的兩個線程互相干擾。另外,您不應該對多個用戶可以訪問的文件使用文件鎖,因爲這可以有效地使用戶凍結其他每個進程。
總結:在Unix文件鎖定產生的問題比它解決的。在你使用它之前,你需要確定真的是你確定完全理解了語義。
即使文件鎖必然的過程,你可以使用一個互斥體在線程應用程序,以確保一個線程不會釋放由另一個創建的鎖。 – 2010-01-13 18:24:19
從位置x到位置y(X
2010-01-13 15:30:52
除非你是OP,請不要附加問句「功課」,因爲這樣做只能是貴公司的意見。如果你認爲這個問題應該被關閉,只是投票將其關閉。 – 2010-01-13 15:33:22