boost interprocess file_lock无法锁定它不拥有的文件

时间:2011-08-01 17:55:54

标签: c++ boost locking interprocess

当我使用boost file_lock尝试锁定它不拥有lock()或lock_sharable()的文件时,它会抛出异常。有没有办法让它锁定不同用户拥有的文件,以便它可以安全地修改它(修改用户具有正确的写权限)。

1 个答案:

答案 0 :(得分:0)

您抛出异常的事实意味着它不会等待释放任何现有的独占锁或可共享锁(这应该是阻塞调用)。确保您确实拥有正确的文件名,或使用boost::interprocess_exceptionwhat()get_native_error()方法检查get_error_code()中引发的错误代码。例如,您可能遇到文件权限问题,或者文件可能不存在等等。由于锁争用而不会引发异常,因此这不是您的问题......