OSDN Git Service

長音記号の修正を release に反映
[linuxjm/LDP_man-pages.git] / release / man2 / flock.2
index ef1b07f..2140c39 100644 (file)
@@ -29,8 +29,8 @@
 .\"    Substantial rewrites and additions
 .\" 2005-05-10 mtk, noted that lock conversions are not atomic.
 .\"
-.\" FIXME: Maybe document LOCK_MAND, LOCK_RW, LOCK_READ, LOCK_WRITE
-.\"        which only have effect for SAMBA.
+.\" FIXME Maybe document LOCK_MAND, LOCK_RW, LOCK_READ, LOCK_WRITE
+.\" which only have effect for SAMBA.
 .\"
 .\"*******************************************************************
 .\"
@@ -47,7 +47,7 @@
 .\" Modified 2005-02-26, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
 .\" Updated 2005-09-06, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
 .\"
-.TH FLOCK 2 2013\-02\-11 Linux "Linux Programmer's Manual"
+.TH FLOCK 2 2014\-09\-21 Linux "Linux Programmer's Manual"
 .SH 名前
 flock \- オープンされたファイルに対するアドバイザリロックの適用、解除を行う
 .SH 書式
@@ -75,14 +75,16 @@ flock \- オープンされたファイルに対するアドバイザリロッ
 
 一つのファイルに共有ロックと排他ロックを同時に設定することはできない。
 
-\fBflock\fP()  によって作られるロックは、 オープンされたファイルのテーブルエントリと関連付けられる。 したがって、ファイルディスクリプタの複製
-(\fBfork\fP(2)  や \fBdup\fP(2)  などにより作成される) は同じロックを参照し、 これらのファイルディスクリプタのどれを使っても
-このロックを変更したり解放したりできる。 また、ロックの解放は、 上記の複数のファイルディスクリプタのいずれかに対して 明示的に \fBLOCK_UN\fP
-操作を指示した場合か、これらのファイルディスクリプタがすべて 閉じられた場合に行われる。
+\fBflock\fP() によって作られるロックは、 オープンファイル記述 (open file description) (\fBopen\fP(2) 参照)
+と関連付けられる。 したがって、ファイルディスクリプターの複製 (\fBfork\fP(2)  や \fBdup\fP(2)  などにより作成される)
+は同じロックを参照し、 これらのファイルディスクリプターのどれを使っても このロックを変更したり解放したりできる。 また、ロックの解放は、
+上記の複数のファイルディスクリプターのいずれかに対して 明示的に \fBLOCK_UN\fP 操作を指示した場合か、これらのファイルディスクリプターがすべて
+閉じられた場合に行われる。
 
-あるプロセスが \fBopen\fP(2)  (もしくは同様の方法) を使って同じファイルに対して 複数のディスクリプタを取得した場合、 \fBflock\fP()
-はこれら複数のディスクリプタを各々独立のものとして扱う。 これらのファイルディスクリプタの一つを使ってファイルをロックしようと
-した際、そのロック要求は、呼び出し元のプロセスがそのファイルの別の ディスクリプタ経由ですでに設定しているロックによって拒否される場合がある。
+あるプロセスが \fBopen\fP(2)  (もしくは同様の方法) を使って同じファイルに対して 複数のディスクリプターを取得した場合、
+\fBflock\fP()  はこれら複数のディスクリプターを各々独立のものとして扱う。
+これらのファイルディスクリプターの一つを使ってファイルをロックしようと した際、そのロック要求は、呼び出し元のプロセスがそのファイルの別の
+ディスクリプター経由ですでに設定しているロックによって拒否される場合がある。
 
 一つのプロセスは、一つのファイルに対して (共有ロックと排他ロックのうち)  いずれか一種類のロックしか設定できない。 既にロックされたファイルに対して
 \fBflock\fP()  を呼び出すと、既存のロックを新しいロックモードに変更することになる。
@@ -95,16 +97,16 @@ flock \- オープンされたファイルに対するアドバイザリロッ
 .SH エラー
 .TP 
 \fBEBADF\fP
-\fIfd\fP がオープンされたファイルディスクリプタではない。
+\fIfd\fP ã\81\8cã\82ªã\83¼ã\83\97ã\83³ã\81\95ã\82\8cã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\81¯ã\81ªã\81\84ã\80\82
 .TP 
 \fBEINTR\fP
-ロックの獲得を待っている間に、ハンドラにより捕捉されたシグナルを 受信し、 \fBflock\fP()  が中断された。 \fBsignal\fP(7)  参照。
\83­ã\83\83ã\82¯ã\81®ç\8d²å¾\97ã\82\92å¾\85ã\81£ã\81¦ã\81\84ã\82\8bé\96\93ã\81«ã\80\81ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81«ã\82\88ã\82\8aæ\8d\95æ\8d\89ã\81\95ã\82\8cã\81\9fã\82·ã\82°ã\83\8aã\83«ã\82\92 å\8f\97ä¿¡ã\81\97ã\80\81 \fBflock\fP()  ã\81\8c中æ\96­ã\81\95ã\82\8cã\81\9fã\80\82 \fBsignal\fP(7)  å\8f\82ç\85§ã\80\82
 .TP 
 \fBEINVAL\fP
 \fIoepration\fP が無効である。
 .TP 
 \fBENOLCK\fP
-ロックレコードを割り当てるためのメモリが不足している。
\83­ã\83\83ã\82¯ã\83¬ã\82³ã\83¼ã\83\89ã\82\92å\89²ã\82\8aå½\93ã\81¦ã\82\8bã\81\9fã\82\81ã\81®ã\83¡ã\83¢ã\83ªã\83¼ã\81\8cä¸\8d足ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82
 .TP 
 \fBEWOULDBLOCK\fP
 指定したファイルがロックされており、 \fBLOCK_NB\fP フラグが指定されている。
@@ -112,14 +114,21 @@ flock \- オープンされたファイルに対するアドバイザリロッ
 4.4BSD (\fBflock\fP()  コールは 4.2BSD で最初に登場した)。 \fBfcntl\fP(2)  で実装されているものなどを含めると、
 \fBflock\fP()  の機能はほとんどの UNIX システムで実装されている。
 .SH 注意
-\fBflock\fP()  は NFS 上のファイルのロックをしない。代わりに \fBfcntl\fP(2)
-を使用すること。これにより、十分に新しいバージョンの Linux と、ロック機能を サポートした NFS サーバを使用することにより、NFS
-上でロックができる。
-.PP
+.\" E.g., according to the flock(2) man page, FreeBSD since at least 5.3
 kernel 2.0 以降では、 \fBflock\fP()  は、GNU C ライブラリでの \fBfcntl\fP(2)
-を呼び出してのエミュレーションではなく、 それ自体がシステムコールとして実装されている。 これにより正真正銘の BSD での動作が達成される:
-\fBflock\fP()  と \fBfcntl\fP(2)  で適用されるロックの種別には相互作用がなくなり、 \fBflock\fP()
-がデッドロックを検出しなくなる。
+を呼び出してのエミュレーションではなく、 それ自体がシステムコールとして実装されている。 この実装では、 \fBflock\fP()  と
+\fBfcntl\fP(2)  で適用されるロックの種別には相互作用がなくなり、 \fBflock\fP()  がデッドロックを検出しなくなる。 (ただし、最近の
+BSD などいくつかのシステムでは、 \fBflock\fP() と \fBfcntl\fP(2) ロックが互いに影響することが「ある」という点に注意すること。)
+.PP
+.\" commit 5eebde23223aeb0ad2d9e3be6590ff8bbfab0fc2
+バージョン 2.6.11 以前の Linux カーネルでは、 \fBflock\fP() は NFS 上のファイルのロックを行わない
+(つまり、ロックの対象はローカルシステムに限定されていた)。 その代わり、十分に最近のバージョンの Linux とロックをサポートするサーバーであれば、
+\fBfcntl\fP(2) のバイト範囲ロックを使うことができた。 \fBfcntl\fP(2) のバイト範囲ロックは NFS 上で動作する。 Linux
+2.6.12 以降では、NFS クライアントは、 ファイル全体に対するバイト範囲ロックでエミュレートすることで、 \fBflock\fP()
+ロックをサポートしている。 これは、\fBfcntl\fP(2) と \fBflock\fP() ロックが NFS 上では互いに影響しあうことを意味する。
+Linux 2.6.37 以降では、 \fBflock\fP() ロック (と \fBfcntl\fP(2) のバイト範囲ロック)
+をローカルシステムに対するものとして扱う互換性モードが、 カーネルでサポートされている。 \fBnfs\fP(5) の \fIlocal_lock\fP
+オプションの議論を参照。
 .PP
 \fBflock\fP()  アドバイザリロックだけを適用する。したがって、ファイルに適切なアクセス権を 付与していれば、プロセスは \fBflock\fP()
 の使用に無視して、ファイルへの入出力を行うことができる。
@@ -141,6 +150,6 @@ kernel 2.0 以降では、 \fBflock\fP()  は、GNU C ライブラリでの \fBf
 Linux カーネルソース内の \fIDocumentation/filesystems/locks.txt\fP (以前のカーネルでは
 \fIDocumentation/locks.txt\fP)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.65 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。