2 つのプロセスが を使用してファイルに排他ロックを同時に設定しようとする状況を考えてみましょうflock(fd, LOCK_EX|LOCK_NB)
。
示されているように、試行は非ブロッキングであるため、2 つのプロセスのうちの 1 つが で失敗するはずEWOULDBLOCK
です。
ここに私の質問があります: (Linux) の実装は、flock()
そのような場合に 2 つのプロセスのうちの 1 つだけが成功することを保証しますか? EWOULDBLOCK
または、他の誰も干渉していない場合でも、両方が失敗する可能性はありますか?
要するに、?flock(fd, LOCK_EX|LOCK_NB)
で誤って失敗することはありません。EWOULDBLOCK
私は主にflock()
Linux が提供するのバージョンに関心がありflock()
ますが、OS X などの他のシステムに関する情報も大歓迎です。
また、ロックが排他的 ( LOCK_EX
) であろうと共有 ( LOCK_SH
) であろうと、答えは同じだと思います。そうでない場合は、お知らせください。