2011-08-01 2 views
0

부스트 file_lock을 사용하여 lock() 또는 lock_sharable()을 소유하지 않은 파일을 잠그려고하면 예외가 발생합니다. 다른 사용자가 소유 한 파일을 잠글 수있는 방법이 없으므로 안전하게 수정할 수 있습니다 (수정중인 사용자에게는 올바른 쓰기 권한이 있음).부스트 interprocess 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

관련 문제