日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
LOCKF(3) FreeBSD ライブラリ関数マニュアル LOCKF(3) 名称 lockf -- ファイルのレコードのロック ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <unistd.h> int lockf(int fd, int function, off_t size); 解説 関数 lockf() は、ファイルのセクションをアドバイザリモードロックでロックを 可能にします。ロックされているファイルのセクションをロックしようと試みる 他のプロセスから lockf() が呼び出されると、エラー値を返すか、セクションの ロックが解除されるまでブロックされます。プロセスが終了するとプロセスのた めのロックは、すべて削除されます。 引数 fd は、オープンしたファイルの記述子です。ファイル記述子は、書き込み のみ (O_WRONLY)、または読み込み / 書き込み (O_RDWR) 操作のどちらかでオー プンされていなければなりません。 function 引数は、とられる動作を指定するコントロール値です。function で許 される値は、次の通りです: Function 解説 F_ULOCK ロックされているセクションのロックの解除 F_LOCK 排他的使用のセッションのロック F_TLOCK 排他的使用のセッションのテストとロック F_TEST 他プロセスでロックされているかのセクションのテスト F_ULOCK は、ファイルのセクションからロックを削除します。F_LOCK と F_TLOCK の両方は、セクションが利用可能であるなら、ファイルのセクションをロックし ます。F_TEST は、別のプロセスによるロックが指定されたセクションに存在する かどうかを検出します。 size 引数は、ロックまたはロック解除される連続したバイトの数です。。ロック またはロック解除するセクションは、ファイル上の現在のオフセットから始ま り、正のサイズであれば前方に拡張し、負のサイズ (現在のオフセットを除く先 行するバイト) であれば後方に拡張します。しかしながら、ファイルの先頭より 前を開始または拡張するセッションのロックは、許されていません。size が 0 の場合、セクションは、現在のオフセットから可能な最大のファイルオフセット までロックされます (すなわち、現在のオフセットから現在のまたは将来のファ イルの終りまで)。 全体または部分的に、F_LOCK または F_TLOCK でロックされたセクションは、同 じプロセスのために以前にロックされたセクションを含むか、または含まれま す。これが起こるとき、または隣接したロックされたセクションが起こるなら、 セクションは、単一のロックされたセクションに統合されます。要求によって、 ロックの数が、システム課された制限を越えるなら、要求は、失敗します。 F_LOCK と F_TLOCK 要求は、セクションが利用可能ではないなら、取られるアク ションによってのみ異なります。F_LOCK は、セクションが利用可能となるまで、 呼び出しているプロセスをブロックします。F_TLOCK は、セクションがすでに別 のプロセスによってロックされているなら、関数を失敗させます。 ファイルロックは、ファイルのためのあらゆるファイル記述子のロックプロセス によって最初のクローズで解放されます。 F_ULOCK 要求は、プロセスによって制御された (全体または部分の) 1 つ以上の ロックされたセクションを解放します。ロックされたセクションは、現在のファ イルオフセットで始まり、size バイト、またはサイズが 0 であるなら、ファイ ルの終わりまでアンロックされます。ロックされたセクションのすべてが解放さ れないとき、(すなわち、アンロックされる領域の最初または終わりがロックされ たセクション内で失敗するとき) そのセクションの残りの部分は、まだプロセス によってロックされています。ロックされたセクションのセンタ部分を解放する ことは、2 つの個別のロックされたセクションとなる残りのロックされた最初と 終りの部分をもたらします。要求によって、システムのロックの数が、システム に課された制限を越えるなら、要求は、失敗します。 サイズが 0 でない F_ULOCK 要求と要求されたセクションの最後のバイトのオフ セットは、タイプ off_t のオブジェクトのための最大値であり、プロセスに、サ イズが 0 である既存のロックがあるとき、要求されたセクションの最後のバイト を含んでいるものは、0 と等しいサイズで要求されたセクションの開始からアン ロックする要求として扱われます。そうでなければ、F_ULOCK 要求は、要求され たセクションのみアンロックことを試みます。 ロックされた領域を制御しているプロセスが、別のプロセスのロックされた領域 をロックすることを試みることによってスリープ状態にされるなら、デッドロッ クが起こる可能性があります。この実装は、ロックされた領域がアンロックされ るまで、スリープして、デッドロックを起こし、EDEADLK エラーで失敗すること を検出します。 lockf(), fcntl(2) と flock(2) は、互換性があります。異なったロックインタ フェースを使用しているプロセスは、同じファイルを安全に共同利用することが できます。しかしながら、そのようなインタフェースの 1 つだけが、同じプロセ ス内で使用されるべきです。ファイルが flock(2) を通してプロセスによって ロックされるなら、ファイル内のあらゆるレコードは、fcntl(2) または lockf() を使用して別のプロセスの観点からロックされるように見られ、逆もまた同様で す。 セクションのブロックは、あらゆるシグナルによって割り込まれます。 戻り値 関数 lockf() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が返され、グローバル変数 errno にエラーを示す値が設定されます。失敗の場合 に、既存のロックは、変更されません。 エラー lockf() 関数は、次の場合に失敗します: [EAGAIN] 引数 function が、F_TLOCK または F_TEST であり、セク ションが、すでに別のプロセスによってロックされていま す。 [EBADF] 引数 fd が、有効なオープンしているファイル記述子ではあ りません。 引数 function が、F_LOCK または F_TLOCK であり、fd が、書き込みのために、オープンしている有効なファイル記 述子ではありません。 [EDEADLK] 引数 function が、F_LOCK であり、デッドロックが、検出 されました。 [EINTR] 引数 function が、is F_LOCK であり、lockf() が、シグナ ルの配信によって割り込まれました。 [EINVAL] 引数 function が、F_ULOCK, F_LOCK, F_TLOCK または F_TEST の 1 つではありません。 引数 fd が、ロックをサポートしないファイルを参照してい ます。 [ENOLCK] 引数 function が、F_ULOCK, F_LOCK または F_TLOCK であ り、ロックまたはアンロック要求を満たすことは、システム 課された制限を越えているシステムのロックされた領域の数 の結果となります。 関連項目 fcntl(2), flock(2) 規格 lockf() 関数は、X/Open Portability Guide Issue 4, Version 2 (``XPG4.2'') に適合しています。 FreeBSD 11.4 September 11, 2013 FreeBSD 11.4