boost interprocess file_lock не может заблокировать файл, которым он не владеет - PullRequest
0 голосов
/ 01 августа 2011

Когда я использую boost file_lock, чтобы попытаться заблокировать файлы, которые ему не принадлежат с помощью lock () или lock_sharable (), возникает исключение.Есть ли способ заблокировать файл, принадлежащий другому пользователю, чтобы он мог безопасно его изменить (изменяющий пользователь имеет правильные права на запись).

1 Ответ

0 голосов
/ 01 августа 2011

Тот факт, что вы генерируете исключение, означает, что он не ожидает освобождения каких-либо существующих исключительных или разделяемых блокировок (это должен быть блокирующий вызов). Убедитесь, что у вас действительно правильное имя файла, или проверьте код ошибки в boost::interprocess_exception, который выдается, используя методы what(), get_native_error() или get_error_code(). Например, у вас может быть проблема с правами доступа к файлу, или файл может не существовать, и т. Д. Исключение не вызывается из-за конфликта блокировок, так что это не ваша проблема ...

...