.\"
.TH FCNTL 2 2015\-01\-22 Linux "Linux Programmer's Manual"
.SH 名前
-fcntl \- ファイルディスクリプタの操作を行う
+fcntl \- ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®æ\93\8dä½\9cã\82\92è¡\8cã\81\86
.SH 書式
.nf
\fB#include <unistd.h>\fP
\fBint fcntl(int \fP\fIfd\fP\fB, int \fP\fIcmd\fP\fB, ... /* \fP\fIarg\fP\fB */ );\fP
.fi
.SH 説明
-\fBfcntl\fP() は、オープンされたファイルディスクリプタ \fIfd\fP に関して下記の操作を行う。操作は \fIcmd\fP によって決まる:
+\fBfcntl\fP() は、オープンされたファイルディスクリプター \fIfd\fP に関して下記の操作を行う。操作は \fIcmd\fP によって決まる:
\fBfcntl\fP() はオプションとして第三引き数をとることができる。 第三引き数が必要
かどうかは \fIcmd\fP により決まる。必要な引き数の型は \fIcmd\fP 名の後ろの括弧内で
下記のいくつかの操作は特定のバージョンの Linux カーネルでのみサポートされている。
ホストカーネルが特定の操作をサポートしているかを確認する推奨の方法は、 \fBfcntl\fP() を所望の \fIcmd\fP 値で呼び出し、 \fBEINVAL\fP
で失敗するかを検査することである。 \fBEINVAL\fP が返った場合、カーネルがこの値を認識していないことを示す。
-.SS ファイルディスクリプタの複製
+.SS ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®è¤\87製
.TP
\fBF_DUPFD\fP (\fIint\fP)
-利用可能なファイルディスクリプタのうち、 \fIarg\fP 以上で最小のものを探し、 \fIfd\fP のコピーとする。これは別の形の \fBdup2\fP(2)
-である。 \fBdup2\fP(2) では指定されたディスクリプタが使われる点が違う。
+å\88©ç\94¨å\8f¯è\83½ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®ã\81\86ã\81¡ã\80\81 \fIarg\fP 以ä¸\8aã\81§æ\9c\80å°\8fã\81®ã\82\82ã\81®ã\82\92æ\8e¢ã\81\97ã\80\81 \fIfd\fP ã\81®ã\82³ã\83\94ã\83¼ã\81¨ã\81\99ã\82\8bã\80\82ã\81\93ã\82\8cã\81¯å\88¥ã\81®å½¢ã\81® \fBdup2\fP(2)
+ã\81§ã\81\82ã\82\8bã\80\82 \fBdup2\fP(2) ã\81§ã\81¯æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8c使ã\82\8fã\82\8cã\82\8bç\82¹ã\81\8cé\81\95ã\81\86ã\80\82
.IP
-成功すると、新しいディスクリプタが返される。
+æ\88\90å\8a\9fã\81\99ã\82\8bã\81¨ã\80\81æ\96°ã\81\97ã\81\84ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cè¿\94ã\81\95ã\82\8cã\82\8bã\80\82
.IP
詳細は \fBdup\fP(2) を参照のこと。
.TP
\fBF_DUPFD_CLOEXEC\fP (\fIint\fP; Linux 2.6.24 以降)
-\fBF_DUPFD\fP と同様だが、それに加えて複製されたディスクリプタに対して close\-on\-exec フラグをセットする。
+\fBF_DUPFD\fP ã\81¨å\90\8cæ§\98ã\81 ã\81\8cã\80\81ã\81\9dã\82\8cã\81«å\8a ã\81\88ã\81¦è¤\87製ã\81\95ã\82\8cã\81\9fã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«å¯¾ã\81\97ã\81¦ close\-on\-exec ã\83\95ã\83©ã\82°ã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\82\8bã\80\82
このフラグを指定することで、プログラムは \fBFD_CLOEXEC\fP フラグをセットするために \fBfcntl\fP() の \fBF_SETFD\fP
操作を追加で行う必要がなくなる。 このフラグがなぜ有用かについては、 \fBopen\fP(2) の \fBO_CLOEXEC\fP の説明を参照のこと。
-.SS ファイルディスクリプタフラグ
-以下のコマンドを使って、ファイルディスクリプタに関連するフラグ を操作することができる。 現在のところ、定義されているフラグは一つだけである:
-\fBFD_CLOEXEC\fP (close\-on\-exec フラグ)。 \fBFD_CLOEXEC\fP ビットが 0 なら、ファイルディスクリプタは
+.SS ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\83\95ã\83©ã\82°
+以ä¸\8bã\81®ã\82³ã\83\9eã\83³ã\83\89ã\82\92使ã\81£ã\81¦ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«é\96¢é\80£ã\81\99ã\82\8bã\83\95ã\83©ã\82° ã\82\92æ\93\8dä½\9cã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82 ç\8f¾å\9c¨ã\81®ã\81¨ã\81\93ã\82\8dã\80\81å®\9a義ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\95ã\83©ã\82°ã\81¯ä¸\80ã\81¤ã\81 ã\81\91ã\81§ã\81\82ã\82\8b:
+\fBFD_CLOEXEC\fP (close\-on\-exec ã\83\95ã\83©ã\82°)ã\80\82 \fBFD_CLOEXEC\fP ã\83\93ã\83\83ã\83\88ã\81\8c 0 ã\81ªã\82\89ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¯
\fBexecve\fP(2) を行ってもオープンされたままだが、そうでない場合はクローズされる。
.TP
\fBF_GETFD\fP (\fIvoid\fP)
-ファイルディスクリプタフラグを読み出す。 \fIarg\fP は無視される。
+ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\83\95ã\83©ã\82°ã\82\92èªã\81¿å\87ºã\81\99ã\80\82 \fIarg\fP ã\81¯ç\84¡è¦\96ã\81\95ã\82\8cã\82\8bã\80\82
.TP
\fBF_SETFD\fP (\fIint\fP)
-ファイルディスクリプタフラグに \fIarg\fP で指定した値を設定する。
+ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\83\95ã\83©ã\82°ã\81« \fIarg\fP ã\81§æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\82\92è¨å®\9aã\81\99ã\82\8bã\80\82
.PP
マルチスレッドプログラムでは、 \fBfcntl\fP() の \fBF_SETFD\fP を使って close\-on\-exec フラグを設定するのと同時に、
別のスレッドで \fBexecve\fP(2) と \fBfork\fP(2) を実行することは、競合条件次第では、
-そのファイルディスクリプタが子プロセスで実行されるプログラムに意図せず見えてしまうという危険性がある。 詳細とこの問題への対処法については
+ã\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cå\90ã\83\97ã\83ã\82»ã\82¹ã\81§å®\9fè¡\8cã\81\95ã\82\8cã\82\8bã\83\97ã\83ã\82°ã\83©ã\83 ã\81«æ\84\8få\9b³ã\81\9bã\81\9aè¦\8bã\81\88ã\81¦ã\81\97ã\81¾ã\81\86ã\81¨ã\81\84ã\81\86å\8d±é\99ºæ\80§ã\81\8cã\81\82ã\82\8bã\80\82 詳細ã\81¨ã\81\93ã\81®å\95\8fé¡\8cã\81¸ã\81®å¯¾å\87¦æ³\95ã\81«ã\81¤ã\81\84ã\81¦ã\81¯
\fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの議論を参照のこと。
.SS ファイル状態フラグ
.\" or
.\" .BR creat (2),
オープンファイル記述 (open file description) には、 ファイル記述毎に設定される状態フラグがいくつかある。これらのフラグは
\fBopen\fP(2) によって初期化され、 \fBfcntl\fP(2) により変更することもできる。これらは、 (\fBdup\fP(2),
-\fBfcntl\fP(F_DUPFD), \fBfork\fP(2) などで) 複製されたファイルディスクリプタ同士は 同じオープンファイル記述を参照する。
+\fBfcntl\fP(F_DUPFD), \fBfork\fP(2) などで) 複製されたファイルディスクリプター同士は 同じオープンファイル記述を参照する。
そのため、 同じファイル状態フラグが共有される。
ファイル状態フラグとその意味は \fBopen\fP(2) で説明されている。
\fBF_SETLK\fP, \fBF_SETLKW\fP, \fBF_GETLK\fP は、レコードロックの獲得/解放/テストのために使用する
(レコードロックは、バイト範囲ロック、ファイルセグメントロック、ファイル領域ロックとも呼ばれる)。 三番目の引き数 \fIlock\fP
-は、以下に示すフィールドを含む構造体へのポインタである (フィールドの順序は関係なく、構造体に他のフィールドがあってもよい)。
+ã\81¯ã\80\81以ä¸\8bã\81«ç¤ºã\81\99ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\82\92å\90«ã\82\80æ§\8bé\80 ä½\93ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8b (ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81®é \86åº\8fã\81¯é\96¢ä¿\82ã\81ªã\81\8fã\80\81æ§\8bé\80 ä½\93ã\81«ä»\96ã\81®ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81\8cã\81\82ã\81£ã\81¦ã\82\82ã\82\88ã\81\84)ã\80\82
.in +4n
.nf
.sp
.TP
\fBF_SETLKW\fP (\fIstruct flock *\fP)
\fBF_SETLK\fP と同様だが、こちらではそのファイルに対して衝突するロックが 適用されていた場合に、そのロックが解放されるのを待つ点が異なる。
-å¾\85ã\81£ã\81¦ã\81\84ã\82\8bé\96\93ã\81«ã\82·ã\82°ã\83\8aã\83«ã\82\92å\8f\97ã\81\91ã\81\9få ´å\90\88ã\81¯ã\80\81ã\82·ã\82¹ã\83\86ã\83 ã\82³ã\83¼ã\83«ã\81¯ä¸æ\96ã\81\95ã\82\8cã\80\81 (ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\81\8cæ\88»ã\81£ã\81\9fç\9b´å¾\8cã\81«) è¿\94ã\82\8aå\80¤ \-1 ã\82\92è¿\94ã\81\99 (ã\81¾ã\81\9f \fIerrno\fP ã\81«
-\fBEINTR\fP が設定される; \fBsignal\fP(7) 参照)。
+å¾\85ã\81£ã\81¦ã\81\84ã\82\8bé\96\93ã\81«ã\82·ã\82°ã\83\8aã\83«ã\82\92å\8f\97ã\81\91ã\81\9få ´å\90\88ã\81¯ã\80\81ã\82·ã\82¹ã\83\86ã\83 ã\82³ã\83¼ã\83«ã\81¯ä¸æ\96ã\81\95ã\82\8cã\80\81 (ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81\8cæ\88»ã\81£ã\81\9fç\9b´å¾\8cã\81«) è¿\94ã\82\8aå\80¤ \-1 ã\82\92è¿\94ã\81\99 (ã\81¾ã\81\9f \fIerrno\fP
+に \fBEINTR\fP が設定される; \fBsignal\fP(7) 参照)。
.TP
\fBF_GETLK\fP (\fIstruct flock *\fP)
このコールの呼び出し時には、 \fIlock\fP にはそのファイルに適用しようとするロックに関する情報が入っている。 ロックを適用できる場合には、
.P
レコードのロックは \fBfork\fP(2) で作成された子プロセスには継承されないが、 \fBexecve\fP(2) の前後では保存される。
.P
-\fBstdio\fP(3) ではバッファリングが行われるので、 stdio 関連の関数ではレコードのロックの使用は回避される; 代わりに
+\fBstdio\fP(3) ã\81§ã\81¯ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\83ªã\83³ã\82°ã\81\8cè¡\8cã\82\8fã\82\8cã\82\8bã\81®ã\81§ã\80\81 stdio é\96¢é\80£ã\81®é\96¢æ\95°ã\81§ã\81¯ã\83¬ã\82³ã\83¼ã\83\89ã\81®ã\83ã\83\83ã\82¯ã\81®ä½¿ç\94¨ã\81¯å\9b\9eé\81¿ã\81\95ã\82\8cã\82\8b; 代ã\82\8fã\82\8aã\81«
\fBread\fP(2) や \fBwrite\fP(2) を使用すること。
上記で説明したレコードロックはプロセスと関連付けられる (以下で説明するオープンファイル記述ロックと異なる点である)。 そのため、
\fBF_OFD_SETLKW\fP (\fIstruct flock *\fP)
\fBF_OFD_SETLK\fP と同様だが、こちらではそのファイルに対して衝突するロックが
適用されていた場合に、そのロックが解放されるのを待つ点が異なる。 待っている間にシグナルを受けた場合は、システムコールは中断され、
-(シグナルハンドラが戻った直後に) 返り値 \-1 を返す (また \fIerrno\fP に \fBEINTR\fP が設定される; \fBsignal\fP(7)
+(ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81\8cæ\88»ã\81£ã\81\9fç\9b´å¾\8cã\81«) è¿\94ã\82\8aå\80¤ \-1 ã\82\92è¿\94ã\81\99 (ã\81¾ã\81\9f \fIerrno\fP ã\81« \fBEINTR\fP ã\81\8cè¨å®\9aã\81\95ã\82\8cã\82\8b; \fBsignal\fP(7)
参照)。
.TP
\fBF_OFD_GETLK\fP (\fIstruct flock *\fP)
\fBF_SETSIG\fP は、I/O が利用可能になったことを示すシグナルを管理するために使用される。
.TP
\fBF_GETOWN\fP (\fIvoid\fP)
-ファイルディスクリプタ \fIfd\fP のイベントに対するシグナル \fBSIGIO\fP および \fBSIGURG\fP を受けているプロセスのプロセスID
+ファイルディスクリプター \fIfd\fP のイベントに対するシグナル \fBSIGIO\fP および \fBSIGURG\fP を受けているプロセスのプロセスID
かプロセスグループを (関数の結果として) 返す。 プロセスID は正の値として返される。 プロセスグループID は負の値として返される
(下記のバグの章を参照)。 \fIarg\fP は無視される。
.TP
\fBF_SETOWN\fP (\fIint\fP)
-ファイルディスクリプタ \fIfd\fP のイベント発生を知らせるシグナル \fBSIGIO\fP や \fBSIGURG\fP を受けるプロセスの プロセス ID
+ファイルディスクリプター \fIfd\fP のイベント発生を知らせるシグナル \fBSIGIO\fP や \fBSIGURG\fP を受けるプロセスの プロセス ID
またはプロセスグループID を \fIarg\fP で指定された ID に設定する。 プロセスID は正の値として指定し、 プロセスグループID
は負の値として指定する。 ほとんどの場合、呼び出し元プロセスは所有者として自分自身を指定する (つまり \fIarg\fP に \fBgetpid\fP(2)
を指定する)。
.\" From glibc.info:
-\fBfcntl\fP() の \fBF_SETFL\fP コマンドを使用してファイルディスクリプタに \fBO_ASYNC\fP
-ç\8a¶æ\85\8bã\83\95ã\83©ã\82°ã\82\92è¨å®\9aã\81\97ã\81\9få ´å\90\88ã\81«ã\81¯ã\80\81ã\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\81¸ã\81® å\85¥å\87ºå\8a\9bã\81\8cå\8f¯è\83½ã\81«ã\81ªã\82\8b度ã\81« \fBSIGIO\fP ã\82·ã\82°ã\83\8aã\83«ã\81\8cé\80\81ã\82\89ã\82\8cã\82\8bã\80\82 \fBF_SETSIG\fP ã\81¯
-\fBSIGIO\fP 以外の別のシグナルの配送を受けられるように するのにも使うことができる。 許可 (permission)
+\fBfcntl\fP() ã\81® \fBF_SETFL\fP ã\82³ã\83\9eã\83³ã\83\89ã\82\92使ç\94¨ã\81\97ã\81¦ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81« \fBO_ASYNC\fP
+ç\8a¶æ\85\8bã\83\95ã\83©ã\82°ã\82\92è¨å®\9aã\81\97ã\81\9få ´å\90\88ã\81«ã\81¯ã\80\81ã\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¸ã\81® å\85¥å\87ºå\8a\9bã\81\8cå\8f¯è\83½ã\81«ã\81ªã\82\8b度ã\81« \fBSIGIO\fP ã\82·ã\82°ã\83\8aã\83«ã\81\8cé\80\81ã\82\89ã\82\8cã\82\8bã\80\82 \fBF_SETSIG\fP
+は \fBSIGIO\fP 以外の別のシグナルの配送を受けられるように するのにも使うことができる。 許可 (permission)
のチェックで失敗した場合には、 シグナルは黙って捨てられる。
\fBF_SETOWN\fP により指定された所有者のプロセス (またはプロセスグループ) に シグナルを送る際には、 \fBkill\fP(2)
.\" .I fd
.\" refers to a terminal device, then SIGIO
.\" signals are sent to the foreground process group of the terminal.
-ファイルディスクリプタがソケットを参照している場合は、 \fBF_SETOWN\fP を使用して、ソケットに帯域外 (out\-of\-band)
+ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cã\82½ã\82±ã\83\83ã\83\88ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ã\80\81 \fBF_SETOWN\fP ã\82\92使ç\94¨ã\81\97ã\81¦ã\80\81ã\82½ã\82±ã\83\83ã\83\88ã\81«å¸¯å\9f\9få¤\96 (out\-of\-band)
データが届いた時に \fBSIGURG\fP シグナルを配送する相手を選択することもできる (\fBSIGURG\fP が送られた場合には \fBselect\fP(2)
がソケットが「特別な状態」にあると報告することだろう)。
\fBSIGIO\fP と \fBSIGURG\fP を送るには \fBF_SETOWN_EX\fP を使うこと。
.TP
\fBF_GETOWN_EX\fP (struct f_owner_ex *) (Linux 2.6.32 以降)
-直前の \fBF_SETOWN_EX\fP 操作で定義された現在のファイルディスクリプタの所有者設定 を返す。情報は \fIarg\fP
+ç\9b´å\89\8dã\81® \fBF_SETOWN_EX\fP æ\93\8dä½\9cã\81§å®\9a義ã\81\95ã\82\8cã\81\9fç\8f¾å\9c¨ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®æ\89\80æ\9c\89è\80\85è¨å®\9a ã\82\92è¿\94ã\81\99ã\80\82æ\83\85å ±ã\81¯ \fIarg\fP
が指す構造体に格納されて返される。構造体は以下の通りである。
.nf
.in +4n
\fBF_SETOWN_EX\fP (struct f_owner_ex *) (Linux 2.6.32 以降)
この操作は \fBF_SETOWN\fP と同様の処理を行う。 この操作を使うと、I/O が利用可能になったことを示すシグナルを、
特定のスレッド、プロセス、プロセスグループに送ることができる ようになる。 呼び出し元は、 \fIarg\fP 経由でシグナルの配送先を指定する。
-\fIarg\fP は \fIf_owner_ex\fP 構造体へのポインタである。 \fItype\fP フィールドは以下のいずれかの値を取り、 この値により
+\fIarg\fP ã\81¯ \fIf_owner_ex\fP æ§\8bé\80 ä½\93ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\80\82 \fItype\fP ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81¯ä»¥ä¸\8bã\81®ã\81\84ã\81\9aã\82\8cã\81\8bã\81®å\80¤ã\82\92å\8f\96ã\82\8aã\80\81 ã\81\93ã\81®å\80¤ã\81«ã\82\88ã\82\8a
\fIpid\fP がどのように解釈されるかが規定される。
.RS
.TP
.TP
\fBF_GETSIG\fP (\fIvoid\fP)
入力や出力が可能になった場合に送るシグナルを (関数の結果として) 返す。 値ゼロは \fBSIGIO\fP を送ることを意味する。 (\fBSIGIO\fP
-を含む) 他の値はいずれも、 \fBSIGIO\fP の代わりに送るシグナル番号を表す。 後者の場合、シグナルハンドラを \fBSA_SIGINFO\fP
-フラグ付きで設定すれば、ハンドラで追加の情報を得ることができる。 \fIarg\fP は無視される。
+ã\82\92å\90«ã\82\80) ä»\96ã\81®å\80¤ã\81¯ã\81\84ã\81\9aã\82\8cã\82\82ã\80\81 \fBSIGIO\fP ã\81®ä»£ã\82\8fã\82\8aã\81«é\80\81ã\82\8bã\82·ã\82°ã\83\8aã\83«ç\95ªå\8f·ã\82\92表ã\81\99ã\80\82 å¾\8cè\80\85ã\81®å ´å\90\88ã\80\81ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\82\92 \fBSA_SIGINFO\fP
+ã\83\95ã\83©ã\82°ä»\98ã\81\8dã\81§è¨å®\9aã\81\99ã\82\8cã\81°ã\80\81ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81§è¿½å\8a ã\81®æ\83\85å ±ã\82\92å¾\97ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82 \fIarg\fP ã\81¯ç\84¡è¦\96ã\81\95ã\82\8cã\82\8bã\80\82
.TP
\fBF_SETSIG\fP (\fIint\fP)
.\"
.\" .B F_SETOWN
.\" for more details.
入力や出力が可能になった場合に送るシグナルを \fIarg\fP に指定された値に設定する。 値ゼロは \fBSIGIO\fP を送ることを意味する。
-(\fBSIGIO\fP を含む) 他の値はいずれも、 \fBSIGIO\fP の代わりに送るシグナル番号を表す。 後者の場合、シグナルハンドラを
-\fBSA_SIGINFO\fP フラグ付きで設定すれば、 ハンドラで追加の情報を得ることができる。
+(\fBSIGIO\fP ã\82\92å\90«ã\82\80) ä»\96ã\81®å\80¤ã\81¯ã\81\84ã\81\9aã\82\8cã\82\82ã\80\81 \fBSIGIO\fP ã\81®ä»£ã\82\8fã\82\8aã\81«é\80\81ã\82\8bã\82·ã\82°ã\83\8aã\83«ç\95ªå\8f·ã\82\92表ã\81\99ã\80\82 å¾\8cè\80\85ã\81®å ´å\90\88ã\80\81ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\82\92
+\fBSA_SIGINFO\fP ã\83\95ã\83©ã\82°ä»\98ã\81\8dã\81§è¨å®\9aã\81\99ã\82\8cã\81°ã\80\81 ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81§è¿½å\8a ã\81®æ\83\85å ±ã\82\92å¾\97ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82
-\fBF_SETSIG\fP にゼロ以外の値を設定し、シグナルハンドラに \fBSA_SIGINFO\fP フラグを設定すると、 (\fBsigaction\fP(2)
-を参照) I/O イベントに関する追加の情報が \fIsiginfo_t\fP 構造体でシグナルハンドラへ渡される。 \fIsi_code\fP
+\fBF_SETSIG\fP ã\81«ã\82¼ã\83以å¤\96ã\81®å\80¤ã\82\92è¨å®\9aã\81\97ã\80\81ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81« \fBSA_SIGINFO\fP ã\83\95ã\83©ã\82°ã\82\92è¨å®\9aã\81\99ã\82\8bã\81¨ã\80\81 (\fBsigaction\fP(2)
+ã\82\92å\8f\82ç\85§) I/O ã\82¤ã\83\99ã\83³ã\83\88ã\81«é\96¢ã\81\99ã\82\8b追å\8a ã\81®æ\83\85å ±ã\81\8c \fIsiginfo_t\fP æ§\8bé\80 ä½\93ã\81§ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81¸æ¸¡ã\81\95ã\82\8cã\82\8bã\80\82 \fIsi_code\fP
フィールドが示すシグナルの原因が \fBSI_SIGIO\fP である場合、 \fIsi_fd\fP
-ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81«ã\81¯ã\82¤ã\83\99ã\83³ã\83\88ã\81«å¯¾å¿\9cã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\82\8bã\80\82 ã\81\9dã\82\8c以å¤\96ã\81®å ´å\90\88ã\81¯ã\80\81ã\81©ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿が利用可能かを示す情報は
-ないので、どのファイルディスクリプタで I/O が可能かを判断するためには 通常の機構 (\fBselect\fP(2), \fBpoll\fP(2),
+ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81«ã\81¯ã\82¤ã\83\99ã\83³ã\83\88ã\81«å¯¾å¿\9cã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\82\8bã\80\82 ã\81\9dã\82\8c以å¤\96ã\81®å ´å\90\88ã\81¯ã\80\81ã\81©ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼が利用可能かを示す情報は
+ã\81ªã\81\84ã\81®ã\81§ã\80\81ã\81©ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ I/O ã\81\8cå\8f¯è\83½ã\81\8bã\82\92å\88¤æ\96ã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\81¯ é\80\9a常ã\81®æ©\9fæ§\8b (\fBselect\fP(2), \fBpoll\fP(2),
\fBO_NONBLOCK\fP を設定した \fBread\fP(2) など) を使用しなければならない。
リアルタイムシグナル (値が \fBSIGRTMIN\fP 以上) を選択している場合は、 同じシグナル番号を持つ複数の I/O
-イベントがキューに入ることがある (キューに入れるかどうかは利用可能なメモリに依存している)。 上記と同様、 \fBSA_SIGINFO\fP
-が設定されている場合、シグナルハンドラのための追加の情報が得られる。
+ã\82¤ã\83\99ã\83³ã\83\88ã\81\8cã\82ã\83¥ã\83¼ã\81«å\85¥ã\82\8bã\81\93ã\81¨ã\81\8cã\81\82ã\82\8b (ã\82ã\83¥ã\83¼ã\81«å\85¥ã\82\8cã\82\8bã\81\8bã\81©ã\81\86ã\81\8bã\81¯å\88©ç\94¨å\8f¯è\83½ã\81ªã\83¡ã\83¢ã\83ªã\83¼ã\81«ä¾\9då\98ã\81\97ã\81¦ã\81\84ã\82\8b)ã\80\82 ä¸\8aè¨\98ã\81¨å\90\8cæ§\98ã\80\81 \fBSA_SIGINFO\fP
+ã\81\8cè¨å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81®ã\81\9fã\82\81ã\81®è¿½å\8a ã\81®æ\83\85å ±ã\81\8cå¾\97ã\82\89ã\82\8cã\82\8bã\80\82
.\" See fs/fcntl.c::send_sigio_to_task() (2.4/2.6) sources -- MTK, Apr 05
以下の点に注意すること。 Linux では一つのプロセスに対してキューに入れられるリアルタイム シグナルの数に上限が設けられており
(Linix 2.4 以降で利用可能) \fBF_SETLEASE\fP は、 \fIfd\fP
が参照するオープンファイル記述に対して新しいリースを設定するのに使用される。 \fBF_GETLEASE\fP は、 \fIfd\fP
が参照するオープンファイル記述に対して設定されている 現在のリースを取得するのに使用される。 ファイルのリースにより、 あるプロセス ("lease
-breaker") がそのファイルディスクリプタが参照 しているファイルに対して \fBopen\fP(2) や \fBtruncate\fP(2)
+breaker") ã\81\8cã\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cå\8f\82ç\85§ ã\81\97ã\81¦ã\81\84ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\81«å¯¾ã\81\97ã\81¦ \fBopen\fP(2) ã\82\84 \fBtruncate\fP(2)
を行おうとした際に、リースを保持しているプロセス ("lease holder") へ (シグナルの配送による) 通知が行われるという機構が提供される。
.TP
\fBF_SETLEASE\fP (\fIint\fP)
.\" See the man-pages-2.09 Changelog for further info.
読み出しリースを取得する。これにより、 そのファイルが書き込み用にオープンされたり、ファイルが切り詰められた場合に、
呼び出し元のプロセスに通知が行われるようになる。 読み出しリースを設定できるのは、読み出し専用でオープンされている
-ファイルディスクリプタに対してのみである。
+ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«å¯¾ã\81\97ã\81¦ã\81®ã\81¿ã\81§ã\81\82ã\82\8bã\80\82
.TP
\fBF_WRLCK\fP
書き込みリースを取得する。これにより、 (読み出し用か書き込み用にかかわらず) そのファイルがオープンされたり、
ファイルが切り詰められた場合に、呼び出し元のプロセスに通知が行われるようになる。
-書き込みリースは、そのファイルに対するオープンされたファイルディスクリプタが 他にない場合にのみ設定できる。
+æ\9b¸ã\81\8dè¾¼ã\81¿ã\83ªã\83¼ã\82¹ã\81¯ã\80\81ã\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81«å¯¾ã\81\99ã\82\8bã\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\8c ä»\96ã\81«ã\81ªã\81\84å ´å\90\88ã\81«ã\81®ã\81¿è¨å®\9aã\81§ã\81\8dã\82\8bã\80\82
.TP
\fBF_UNLCK\fP
そのファイルからリースを削除する。
.RE
.P
リースはオープンファイル記述に対して関連付けられる (\fBopen\fP(2) 参照)。 つまり、 (\fBfork\fP(2) や \fBdup\fP(2)
-ã\81ªã\81©ã\81«ã\82\88ã\82\8aä½\9cæ\88\90ã\81\95ã\82\8cã\81\9f) ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\81®è¤\87製ã\81¯å\90\8cã\81\98ã\83ªã\83¼ã\82¹ã\82\92å\8f\82ç\85§ã\81\97ã\80\81 è¤\87製ã\82\82å\90«ã\82\81ã\81\9fã\81©ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿を使ってもこのリースを変更したり
-解放したりできる。 また、これらのファイルディスクリプタのいずれかに対して \fBF_UNLCK\fP
-操作が明示的に実行された場合や、すべてのファイルディスクリプタが 閉じられた場合にも、リースは解放される。
+ã\81ªã\81©ã\81«ã\82\88ã\82\8aä½\9cæ\88\90ã\81\95ã\82\8cã\81\9f) ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®è¤\87製ã\81¯å\90\8cã\81\98ã\83ªã\83¼ã\82¹ã\82\92å\8f\82ç\85§ã\81\97ã\80\81 è¤\87製ã\82\82å\90«ã\82\81ã\81\9fã\81©ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼を使ってもこのリースを変更したり
+解æ\94¾ã\81\97ã\81\9fã\82\8aã\81§ã\81\8dã\82\8bã\80\82 ã\81¾ã\81\9fã\80\81ã\81\93ã\82\8cã\82\89ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®ã\81\84ã\81\9aã\82\8cã\81\8bã\81«å¯¾ã\81\97ã\81¦ \fBF_UNLCK\fP
+æ\93\8dä½\9cã\81\8cæ\98\8e示ç\9a\84ã\81«å®\9fè¡\8cã\81\95ã\82\8cã\81\9få ´å\90\88ã\82\84ã\80\81ã\81\99ã\81¹ã\81¦ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8c é\96\89ã\81\98ã\82\89ã\82\8cã\81\9få ´å\90\88ã\81«ã\82\82ã\80\81ã\83ªã\83¼ã\82¹ã\81¯è§£æ\94¾ã\81\95ã\82\8cã\82\8bã\80\82
.P
リースの取得は通常のファイル (regular file) に対してのみ可能である。 非特権プロセスがリースを取得できるのは、UID (所有者)
がプロセスの ファイルシステム UID と一致するファイルに対してだけである。 \fBCAP_LEASE\fP
ケーパビリティを持つプロセスは任意のファイルに対してリースを取得できる。
.TP
\fBF_GETLEASE\fP (\fIvoid\fP)
-ファイルディスクリプタ \fIfd\fP に対して設定されているリースの種別を取得する。 \fBF_RDLCK\fP, \fBF_WRLCK\fP, \fBF_UNLCK\fP
-のいずれかが返される。 \fBF_RDLCK\fP, \fBF_WRLCK\fP はそれぞれ、読み出しリース、書き込みリースが設定されていることを示し、
-\fBF_UNLCK\fP はリースが何も設定されていないことを示す。 \fIarg\fP は無視される。
+ファイルディスクリプター \fIfd\fP に対して設定されているリースの種別を取得する。 \fBF_RDLCK\fP, \fBF_WRLCK\fP,
+\fBF_UNLCK\fP のいずれかが返される。 \fBF_RDLCK\fP, \fBF_WRLCK\fP
+はそれぞれ、読み出しリース、書き込みリースが設定されていることを示し、 \fBF_UNLCK\fP はリースが何も設定されていないことを示す。 \fIarg\fP
+は無視される。
.PP
あるプロセス ("lease breaker") が \fBF_SETLEASE\fP で設定されたリースと矛
盾するような \fBopen\fP(2) や \fBtruncate\fP(2) を実行した場合、 そのシステム
(デフォルトでは \fBSIGIO\fP) を送って通知を行う。 lease holder はこのシグ
ナルを受信したときにはきちんと対応すべきである。 具体的には、別のプロセ
スがそのファイルにアクセスするための準備として 必要な後片付け (例えば、
-キャッシュされたバッファのフラッシュ) を すべて行ってから、そのファイル
+ã\82ã\83£ã\83\83ã\82·ã\83¥ã\81\95ã\82\8cã\81\9fã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81®ã\83\95ã\83©ã\83\83ã\82·ã\83¥) ã\82\92 ã\81\99ã\81¹ã\81¦è¡\8cã\81£ã\81¦ã\81\8bã\82\89ã\80\81ã\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«
のリースの削除または格下げを行う。リースを削除をするには、 \fIarg\fP に
\fBF_UNLCK\fP を指定して \fBF_SETLEASE\fP を実行する。lease holder がファイル
に書き込みリースを保持していて、 lease breaker が読み出し用にそのファイ
一度リースの削除か格下げが自発的もしくは強制的に行われると、 lease breaker がまだシステムコールを再開していない場合には、 カーネルが
lease breaker のシステムコールの続行を許可する。
-lease breaker が実行した \fBopen\fP(2) や \fBtruncate\fP(2) が停止中にシグナルハンドラにより中断された場合、
+lease breaker ã\81\8cå®\9fè¡\8cã\81\97ã\81\9f \fBopen\fP(2) ã\82\84 \fBtruncate\fP(2) ã\81\8cå\81\9cæ¢ä¸ã\81«ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81«ã\82\88ã\82\8aä¸æ\96ã\81\95ã\82\8cã\81\9få ´å\90\88ã\80\81
そのシステムコールは \fBEINTR\fP エラーで失敗するが、上で述べた他の処理は そのまま行われる。 \fBopen\fP(2) や
\fBtruncate\fP(2) が停止中に lease breaker がシグナルにより kill された場合、 上で述べた他の処理はそのまま行われる。
lease breaker が \fBopen\fP(2) を呼ぶ際に \fBO_NONBLOCK\fP フラグを指定した場合、そのシステムコールは
lease holder への通知に使われるデフォルトのシグナルは \fBSIGIO\fP だが、 \fBfcntl\fP() の \fBF_SETSIG\fP
コマンドで変更することができる。 \fBF_SETSIG\fP コマンドが実行され (\fBSIGIO\fP を指定された場合も含む)、 \fBSA_SIGINFO\fP
-ã\83\95ã\83©ã\82°ä»\98ã\81\8dã\81§ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\81\8cè¨å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81«ã\81¯ã\80\81 ã\83\8fã\83³ã\83\89ã\83©の第二引き数として \fIsiginfo_t\fP 構造体が渡され、この引き数の
-\fIsi_fd\fP フィールドには別のプロセスがアクセスしたリース設定済みファイルの ディスクリプタが入っている
+ã\83\95ã\83©ã\82°ä»\98ã\81\8dã\81§ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81\8cè¨å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81«ã\81¯ã\80\81 ã\83\8fã\83³ã\83\89ã\83©ã\83¼の第二引き数として \fIsiginfo_t\fP 構造体が渡され、この引き数の
+\fIsi_fd\fP ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81«ã\81¯å\88¥ã\81®ã\83\97ã\83ã\82»ã\82¹ã\81\8cã\82¢ã\82¯ã\82»ã\82¹ã\81\97ã\81\9fã\83ªã\83¼ã\82¹è¨å®\9aæ¸\88ã\81¿ã\83\95ã\82¡ã\82¤ã\83«ã\81® ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\82\8b
(この機能は複数のファイルに対してリースを設定する場合に有用である)。
.SS "ファイルやディレクトリの変更の通知 (dnotify)"
.TP
.PD
.RE
.IP
-(上記の定義を利用するには、\fIどの\fP ヘッダファイルをインクルードするより前に、
+(ä¸\8aè¨\98ã\81®å®\9a義ã\82\92å\88©ç\94¨ã\81\99ã\82\8bã\81«ã\81¯ã\80\81\fIã\81©ã\81®\fP ã\83\98ã\83\83ã\83\80ã\83¼ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\82¤ã\83³ã\82¯ã\83«ã\83¼ã\83\89ã\81\99ã\82\8bã\82\88ã\82\8aå\89\8dã\81«ã\80\81
\fB_GNU_SOURCE\fP 機能検査マクロを定義しなければならない。)
ディレクトリの変更通知は通常「一回限り (one\-shot)」であり、 アプリケーション側でその後さらに通知を受信したい場合は
通知はシグナルの配送で行われる。 デフォルトのシグナルは \fBSIGIO\fP だが、 \fBfcntl\fP() の \fBF_SETSIG\fP
コマンドで変更することができる。 (\fBSIGIO\fP はキューイングされない標準のシグナルの一つである点に注意。
リアルタイムシグナルを使うように変更すると、 複数の通知がそのプロセス宛のキューに入ることがあることを意味する。) 後者の場合には、
-(\fBSA_SIGINFO\fP ã\83\95ã\83©ã\82°ä»\98ã\81\8dã\81§ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\81\8cè¨å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81«ã\81¯) ã\83\8fã\83³ã\83\89ã\83©の第二引き数として \fIsiginfo_t\fP
-構造体が渡され、この構造体の \fIsi_fd\fP フィールドには通知の行われたファイルディスクリプタが入っている
+(\fBSA_SIGINFO\fP ã\83\95ã\83©ã\82°ä»\98ã\81\8dã\81§ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81\8cè¨å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81«ã\81¯) ã\83\8fã\83³ã\83\89ã\83©ã\83¼の第二引き数として \fIsiginfo_t\fP
+æ§\8bé\80 ä½\93ã\81\8c渡ã\81\95ã\82\8cã\80\81ã\81\93ã\81®æ§\8bé\80 ä½\93ã\81® \fIsi_fd\fP ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81«ã\81¯é\80\9aç\9f¥ã\81®è¡\8cã\82\8fã\82\8cã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\82\8b
(この機能は複数のディレクトリに対して通知を設定する場合に有用である)。
特に \fBDN_MULTISHOT\fP を使う場合は、通知にはリアルタイムシグナルを使うべきである。
それは、リアルタイムシグナルを使うことで、複数の通知をキューに入れる ことができるからである。
\fB注意:\fP 新しくアプリケーションを書く際には、(カーネル 2.6.13 以降で利用可能となった) \fIinotify\fP
-ã\82¤ã\83³ã\82¿ã\83\95ã\82§ã\83¼ã\82¹ã\82\92使ç\94¨ã\81\99ã\81¹ã\81\8dã\81§ã\81\82ã\82\8bã\80\82 \fIinotify\fP ã\81¯ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\82¤ã\83\99ã\83³ã\83\88ã\81®é\80\9aç\9f¥ã\82\92å\8f\96å¾\97ã\81\99ã\82\8bã\81\9fã\82\81ã\81® ã\81\9aã\81£ã\81¨å\84ªã\82\8cã\81\9fã\82¤ã\83³ã\82¿フェースである。
+ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\82\92使ç\94¨ã\81\99ã\81¹ã\81\8dã\81§ã\81\82ã\82\8bã\80\82 \fIinotify\fP ã\81¯ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\82¤ã\83\99ã\83³ã\83\88ã\81®é\80\9aç\9f¥ã\82\92å\8f\96å¾\97ã\81\99ã\82\8bã\81\9fã\82\81ã\81® ã\81\9aã\81£ã\81¨å\84ªã\82\8cã\81\9fã\82¤ã\83³ã\82¿ã\83¼フェースである。
\fBinotify\fP(7) を参照。
.SS パイプの容量の変更
.TP
された上限より大きな値に設定しようとした場合は、エラー \fBEPERM\fP が
発生する。特権プロセス (\fBCAP_SYS_RESOURCE\fP ケーパビリティを持つ
プロセス) はこの上限を上書きできる。
-パイプにバッファを割り当てる場合、実装側の都合に応じて、
+ã\83\91ã\82¤ã\83\97ã\81«ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\92å\89²ã\82\8aå½\93ã\81¦ã\82\8bå ´å\90\88ã\80\81å®\9fè£\85å\81´ã\81®é\83½å\90\88ã\81«å¿\9cã\81\98ã\81¦ã\80\81
カーネルは \fIarg\fP よりも大きな容量を割り当ててもよい。
実際に設定された大きさが関数の返り値として返される。
-パイプの容量を現在データを格納するのに使用されているバッファの
+ã\83\91ã\82¤ã\83\97ã\81®å®¹é\87\8fã\82\92ç\8f¾å\9c¨ã\83\87ã\83¼ã\82¿ã\82\92æ ¼ç´\8dã\81\99ã\82\8bã\81®ã\81«ä½¿ç\94¨ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81®
サイズよりも小さくしようとした場合は、エラー \fBEBUSY\fP が発生する。
.TP
\fBF_GETPIPE_SZ\fP (\fIvoid\fP; Linux 2.6.35 以降)
したがって、 この seal は通常は他の seal のいずれかと組み合わせて使用される。 この seal は \fBwrite\fP(2) と
\fBfallocate\fP(2) (\fBFALLOC_FL_PUNCH_HOLE\fP フラグとの組み合わせの場合のみ) に影響する。 この seal
が設定されると、 これらの呼び出しは \fBEPERM\fP で失敗する。 また、 \fBmmap\fP(2)
-による新しい書き込み可能な共有メモリマッピングの作成も \fBEPERM\fP で失敗する。
+ã\81«ã\82\88ã\82\8bæ\96°ã\81\97ã\81\84æ\9b¸ã\81\8dè¾¼ã\81¿å\8f¯è\83½ã\81ªå\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼ã\83\9eã\83\83ã\83\94ã\83³ã\82°ã\81®ä½\9cæ\88\90ã\82\82 \fBEPERM\fP ã\81§å¤±æ\95\97ã\81\99ã\82\8bã\80\82
\fBfcntl\fP(2) の \fBF_ADD_SEALS\fP で \fBF_SEAL_WRITE\fP を設定しようとした場合、
書き込み可能な共有マッピングが存在すると \fBEBUSY\fP で失敗する。 このようなマッピングは、 この seal
成功した場合の返り値は操作の種類により違う:
.TP 0.9i
\fBF_DUPFD\fP
-新しいディスクリプタを返す。
+æ\96°ã\81\97ã\81\84ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82
.TP
\fBF_GETFD\fP
-ファイルディスクリプタフラグの値
+ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\83\95ã\83©ã\82°ã\81®å\80¤
.TP
\fBF_GETFL\fP
ファイル状態フラグの値
.TP
\fBF_GETLEASE\fP
-ファイルディスクリプタに対して保持されているリースの種別を返す。
+ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«å¯¾ã\81\97ã\81¦ä¿\9dæ\8c\81ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83ªã\83¼ã\82¹ã\81®ç¨®å\88¥ã\82\92è¿\94ã\81\99ã\80\82
.TP
\fBF_GETOWN\fP
-ディスクリプタの所有者を返す。
+ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®æ\89\80æ\9c\89è\80\85ã\82\92è¿\94ã\81\99ã\80\82
.TP
\fBF_GETSIG\fP
読み込みや書き出しが可能になった時に送られるシグナルの値、もしくは 伝統的な \fBSIGIO\fP 動作の場合にはゼロを返す。
他のプロセスが保持しているロックによって操作が禁止されている。
.TP
\fBEAGAIN\fP
-そのファイルは他のプロセスによってメモリマップされているため、 操作が禁止されている。
+ã\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯ä»\96ã\81®ã\83\97ã\83ã\82»ã\82¹ã\81«ã\82\88ã\81£ã\81¦ã\83¡ã\83¢ã\83ªã\83¼ã\83\9eã\83\83ã\83\97ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\81\9fã\82\81ã\80\81 æ\93\8dä½\9cã\81\8cç¦\81æ¢ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\80\82
.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
\fBEBADF\fP
-\fIcmd\fP が \fBF_SETLK\fP または \fBF_SETLKW\fP だったが、対象のファイルディスクリプタのオープンモードが
+\fIcmd\fP ã\81\8c \fBF_SETLK\fP ã\81¾ã\81\9fã\81¯ \fBF_SETLKW\fP ã\81 ã\81£ã\81\9fã\81\8cã\80\81対象ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®ã\82ªã\83¼ã\83\97ã\83³ã\83¢ã\83¼ã\83\89ã\81\8c
必要となるロックの型にマッチしていない。
.TP
\fBEBUSY\fP
\fIcmd\fP が \fBF_SETPIPE_SZ\fP で、 \fIarg\fP で指定されたパイプの新しい容量がパイプが、
-現在パイプにあるデータを格納するのに使用されているバッファ容量よりも小さい。
+現在パイプにあるデータを格納するのに使用されているバッファー容量よりも小さい。
.TP
\fBEBUSY\fP
\fIcmd\fP が \fBF_ADD_SEALS\fP で、 \fIarg\fP に \fBF_SEAL_WRITE\fP が含まれており、 \fIfd\fP
0 が指定されなかった。
.TP
\fBEMFILE\fP
-\fIcmd\fP が \fBF_DUPFD\fPで、 プロセスがすでに最大数までファイルディスクリプタをオープンしている。
+\fIcmd\fP ã\81\8c \fBF_DUPFD\fPã\81§ã\80\81 ã\83\97ã\83ã\82»ã\82¹ã\81\8cã\81\99ã\81§ã\81«æ\9c\80大æ\95°ã\81¾ã\81§ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92ã\82ªã\83¼ã\83\97ã\83³ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82
.TP
\fBENOLCK\fP
オープンされているロックの数が多過ぎて、ロックテーブルがいっぱいである。 または remote locking protocol (例えば NFS
.\" indicate that ANY negative PGID value will cause F_GETOWN
.\" to misinterpret the return as an error. Some other architectures
.\" seem to have the same range check as i386.
-いくつかのアーキテクチャ (特に i386) における Linux システムコールの慣習
+いくつかのアーキテクチャー (特に i386) における Linux システムコールの慣習
のため以下の制限が存在する。
\fBF_GETOWN\fP が返す (負の) プロセスグループID が \-1 から \-4095 の範囲に入った場合、
glibc はこの返り値をシステムコールでエラーが起こったと間違って解釈してしまう。
\fBF_GETOWN\fP を実装することで、カーネルの \fBF_GETOWN\fP の問題を見えないようにしている。
.SS F_SETOWN
.\"
-Linux 2.4 以前では、非特権プロセスが \fBF_SETOWN\fP を使って、ソケットのファイルディスクリプタの所有者に 呼び出し元以外のプロセス
+Linux 2.4 以å\89\8dã\81§ã\81¯ã\80\81é\9d\9eç\89¹æ¨©ã\83\97ã\83ã\82»ã\82¹ã\81\8c \fBF_SETOWN\fP ã\82\92使ã\81£ã\81¦ã\80\81ã\82½ã\82±ã\83\83ã\83\88ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®æ\89\80æ\9c\89è\80\85ã\81« å\91¼ã\81³å\87ºã\81\97å\85\83以å¤\96ã\81®ã\83\97ã\83ã\82»ã\82¹
(やプロセスグループ) を指定すると 発生するバグがある。この場合、 呼び出し元が所有者として指定したプロセス (やプロセスグループ) に
シグナルを送る許可を持っていたとしても、 \fBfcntl\fP() が \-1 を返し \fIerrno\fP に \fBEPERM\fP を設定することがある。
-このエラーが返ったにもかかわらず、ファイルディスクリプタの所有者 は設定され、シグナルはその所有者に送られる。
+ã\81\93ã\81®ã\82¨ã\83©ã\83¼ã\81\8cè¿\94ã\81£ã\81\9fã\81«ã\82\82ã\81\8bã\81\8bã\82\8fã\82\89ã\81\9aã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®æ\89\80æ\9c\89è\80\85 ã\81¯è¨å®\9aã\81\95ã\82\8cã\80\81ã\82·ã\82°ã\83\8aã\83«ã\81¯ã\81\9dã\81®æ\89\80æ\9c\89è\80\85ã\81«é\80\81ã\82\89ã\82\8cã\82\8bã\80\82
.SS デッドロックの検出
.\"
\fBF_SETLKW\fP 要求を処理する際にカーネルが使用するデッドロック検出アルゴリズムは、 false negative になる場合