OSDN Git Service

a2ac8ee413ce237e9255950319cbd48603181bb9
[linuxjm/LDP_man-pages.git] / release / man3 / lockf.3
1 .\" Copyright 1997 Nicolás Lichtmaier <nick@debian.org>
2 .\" Created Thu Aug  7 00:44:00 ART 1997
3 .\"
4 .\" %%%LICENSE_START(GPLv2+_DOC_FULL)
5 .\" This is free documentation; you can redistribute it and/or
6 .\" modify it under the terms of the GNU General Public License as
7 .\" published by the Free Software Foundation; either version 2 of
8 .\" the License, or (at your option) any later version.
9 .\"
10 .\" The GNU General Public License's references to "object code"
11 .\" and "executables" are to be interpreted as the output of any
12 .\" document formatting or typesetting system, including
13 .\" intermediate and printed output.
14 .\"
15 .\" This manual is distributed in the hope that it will be useful,
16 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
17 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 .\" GNU General Public License for more details.
19 .\"
20 .\" You should have received a copy of the GNU General Public
21 .\" License along with this manual; if not, see
22 .\" <http://www.gnu.org/licenses/>.
23 .\" %%%LICENSE_END
24 .\"
25 .\" Added section stuff, aeb, 2002-04-22.
26 .\" Corrected include file, drepper, 2003-06-15.
27 .\"
28 .\"*******************************************************************
29 .\"
30 .\" This file was generated with po4a. Translate the source file.
31 .\"
32 .\"*******************************************************************
33 .TH LOCKF 3 2012\-07\-07 GNU "Linux Programmer's Manual"
34 .SH 名前
35 lockf \- オープンされたファイルに対する POSIX ロックの適用・テスト・解除を行う
36 .SH 書式
37 \fB#include <unistd.h>\fP
38 .sp
39 \fBint lockf(int \fP\fIfd\fP\fB, int \fP\fIcmd\fP\fB, off_t \fP\fIlen\fP\fB);\fP
40 .sp
41 .in -4n
42 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
43 .in
44 .sp
45 \fBlockf\fP():
46 .ad l
47 .RS 4
48 _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
49 .RE
50 .ad
51 .SH 説明
52 オープンされたファイルのセクションに対して、 POSIX ロックの適用・テスト・解除をする。 ファイルは \fIfd\fP で指定される。 \fIfd\fP
53 は書き込みのためにオープンしたファイルディスクリプタである。 アクションは \fIcmd\fP で指定される。 \fIpos\fP を現在のファイル位置とすると、
54 \fIlen\fP が正の場合、セクションはバイト位置 \fIpos\fP..\fIpos\fP+\fIlen\fP\-1 となり、 \fIlen\fP
55 が負の場合、セクションはバイト位置 \fIpos\fP\-\fIlen\fP..\fIpos\fP\-1 となる。 \fIlen\fP が 0
56 の場合、セクションは現在のファイル位置から無限大までとなる (つまり現在の、あるいは変更された場合は将来の、ファイル終端位置まで)。
57 どの場合においても、セクションは以前のファイル終端よりも拡大されうる。
58 .LP
59 Linux では、 \fBlockf\fP()  は単に \fBfcntl\fP(2)  のロックへのインターフェースである。 多くの他のシステムで
60 \fBlockf\fP()  はこのように実装されているが、 POSIX.1\-2001 では \fBlockf\fP()  と \fBfcntl\fP(2)
61 のロックとの関係は規定されていない。 おそらく、移植性が必要なアプリケーションでは、 \fBlockf\fP()  と \fBfcntl\fP(2)
62 のロックを混ぜて呼び出すのは避けるべきであろう。
63 .LP
64 有効なオプションを以下に挙げる。
65 .TP 
66 \fBF_LOCK\fP
67 ファイルの指定されたセクションに排他ロックを設定する。 そのセクション (の一部) が既にロックされていた場合、
68 前のロックが解除されるまで関数の呼び出しがブロックされる。 このセクションが前にロックされているセクションと重なった場合、 2
69 つのセクションは結合される。 ロックを保持しているプロセスが、 そのファイルのファイルディスクリプタをクローズすると、 ファイルロックは解放される。
70 子プロセスはロックを継承しない。
71 .TP 
72 \fBF_TLOCK\fP
73 \fBF_LOCK\fP と同様であるが、ファイルが既にロックされている場合、 関数の呼び出しはブロックを行わずにエラーを返す。
74 .TP 
75 \fBF_ULOCK\fP
76 ファイルの指定されたセクションのロックを解除する。 これによりロックされたセクションが 2 つに分割されるかもしれない。
77 .TP 
78 \fBF_TEST\fP
79 次のようにロックのテストをする。 指定されたセクションがロックされていないか、 このプロセスによりロックされている場合、0 を返す。
80 他のプロセスがロックを保持している場合、\-1 を返し、 \fIerrno\fP を \fBEAGAIN\fP (いくつかの他のシステムでは \fBEACCES\fP)
81 に設定する。
82 .SH 返り値
83 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
84 .SH エラー
85 .TP 
86 \fBEACCES\fP か \fBEAGAIN\fP
87 ロックされたファイルに対して、 \fBF_TLOCK\fP または \fBF_TEST\fP が指定されている。
88 または、ファイルが他のプロセスによりメモリーマップされており、 指定された操作が禁止されている。
89 .TP 
90 \fBEBADF\fP
91 \fIfd\fP がオープンされたファイルのディスクリプタではない。 または、 \fIcmd\fP が \fBF_LOCK\fP か \fBF_TLOCK\fP で、
92 \fIfd\fP が書き込み可能なファイルディスクリプタでない。
93 .TP 
94 \fBEDEADLK\fP
95 コマンドが \fBF_LOCK\fP であり、このロック操作を行うとデッドロックが発生してしまう。
96 .TP 
97 \fBEINVAL\fP
98 \fIfd\fP に無効な操作が指定された。
99 .TP 
100 \fBENOLCK\fP
101 非常に多くのセグメントロックが開かれ、ロックテーブルが一杯である。
102 .SH 準拠
103 SVr4, POSIX.1\-2001.
104 .SH 関連項目
105 \fBfcntl\fP(2), \fBflock\fP(2)
106
107 Linux カーネルソースの \fIDocumentation/filesystems\fP ディレクトリにある \fIlocks.txt\fP と
108 \fImandatory\-locking.txt\fP (以前のカーネルでは、これらのファイルは \fIDocumentation\fP ディレクトリ直下にあり、
109 \fImandatory\-locking.txt\fP は \fImandatory.txt\fP という名前であった。)
110 .SH この文書について
111 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
112 である。プロジェクトの説明とバグ報告に関する情報は
113 http://www.kernel.org/doc/man\-pages/ に書かれている。