3

ページによるとman、次のアプローチはアドバイザリロックのみをサポートします:flock、、。他のプロセスが書き込み権限でこのファイルを開くことができないように、たとえば書き込みロックを使用して、単一のプロセスによって一部のファイルを強制的にロックする方法はありますか?lockffcntl

4

1 に答える 1

6

いいえ。Unixファミリのオペレーティングシステムは、通常、必須のファイルロックをサポートしていません1。これには、Linux、BSD、およびOSXが含まれます。

一部のUnixでは、ファイルが現在実行中の実行可能イメージである場合、書き込み用にファイルを開くことができません。open()で失敗しETXTBSYます。ただし、いつでもファイルのリンクを解除(削除)して新しいファイルを作成することができ、それを妨げるものは何もありません。

脚注

1:これは完全に正しいわけではありませんが、必須のファイルロックには少し作業が必要であり、必須のロックはプラットフォーム固有であり、OSXはそれらをサポートしていません。

于 2012-11-28T11:15:09.933 に答える