2011-08-01 12 views
0

ファイルをロックしようとすると、lock()またはlock_sharable()でファイルをロックしようとすると例外がスローされます。別のユーザーが所有するファイルをロックする方法はありますか?安全に変更することができます(変更ユーザーには正しい書き込み権限があります)。ブーストプロセス中のfile_lockは所有していないファイルをロックできません

+0

file_lockはファイルのロックに使用されません。ロックを強制するためにファイルを使用するクロスプロセスミューテックスを意味します。これはファイルを使用して実装されたロックであり、アクセスのために実際にファイルをロックすることとは何の関係もありません。 – Joe

+0

はい、私はこの文脈でファイルロックが何であるかを理解しています。私の問題は、私が所有していないファイルをロックすることができず、考えられる回避策があるかどうかを知りたいということです。 – user788171

答えて

0

例外をスローしているということは、既存の排他ロックまたは共有ロックが解放されるのを待っていないことを意味します(これはブロッキング呼び出しである必要があります)。実際にファイル名が正しいことを確認するか、what()get_native_error()、またはget_error_code()のいずれかの方法を使用してスローされているboost::interprocess_exceptionのエラーコードを確認してください。たとえば、ファイルのアクセス権に問題があるか、ファイルが存在しないなど、ロックの競合が原因で例外がスローされない可能性があります。

+0

スローされるエラーはファイルのアクセス許可です。ロックしたいファイルの所有者をロックしようとしているユーザーに変更すると、そのファイルは機能します。基本的には、2人のユーザーが問題のファイルをロックできるようにしたいのですが、明らかに1人のユーザーしかファイルを所有できません。 – user788171

+0

設定できるグループレベルの権限はありませんか?例えば、Linux/Unixでは、 'chown'と' chmod'を使って、他のユーザの所有者だけでなく、読み書き/実行アクセシビリティのアクセス権を設定することができます。 Windowsでは、ACLを使ってきめ細かい制御が可能です。 – Jason

関連する問題