FLOCK(2)

名前
flock - オープンされたファイルにロックの適用、解除を行なう

書式
#include <sys/file.h>

int flock(int fd, int operation)

説明
オープンされたファイルにアドバイザリ・ロック(advisory lock)の適用 または解除を行う。 ファイルは fd で指定する。 有効な操作(operation)は以下の通り:

    LOCK_SH
        共有ロック。 指定したファイルに対して、一つ以上のプロセスが同時に 共有ロックを保持することができる。

    LOCK_EX
        排他ロック。 指定したファイルに対して、ただ一つのプロセスだけが 同時に排他ロックを保持することができる。

    LOCK_UN
        アンロック。

    LOCK_NB
        ロックするときにブロックしない。他の操作(operation)といっしょに( or で)指定してもよい。

一つのファイルに共有ロックと排他ロックを同時に設定することはできない。 ファイル(すなわち inode)はロックされるが、 ファイル・ディスクリプターがロックさるわけでは ない。 それで、 dup(2) や fork(2) によって複数のロックが作りだされることはない。

返り値
成功したらゼロが返される。エラーの時は、-1 が返され、 errno に適切な値が設定される。

エラー

EWOULDBLOCK
    指定したファイルがロックされており、 LOCK_NB フラグが指定されている。

準拠
4.4BSD ( flock(2) コールは 4.2BSD で最初に 現われた)。

関連項目
open(2), close(2), dup(2), execve(2), fcntl(2), fork(2). /usr/src/linux/Documentation にある locks.txt と mandatory.txt も参照すること。