FLOCK

Section: System Calls (2)
索引 jman

BSD mandoc
 

索引

名称

flock - 開いたファイル上の問合せ型ロックを適用または除去する  

索引

ライブラリ

Lb libc  

索引

書式

In sys/file.h Fd #define   LOCK_SH         0x01            /* 共有ファイルロック */ Fd #define     LOCK_EX0x02/* 排他的ファイルロック */ Fd #defineLOCK_NB0x04/* ロックするときにブロックしない */ Fd #defineLOCK_UN0x08/* ファイルをアンロックする */ Ft int Fn flock int fd int operation  

索引

解説

Fn flock システムコールは、ファイル記述子
Fa fd に対応するファイル上の 問合せ型 ロックを適用または除去します。 ロックを適用するには、 Fa operation 引数に LOCK_SH または LOCK_EX のいずれかと、必要であれば LOCK_NB を加えて指定します。 既存のロックをアンロックする場合は operationLOCK_UN にしてください。

問合せ型ロックは、協同するプロセス間での一貫したファイル操作を 可能にしますが、ファイルの一貫性を保証する ものではありません (すなわち、プロセスは問合せ型ロックを使用せずに ファイルにアクセスできるので、その結果一貫性がなくなる可能性があります)。

ロックメカニズムは 共有 ロックと 排他的 ロックという 2 つのタイプのロックを提供します。 いつでも複数の共有ロックを 1 つのファイルに適用できます。 しかし、同時に 1 つのファイルに複数の排他的ロック、 または共有ロックと排他的ロックの両方を適用することはできません。

適切なロックのタイプを指定するだけで、共有ロックは排他的ロックに アップグレード でき、排他的ロックを共有ロックに ダウングレード できます。 その結果として前のロックは解放されて 新しいロックが適用されます (他のプロセスがロックを取得し 解放した後かもしれません)。

既にロックされているオブジェクトについてロックを要求すると、 ロックが獲得できるまで呼び出し側はブロックされます。 ただし LOCK_NB が Fa operation に含まれる場合はブロックされません。 代わりに呼び出しが失敗し、エラー Er EWOULDBLOCK が返されます。  

索引

ロックはファイルにかけられるものであって、 ファイル記述子にかけられるものではありません。 すなわち、 dup(2) または fork(2) によって複製されたファイル記述子は、 ロックの複数のインスタンスとはならずに、1 つのロックへの複数の 参照になります。 あるファイルについてのロックを保持しているプロセスがフォークし、 子プロセスが明示的にそのファイルをアンロックする場合、 親プロセスはそのロックを失います。

Fn flock , fcntl(2) および lockf(3) のロックは互換性があります。 異なったロックのインタフェースを使用するプロセスは、 同じファイルを安全に使用することができます。 しかしながら、同じプロセスの内部では これらのインタフェースのうちの 1 つのみが使用されるべきです。 Fn flock を介してあるプロセスによってあるファイルがロックされている場合、 fcntl(2) または lockf(3) を使用している他のプロセスの視点からは、 そのファイルの中のあらゆるレコードはロックされているかのように見えます。 また、その逆も同様です。

ロックを待ってブロックしているプロセスはシグナルで起こされるかもしれません。  

索引

戻り値

Rv -std flock  

索引

エラー

Fn flock システムコールは次の場合に失敗します:

Bq Er EWOULDBLOCK
ファイルはすでに LOCK_NB オプションが指定された状態でロックされています。
Bq Er EBADF
引数 Fa fd が無効な記述子を指しています。
Bq Er EINVAL
引数 Fa fd がファイル以外のオブジェクトを参照しています。
Bq Er EOPNOTSUPP
引数 Fa fd がファイルのロックをサポートしないオブジェクトを参照しています。

 

索引

関連項目

close(2), dup(2), execve(2), fcntl(2), fork(2), open(2), lockf(3)  

索引

歴史

Fn flock システムコールは BSD 4.2 で登場しました。


 

索引

Index

名称
ライブラリ
書式
解説
戻り値
エラー
関連項目
歴史

jman



Time: 07:06:25 GMT, January 12, 2009