総合手引 | セクション 2 | English | オプション |
#include <sys/file.h>
問合せ型ロックは、協同するプロセス間での一貫したファイル操作を 可能にしますが、ファイルの一貫性を保証する ものではありません (すなわち、プロセスは問合せ型ロックを使用せずに ファイルにアクセスできるので、その結果一貫性がなくなる可能性があります)。
ロックメカニズムは 共有 ロックと 排他的 ロックという 2 つのタイプのロックを提供します。 いつでも複数の共有ロックを 1 つのファイルに適用できます。 しかし、同時に 1 つのファイルに複数の排他的ロック、 または共有ロックと排他的ロックの両方を適用することはできません。
適切なロックのタイプを指定するだけで、共有ロックは排他的ロックに アップグレード でき、排他的ロックを共有ロックに ダウングレード できます。 その結果として前のロックは解放されて 新しいロックが適用されます (他のプロセスがロックを取得し 解放した後かもしれません)。
既にロックされているオブジェクトについてロックを要求すると、 ロックが獲得できるまで呼び出し側はブロックされます。 ただし LOCK_NB が operation に含まれる場合はブロックされません。 代わりに呼び出しが失敗し、エラー EWOULDBLOCK が返されます。
flock(), fcntl(2) および lockf(3) のロックは互換性があります。 異なったロックのインタフェースを使用するプロセスは、 同じファイルを安全に使用することができます。 しかしながら、同じプロセスの内部では これらのインタフェースのうちの 1 つのみが使用されるべきです。 flock() を介してあるプロセスによってあるファイルがロックされている場合、 fcntl(2) または lockf(3) を使用している他のプロセスの視点からは、 そのファイルの中のあらゆるレコードはロックされているかのように見えます。 また、その逆も同様です。
ロックを待ってブロックしているプロセスはシグナルで起こされるかもしれません。
[EWOULDBLOCK] | |
ファイルはすでに LOCK_NB オプションが指定された状態でロックされています。 | |
[EBADF] | |
引数 fd が無効な記述子を指しています。 | |
[EINVAL] | |
引数 fd がファイル以外のオブジェクトを参照しています。 | |
[EOPNOTSUPP] | |
引数 fd がファイルのロックをサポートしないオブジェクトを参照しています。 | |
FLOCK (2) | December 11, 1993 |
総合手引 | セクション 2 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | … one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs. | ” |
— Robert Firth |