ページによるとman
、次のアプローチはアドバイザリロックのみをサポートします:flock
、、。他のプロセスが書き込み権限でこのファイルを開くことができないように、たとえば書き込みロックを使用して、単一のプロセスによって一部のファイルを強制的にロックする方法はありますか?lockf
fcntl
user663896
質問する
1272 次
1 に答える
6
いいえ。Unixファミリのオペレーティングシステムは、通常、必須のファイルロックをサポートしていません1。これには、Linux、BSD、およびOSXが含まれます。
一部のUnixでは、ファイルが現在実行中の実行可能イメージである場合、書き込み用にファイルを開くことができません。open()
で失敗しETXTBSY
ます。ただし、いつでもファイルのリンクを解除(削除)して新しいファイルを作成することができ、それを妨げるものは何もありません。
脚注
1:これは完全に正しいわけではありませんが、必須のファイルロックには少し作業が必要であり、必須のロックはプラットフォーム固有であり、OSXはそれらをサポートしていません。
于 2012-11-28T11:15:09.933 に答える