2011-08-01 118 views
0

當我使用boost file_lock嘗試鎖定文件時,它並不擁有lock()或lock_sharable(),它會引發異常。有沒有辦法讓它鎖定不同用戶擁有的文件,以便它可以安全地修改它(修改用戶具有正確的寫入權限)。boost進程間file_lock無法鎖定它不擁有的文件

+0

file_lock不用於鎖定文件。它是一個跨進程互斥體,它使用一個文件來強制執行鎖定。它是一個使用文件實現的鎖,與實際鎖定文件以進行訪問沒有任何關係。 – Joe

+0

是的,我明白在這種情況下文件鎖是什麼。我的問題是,我無法鎖定我不擁有的文件,並想知道是否有任何可能的解決方法。 – user788171

回答

0

你拋出一個異常的事實意味着它沒有等待任何現有的獨佔或共享鎖被釋放(這應該是一個阻塞調用)。確保您確實具有正確的文件名,或者使用what(),get_native_error()get_error_code()方法檢查正在拋出的boost::interprocess_exception中的錯誤代碼。例如,你可能會遇到文件權限問題,或者文件可能不存在等等。由於鎖爭用而不會引發異常,所以這不是你的問題...

+0

拋出的錯誤是文件權限。如果我們將要鎖定的文件的所有者更改爲嘗試鎖定的用戶,它就會起作用。基本上,我希望兩個用戶能夠鎖定有問題的文件,但很顯然,只有一個用戶可以擁有該文件。 – user788171

+0

是否沒有您可以設置的組級權限?例如,在Linux/Unix上,你可以通過'chown'和'chmod'設置所有者以及其他用戶的讀/寫/執行可訪問性權限。在Windows上,你可以通過ACL來進行非常細緻的控制。 – Jason

相關問題