LOCKF(1) | FreeBSD General Commands Manual | LOCKF(1) |
名称
lockf — ファイルのロックを保持している間にコマンドを実行する書式
lockf | [ -kns][ -t seconds] file command [ arguments] |
解説
lockf ユーティリティは、必要ならば、 file を作成し、そのファイルで排他的ロックを獲得し、
明示的に伝えられなければ、終了時にファイルを削除します。
ロックを保持している間に、オプションの
arguments (引数) をつけて
command を実行します。
command が完了した後に、
lockf は、ロックを解放し、
-k オプションが指定されていなければ、
file を削除します。
flock(2) に記述されているように、
BSD スタイルのロックが使用されます。
file の単なる存在は、ロックされていると見なされません。
lockf ユーティリティが多くのプロセス間の並行処理を容易にするために使用されているなら、 -k オプションを使用することをお勧めします。これは、並列 (コンカレント) な unlink (アンリンク)、drop (ドロップ) とアクティビティの再獲得に関連している CPU 負荷を最小にする、性能強化されたアルゴリズムを実装するのと同様に、ロック命令を保証します。 -k オプションが使用されていないなら、ロック命令の周りの保証が行われないことに注意するべきです。
次のオプションがサポートされています:
- -k
- コマンドが終了した後に、ファイルのロックを保持します (削除しません)。
- -s
- lockf は、静かに動作します。ロックを獲得することの失敗は、終了ステータスでのみ示されます。
- -n
- 指定されたロック file が存在しないなら、 lockf は、失敗します。 -n が指定されていないなら、 lockf は、必要なら、 file を作成します。
- -t seconds
- ロックを待つためのタイムアウトを指定します。デフォルトで、 lockf は、ロックを獲得するために無限に待ちます。このオプションでタイムアウトが指定されるなら、 lockf は、あきらめる前に、多くても与えられた seconds 秒数待ちます。 0 のタイムアウトが与えられる場合に、直ちにロックを獲得することができないなら、 lockf は、失敗します。ロックがタイムアウトするとき、 command は、実行 されません。
いかなる場合も lockf は、別のプロセスによって保持されるロックを壊しません。
終了ステータス
lockf がロックの獲得に成功するなら、 command によって生成された終了ステータスを返します。そうでなければ、つぎのような sysexits(3) で定義された終了コードの 1 つを返します:- EX_TEMPFAIL
- 指定されたロックファイルが別のプロセスによって既にロックされていました。
- EX_CANTCREAT
- lockf ユーティリティが、ロックファイルを作成することができませんでした、例えば、適切なアクセス権がないため。
- EX_UNAVAILABLE
- -n オプションが指定され、指定されたロックファイルは、存在しません。
- EX_USAGE
- lockf のコマンド行にエラーがありました。
- EX_OSERR
- システムコール (例えば、 fork(2)) は、突然失敗しました。
- EX_SOFTWARE
- command は、通常終了しませんが、シグナルを受けるか、または停止されました。
歴史
lockf ユーティリティは、 FreeBSD 2.2 ではじめて登場しました。作者
<jdp@polstra.com>July 7, 1998 | FreeBSD |