ファイルロック
UNIXで電子メールをディスクに保存するときに伝統的に使われるフォーマットmboxは、一つのファイルに複数の電子メールメッセージを記録している。そのため、mboxに対し複数のプロセスが互いを考慮しないまま同時に書き込みや削除を行うと、仲裁更新問題が発生して消したはずのメールが復活してしまったり、逆に新たに受信したメールが消えてしまう。
これを防ぐため、各OSのファイルロック機構やロックファイルでmboxをロックすることでこの問題を回避している。
UNIXではオープン中のファイル(および実行中プログラム)は自動的にロックされない。UNIXの系統によってファイルロックの機構は異なり、多くのUNIX系システムは互換性のために複数のファイルロック機構をサポートしている。最も共通して使われているのは、fcntl と flock である。強制的にロックをかける設定にできる場合もあるが、UNIXのファイルロックは基本的に advisory(助言、補助)である。つまり、プロセスはロックに従ってファイルアクセスを抑制することもできるが、プログラムによってはロックを無視してファイルにアクセスすることも可能である。
ロックには共有ロックと排他ロックがある。fcntlでは、同一ファイル内で一部を共有ロックにしたり、別の部分を排他ロックにしたり、あるいはファイル全体をロックしたりできる。共有ロックは任意の個数のプロセスが同時にかけることができるが、排他ロックは1つのプロセスしかかけられず、(ファイルの同じ領域で)共有ロックとも共存できない。