當我使用boost file_lock嘗試鎖定文件時,它並不擁有lock()或lock_sharable(),它會引發異常。有沒有辦法讓它鎖定不同用戶擁有的文件,以便它可以安全地修改它(修改用戶具有正確的寫入權限)。boost進程間file_lock無法鎖定它不擁有的文件
回答
你拋出一個異常的事實意味着它沒有等待任何現有的獨佔或共享鎖被釋放(這應該是一個阻塞調用)。確保您確實具有正確的文件名,或者使用what()
,get_native_error()
或get_error_code()
方法檢查正在拋出的boost::interprocess_exception
中的錯誤代碼。例如,你可能會遇到文件權限問題,或者文件可能不存在等等。由於鎖爭用而不會引發異常,所以這不是你的問題...
拋出的錯誤是文件權限。如果我們將要鎖定的文件的所有者更改爲嘗試鎖定的用戶,它就會起作用。基本上,我希望兩個用戶能夠鎖定有問題的文件,但很顯然,只有一個用戶可以擁有該文件。 – user788171
是否沒有您可以設置的組級權限?例如,在Linux/Unix上,你可以通過'chown'和'chmod'設置所有者以及其他用戶的讀/寫/執行可訪問性權限。在Windows上,你可以通過ACL來進行非常細緻的控制。 – Jason
- 1. 使用boost :: interprocess :: file_lock
- 2. 升壓進程間file_lock不與多個進程工作
- 3. maven-assembly-plugin擁有文件鎖定
- 4. Boost進程間鎖持久性
- 5. Boost進程間互斥進程崩潰而不是等待鎖定?
- 6. Log4Net - 文件進程鎖定
- 7. 無法刪除同一進程鎖定的文件 - 奇怪!
- 8. C++ | Windows - 有沒有辦法找出哪個進程擁有鎖定文件的所有權?
- 9. 什麼是錯誤的原因:無法檢查TDB鎖的擁有者鎖定文件包含無效數據
- 10. 無法鎖定文件RHEL6.4
- 11. 由進程鎖定的文件的未定義時間戳
- 12. 用戶apache無法訪問它擁有的文件
- 13. C++:線程和進程之間的文件鎖定
- 14. 線程和進程之間的文件鎖定
- 15. 文件(Java)的進程鎖定部分
- 16. 無法從 '升壓::進程間:: mapped_region' 到 '的boost ::進程間:: mapped_region &&' 轉換
- 17. 有沒有辦法在Erlang中的不同進程之間鎖定變量
- 18. 進程間鎖
- 19. C:線程之間的文件鎖定
- 20. 子進程擁有用於重定向它的父進程的STD輸出
- 21. 錯誤:文件無法accesssed的文件被其它進程
- 22. 在特定的時間段內鎖定gnome屏幕而無法解鎖它
- 23. 文件被哪個進程鎖定?
- 24. Linux鎖定進程和文件
- 25. 文件被哪個進程鎖定(android)?
- 26. 什麼進程鎖定文件?
- 27. 沒有鎖定父進程
- 28. 的boost ::進程間::上VC11
- 29. ,因爲不同的線程擁有它
- 30. Collectionviewsource - 不同的線程擁有它
file_lock不用於鎖定文件。它是一個跨進程互斥體,它使用一個文件來強制執行鎖定。它是一個使用文件實現的鎖,與實際鎖定文件以進行訪問沒有任何關係。 – Joe
是的,我明白在這種情況下文件鎖是什麼。我的問題是,我無法鎖定我不擁有的文件,並想知道是否有任何可能的解決方法。 – user788171