• R/O
  • HTTP
  • SSH
  • HTTPS

LDP_man-pages: 提交


Commit MetaInfo

修订版441c68b3a9276a5e86520f3b5ebca1c9d96a715c (tree)
时间2015-01-11 03:42:52
作者Akihiro MOTOKI <amotoki@gmai...>
CommiterAkihiro MOTOKI

Log Message

Complete fanotify_init.2, fanotify.7

更改概述

差异

--- /dev/null
+++ b/draft/man2/fanotify_init.2
@@ -0,0 +1,166 @@
1+.\" Copyright (C) 2013, Heinrich Schuchardt <xypron.glpk@gmx.de>
2+.\"
3+.\" %%%LICENSE_START(VERBATIM)
4+.\" Permission is granted to make and distribute verbatim copies of this
5+.\" manual provided the copyright notice and this permission notice are
6+.\" preserved on all copies.
7+.\"
8+.\" Permission is granted to copy and distribute modified versions of
9+.\" this manual under the conditions for verbatim copying, provided that
10+.\" the entire resulting derived work is distributed under the terms of
11+.\" a permission notice identical to this one.
12+.\"
13+.\" Since the Linux kernel and libraries are constantly changing, this
14+.\" manual page may be incorrect or out-of-date. The author(s) assume.
15+.\" no responsibility for errors or omissions, or for damages resulting.
16+.\" from the use of the information contained herein. The author(s) may.
17+.\" not have taken the same level of care in the production of this.
18+.\" manual, which is licensed free of charge, as they might when working.
19+.\" professionally.
20+.\"
21+.\" Formatted or processed versions of this manual, if unaccompanied by
22+.\" the source, must acknowledge the copyright and authors of this work.
23+.\" %%%LICENSE_END
24+.\"*******************************************************************
25+.\"
26+.\" This file was generated with po4a. Translate the source file.
27+.\"
28+.\"*******************************************************************
29+.TH FANOTIFY_INIT 2 2014\-10\-02 Linux "Linux Programmer's Manual"
30+.SH 名前
31+fanotify_init \- fanotify グループを作成し、初期化する
32+.SH 書式
33+\fB#include <fcntl.h>\fP
34+.br
35+\fB#include <sys/fanotify.h>\fP
36+.sp
37+\fBint fanotify_init(unsigned int \fP\fIflags\fP\fB, unsigned int
38+\fP\fIevent_f_flags\fP\fB);\fP
39+.SH 説明
40+fanotify API の概要については \fBfanotify\fP(7) を参照。
41+.PP
42+\fBfanotify_init\fP() は新しい fanotify グループを初期化し、
43+このグループに関連付けられたイベントキューに対するファイルディスクリプターを返す。
44+.PP
45+このファイルディスクリプターは、 \fBfanotify_mark\fP(2) の呼び出しで fanotify イベントが作成されるファイル、 ディレクトリ、
46+マウントを指定するのに使用できる。 \fBfanotify_mark\fP(2) で指定したファイル、 これらのイベントは、
47+このファイルディスクリプターからの読み出しで受信する。 いくつかのイベントは、 ファイルがアクセスされたことを示す単なる情報である。
48+他のいくつかのイベントは、 別のアプリケーションがファイルやディレクトリにアクセスする許可を与えるかを判定するのに使用される。
49+ファイルシステムオブジェクトへのアクセス許可イベントについては、 承認結果をこのファイルディスクリプターに書き込む。
50+.PP
51+複数のプログラムが同時に fanotify インターフェースを使って同じファイルを同時に監視することができる。
52+.PP
53+現在の実装では、 ユーザーあたりの fanotify グループ数は 128 に制限されている。 この制限は上書きすることができない。
54+.PP
55+\fBfanotify_init\fP() を呼び出すには \fBCAP_SYS_ADMIN\fP ケーパビリティーが必要である。 この制約は将来のバージョンの
56+API で緩和される可能性がある。 そのため、 以下に示すケーパビリティーチェックのいくつかが実装されている。
57+.PP
58+\fIflags\fP 引き数は、 イベントを待つアプリケーションの通知クラスを定義する複数ビットのフィールドである。 これに加えて、
59+このファイルディスクリプターの動作を示す 1 ビットのフィールドがある。
60+.PP
61+アクセス許可イベントを監視しているプログラムが複数いる場合、 通知クラスを使って監視するプログラムのイベント受信順序が管理される。
62+.PP
63+以下の通知クラスのいずれか一つだけを \fIflags\fP に指定できる。
64+.TP
65+\fBFAN_CLASS_PRE_CONTENT\fP
66+この値は、 ファイルがアクセスされたことを通知するイベントと、 ファイルへのアクセスするかの許可の判断を求めるイベントを受信することを示す。
67+これはイベント受信者がファイルが最終的なデータを格納する前にそのファイルにアクセスする必要がある場合に使用される。
68+この通知クラスは例えば階層型ストレージ管理などで使用される。
69+.TP
70+\fBFAN_CLASS_CONTENT\fP
71+この値は、 ファイルがアクセスされたことを通知するイベントと、 ファイルへのアクセスするかの許可の判断を求めるイベントを受信することを示す。
72+これはイベント受信者がファイルに最終的なデータが格納された際にそのファイルにアクセスする必要がある場合に使用される。
73+この通知クラスは例えばウイルス検知プログラムなどで使用される。
74+.TP
75+\fBFAN_CLASS_NOTIF\fP
76+これはデフォルト値である。 この値を指定する必要はない。 この値は、 ファイルがアクセスされたことを通知するイベントの受信だけを行うことを意味する。
77+ファイルがアクセスする前にアクセス許可の判定を行うことはできない。
78+.PP
79+異なる通知クラスの受信者は \fBFAN_CLASS_PRE_CONTENT\fP, \fBFAN_CLASS_CONTENT\fP,
80+\fBFAN_CLASS_NOTIF\fP の順序でイベントを受信する。 同じ通知クラスの受信者での通知順序は不定である。
81+.PP
82+\fIflags\fP には以下のビットを追加でセットすることができる。
83+.TP
84+\fBFAN_CLOEXEC\fP
85+close\-on\-exec フラグ (\fBFD_CLOEXEC\fP) を新しいファイルディスクリプターにセットする。 \fBopen\fP(2) の
86+\fBO_CLOEXEC\fP フラグの説明を参照。
87+.TP
88+\fBFAN_NONBLOCK\fP
89+ノンブロッキングフラグ (\fBO_NONBLOCK\fP) をそのファイルディスクリプターで有効にする。
90+このファイルディスクリプターからの読み出しは停止しない。 その代わり、 読みだし可能なデータが何もない場合、 \fBread\fP(2) はエラー
91+\fBEAGAIN\fP で失敗する。
92+.TP
93+\fBFAN_UNLIMITED_QUEUE\fP
94+そのイベントキューの 16384 イベントの上限を削除する。 このフラグを使用するには \fBCAP_SYS_ADMIN\fP ケーパビリティーが必要である。
95+.TP
96+\fBFAN_UNLIMITED_MARKS\fP
97+8192 マークの上限を削除する。 このフラグを使用するには \fBCAP_SYS_ADMIN\fP ケーパビリティーが必要である。
98+.PP
99+\fIevent_f_flags\fP 引き数は fanotify イベントが作成されるオープンファイル記述にセットされるファイル状態フラグを定義する。
100+これらのフラグの詳細については \fBopen\fP(2) の \fIflags\fP 値の説明を参照のこと。 \fIevent_f_flags\fP
101+にはアクセスモードのビットを複数入れることができる。 このフィールドには以下の値も指定することができる。
102+.TP
103+\fBO_RDONLY\fP
104+読み出しアクセスのみを許可する。
105+.TP
106+\fBO_WRONLY\fP
107+書き込みアクセスのみを許可する。
108+.TP
109+\fBO_RDWR\fP
110+読み出しと書き込みの両方を許可する。
111+.PP
112+他のビットも \fIevent_f_flags\fP もセットすることができる。 役立つであろう値は以下である。
113+.TP
114+\fBO_LARGEFILE\fP
115+2 GB を超えるファイルのサポートを有効にする。 このフラグのセットに失敗すると、 32 ビットシステムで fanotify
116+グループが監視するラージファイルをオープンしようとした際に \fBEOVERFLOW\fP エラーとなる。
117+.TP
118+\fBO_CLOEXEC\fP
119+このファイルディスクリプターで close\-on\-exec フラグを有効にする。 このフラグが役立つ理由については \fBopen\fP(2) の
120+\fBO_CLOEXEC\fP フラグの説明を参照。
121+.PP
122+\fBO_APPEND\fP, \fBO_DSYNC\fP, \fBO_NOATIME\fP, \fBO_NONBLOCK\fP, \fBO_SYNC\fP も指定することができる。
123+\fIevent_f_flags\fP にこれ以外のフラグを指定すると、 エラー \fBEINVAL\fP が起こる (ただし、バグを参照)。
124+.SH 返り値
125+成功すると \fBfanotify_init\fP() は新しいファイルディスクリプターを返す。 エラーの場合、 \-1 を返し、 \fIerrno\fP
126+にエラーを示す値を設定する。
127+.SH エラー
128+.TP
129+\fBEINVAL\fP
130+\fIflags\fP か \fIevent_f_flags\fP に無効な値が渡された。 \fBFAN_ALL_INIT_FLAGS\fP で \fIflags\fP
131+に指定できる全ビットが定義されている。
132+.TP
133+\fBEMFILE\fP
134+このユーザーの fanotify グループ数が 128 を超過した。
135+.TP
136+\fBENOMEM\fP
137+通知グループへのメモリー割り当てが失敗した。
138+.TP
139+\fBENOSYS\fP
140+このカーネルは \fBfanotify_init\fP() を実装していない。 fanotify API が利用できるのは、 カーネルが
141+\fBCONFIG_FANOTIFY\fP を有効にして作成されている場合だけである。
142+.TP
143+\fBEPERM\fP
144+呼び出し元が \fBCAP_SYS_ADMIN\fP ケーパビリティーを持っていないので、操作が許可されない。
145+.SH バージョン
146+\fBfanotify_init\fP() は Linux カーネルのバージョン 2.6.36 で導入され、 バージョン 2.6.37 で有効になった。
147+.SH 準拠
148+このシステムコールは Linux 独自である。
149+.SH バグ
150+Linux 3.17 時点では、 以下のバグが存在する。
151+.IP * 3
152+.\" FIXME . Patch proposed: https://lkml.org/lkml/2014/9/24/967
153+\fBO_CLOEXEC\fP が \fIevent_f_flags\fP に指定された場合、 無視される。
154+.PP
155+バージョン 3.14 より前の Linux カーネルには以下のバグが存在する。
156+.IP * 3
157+.\" Fixed by commit 48149e9d3a7e924010a0daab30a6197b7d7b6580
158+\fIevent_f_flags\fP 引き数に無効なフラグがないかのチェックが行われない。 \fBFMODE_EXEC\fP
159+などの内部での使用のみが意図されたフラグを指定することができ、 その場合 fanotify
160+ファイルディスクリプターからの読み出し時に返されるファイルディスクリプターにそのフラグがセットされる。
161+.SH 関連項目
162+\fBfanotify_mark\fP(2), \fBfanotify\fP(7)
163+.SH この文書について
164+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.76 の一部
165+である。プロジェクトの説明とバグ報告に関する情報は
166+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- a/draft/man2/inotify_add_watch.2
+++ b/draft/man2/inotify_add_watch.2
@@ -46,21 +46,21 @@ inotify_add_watch \- 初期化済み inotify インスタンスに監視対象
4646 .SH 説明
4747 \fBinotify_add_watch\fP() は、 \fIpathname\fP で指定された位置にあるファイルを監視する監視アイテム (watch)
4848 の新規追加、 または既存の監視アイテムの変更を行う。 呼び出し元は、監視対象のファイルに対する読み出し許可を 持っていなければならない。 \fIfd\fP
49-引き数は、変更を行う監視対象リスト (watch list) を持つ inotify インスタンスを参照するファイルディスクリプタである。
49+引き数は、変更を行う監視対象リスト (watch list) を持つ inotify インスタンスを参照するファイルディスクリプターである。
5050 \fIpathname\fP のどのイベントを監視するかは、引き数のビットマスク \fImask\fP で指定する。 \fImask\fP
5151 に設定できるビットの説明については \fBinotify\fP(7) を参照のこと。
5252
5353 \fBinotify_add_watch\fP() の呼び出しが成功すると、 \fIpathname\fP に対応するファイルシステムオブジェクトに対する、
54-一意な監視対象ディスクリプタ (watch descriptor) を、 対象の inotify インスタンスに対して返す。
54+一意な監視対象ディスクリプター (watch descriptor) を、 対象の inotify インスタンスに対して返す。
5555 そのファイルシステムオブジェクトが対象の inotify インスタンスによって以前に監視されていない場合には、
56-監視対象ディスクリプタは新規に割り当てられる。 ファイルシステムオブジェクトが (おそらく同じオブジェクトに対する異なるリンク経由で)
57-すでに監視されている場合には、 既存の監視に対するディスクリプタが返される。
56+監視対象ディスクリプターは新規に割り当てられる。 ファイルシステムオブジェクトが (おそらく同じオブジェクトに対する異なるリンク経由で)
57+すでに監視されている場合には、 既存の監視に対するディスクリプターが返される。
5858
59-これ以降に inotify ファイルディスクリプタから \fBread\fP(2) を行うと、監視対象ディスクリプタが返される。 これらの
59+これ以降に inotify ファイルディスクリプターから \fBread\fP(2) を行うと、監視対象ディスクリプターが返される。 これらの
6060 \fBread\fP() を行うと、ファイルシステムイベントを示す \fIinotify_event\fP 構造体が読み出される (\fBinotify\fP(7)
61-参照)。この構造体内の監視対象ディスクリプタにより、 どのオブジェクトでそのイベントが発生したかを特定できる。
61+参照)。この構造体内の監視対象ディスクリプターにより、 どのオブジェクトでそのイベントが発生したかを特定できる。
6262 .SH 返り値
63-成功すると、 \fBinotify_add_watch\fP() は非負の監視対象ディスクリプタを返す。 エラーの場合、\-1 を返し、 \fIerrno\fP
63+成功すると、 \fBinotify_add_watch\fP() は非負の監視対象ディスクリプターを返す。 エラーの場合、\-1 を返し、 \fIerrno\fP
6464 を適切に設定する。
6565 .SH エラー
6666 .TP
@@ -68,13 +68,13 @@ inotify_add_watch \- 初期化済み inotify インスタンスに監視対象
6868 指定されたファイルに対する読み出しアクセスが許可されていない。
6969 .TP
7070 \fBEBADF\fP
71-指定されたファイルディスクリプタが有効ではない。
71+指定されたファイルディスクリプターが有効ではない。
7272 .TP
7373 \fBEFAULT\fP
7474 \fIpathname\fP が指すアドレスがプロセスがアクセスできるアドレス空間外である。
7575 .TP
7676 \fBEINVAL\fP
77-指定されたイベントマスクに有効なイベントが含まれていない。 もしくは \fIfd\fP が inotify ファイルディスクリプタではない。
77+指定されたイベントマスクに有効なイベントが含まれていない。 もしくは \fIfd\fP が inotify ファイルディスクリプターではない。
7878 .TP
7979 \fBENAMETOOLONG\fP
8080 \fIpathname\fP が長過ぎる。
--- a/draft/man2/inotify_init.2
+++ b/draft/man2/inotify_init.2
@@ -52,7 +52,7 @@ inotify_init, inotify_init1 \- inotify インスタンスを初期化する
5252 inotify API の概要については \fBinotify\fP(7) を参照。
5353
5454 \fBinotify_init\fP() は、新規の inotify インスタンスを初期化し、作成された inotify イベントキュー
55-に対応するファイルディスクリプタを返す。
55+に対応するファイルディスクリプターを返す。
5656
5757 \fBinotify_init1\fP() は、 \fIflags\fP が 0 の場合、 \fBinotify_init\fP() と同じである。 \fIflags\fP
5858 に以下の値をビット毎の論理和 (OR) で指定することで、 異なる動作をさせることができる。
@@ -63,10 +63,10 @@ inotify API の概要については \fBinotify\fP(7) を参照。
6363 を追加で呼び出す必要がなくなる。
6464 .TP
6565 \fBIN_CLOEXEC\fP
66-新しいファイル・ディスクリプターに対して close\-on\-exec (\fBFD_CLOEXEC\fP) フラグをセットする。
66+新しいファイルディスクリプターに対して close\-on\-exec (\fBFD_CLOEXEC\fP) フラグをセットする。
6767 このフラグが役に立つ理由については、 \fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの説明を参照のこと。
6868 .SH 返り値
69-成功すると、これらのシステムコールは新しいファイルディスクリプタを返す。 エラーの場合、\-1 を返し、 \fIerrno\fP をエラーを示す値に設定する。
69+成功すると、これらのシステムコールは新しいファイルディスクリプターを返す。 エラーの場合、\-1 を返し、 \fIerrno\fP をエラーを示す値に設定する。
7070 .SH エラー
7171 .TP
7272 \fBEINVAL\fP
@@ -76,7 +76,7 @@ inotify API の概要については \fBinotify\fP(7) を参照。
7676 inotify インスタンスの総数がユーザ単位の上限に達していた。
7777 .TP
7878 \fBENFILE\fP
79-inotify インスタンスの総数がシステムの上限に達していた。
79+inotify ファイルディスクリプターの総数がシステムの上限に達していた。
8080 .TP
8181 \fBENOMEM\fP
8282 カーネルメモリが十分になかった。
--- a/draft/man2/inotify_rm_watch.2
+++ b/draft/man2/inotify_rm_watch.2
@@ -44,20 +44,20 @@ inotify_rm_watch \- inotify インスタンスから既存の監視アイテム
4444 .\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=7040
4545 \fBint inotify_rm_watch(int \fP\fIfd\fP\fB, int \fP\fIwd\fP\fB);\fP
4646 .SH 説明
47-\fBinotify_rm_watch\fP() は、監視対象ディスクリプタ (watch descriptor) \fIwd\fP に対応する監視アイテムを、
48-ファイルディスクリプタ \fIfd\fP に対応する inotify インスタンスから削除する。
47+\fBinotify_rm_watch\fP() は、監視対象ディスクリプター (watch descriptor) \fIwd\fP
48+に対応する監視アイテムを、 ファイルディスクリプター \fIfd\fP に対応する inotify インスタンスから削除する。
4949
50-監視対象を削除すると、 この監視対象ディスクリプタに対して \fBIN_IGNORED\fP イベントが生成される (\fBinotify\fP(7) 参照)。
50+監視対象を削除すると、 この監視対象ディスクリプターに対して \fBIN_IGNORED\fP イベントが生成される (\fBinotify\fP(7) 参照)。
5151 .SH 返り値
5252 成功すると、\fBinotify_rm_watch\fP() は 0 を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP
5353 をエラーの原因を示す値に設定する。
5454 .SH エラー
5555 .TP
5656 \fBEBADF\fP
57-\fIfd\fP が有効なファイルディスクリプタではない。
57+\fIfd\fP が有効なファイルディスクリプターではない。
5858 .TP
5959 \fBEINVAL\fP
60-監視対象ディスクリプタ \fIwd\fP が有効でない。もしくは、 \fIfd\fP が inotify ファイルディスクリプタではない。
60+監視対象ディスクリプター \fIwd\fP が有効でない。もしくは、 \fIfd\fP が inotify ファイルディスクリプターではない。
6161 .SH バージョン
6262 inotify は Linux カーネル 2.6.13 に組み込まれた。
6363 .SH 準拠
--- /dev/null
+++ b/draft/man7/fanotify.7
@@ -0,0 +1,528 @@
1+.\" Copyright (C) 2013, Heinrich Schuchardt <xypron.glpk@gmx.de>
2+.\" and Copyright (C) 2014, Michael Kerrisk <mtk.manpages@gmail.com>
3+.\"
4+.\" %%%LICENSE_START(VERBATIM)
5+.\" Permission is granted to make and distribute verbatim copies of this
6+.\" manual provided the copyright notice and this permission notice are
7+.\" preserved on all copies.
8+.\"
9+.\" Permission is granted to copy and distribute modified versions of
10+.\" this manual under the conditions for verbatim copying, provided that
11+.\" the entire resulting derived work is distributed under the terms of
12+.\" a permission notice identical to this one.
13+.\"
14+.\" Since the Linux kernel and libraries are constantly changing, this
15+.\" manual page may be incorrect or out-of-date. The author(s) assume.
16+.\" no responsibility for errors or omissions, or for damages resulting.
17+.\" from the use of the information contained herein. The author(s) may.
18+.\" not have taken the same level of care in the production of this.
19+.\" manual, which is licensed free of charge, as they might when working.
20+.\" professionally.
21+.\"
22+.\" Formatted or processed versions of this manual, if unaccompanied by
23+.\" the source, must acknowledge the copyright and authors of this work.
24+.\" %%%LICENSE_END
25+.\"*******************************************************************
26+.\"
27+.\" This file was generated with po4a. Translate the source file.
28+.\"
29+.\"*******************************************************************
30+.TH FANOTIFY 7 2014\-12\-31 Linux "Linux Programmer's Manual"
31+.SH 名前
32+fanotify \- ファイルシステムイベントを監視する
33+.SH 説明
34+fanotify API はファイルシステムイベントの通知と横取り機能 (interception) を提供する。
35+ユースケースとしては、ウイルススキャンや階層型ストレージの管理などがある。 現在のところ、限定的なイベントのみがサポートされている。 特に、作成
36+(create)、削除 (delete)、移動 (move) イベントがサポートされていない (これらのイベントを通知する API の詳細については
37+\fBinotify\fP(7) を参照)。
38+
39+\fBinotify\fP(7) API と比較して追加されている機能としては、 マウントされたファイルシステムの全オブジェクトを監視する機能、
40+アクセス許可の判定を行う機能、 他のアプリケーションによるアクセスの前にファイルを読み出したり変更したりする機能がある。
41+
42+この API では以下のシステムコールを使用する: \fBfanotify_init\fP(2), \fBfanotify_mark\fP(2),
43+\fBread\fP(2), \fBwrite\fP(2), \fBclose\fP(2)。
44+.SS "fanotify_init(), fanotify_mark() と通知グループ"
45+\fBfanotify_init\fP(2) システムコールは fanotify 通知グループを作成、初期化し、
46+この通知グループを参照するファイルディスクリプターを返す。
47+.PP
48+fanotify 通知グループはカーネル内部のオブジェクトで、 イベントが作成されるファイル、 ディレクトリ、 マウントポイントのリストを保持する。
49+.PP
50+fanotify 通知グループの各エントリーには 2 つのビットマスクがある。 \fImark\fP マスクと \fIignore\fP マスクである。 mark
51+マスクはどのファイル操作についてイベントを作成するかを定義する。 ignore マスクはどの操作についてイベントを作成しないかを定義する。 これらの 2
52+種類のマスクがあることで、 マウントポイントやディレクトリに対してイベントの受信を mark しておきつつ、
53+同時にそのマウントポイントやディレクトリ配下の特定のオブジェクトに対するイベントを無視する、 といったことができる。
54+.PP
55+\fBfanotify_mark\fP(2) システムコールは、ファイル、ディレクトリ、マウントを通知グループに追加し、 どのイベントを報告 (もしくは無視)
56+するかを指定する。 また、このようなエントリーの削除、変更も行う。
57+.PP
58+ignore マスクの考えられる使用方法はファイルキャッシュに対してである。
59+ファイルキャッシュに関して興味のあるイベントは、ファイルの変更とファイルのクローズである。 それゆえ、
60+キャッシュされたディレクトリやマウントポイントは、 これらのイベントを受信するようにマークされる。
61+ファイルが変更されたという最初のイベントを受信した後は、 対応するキャッシュエントリーは無効化される。 そのファイルがクローズされるまでは、
62+このファイルに対する変更イベントは興味のない情報となる。 したがって、 変更イベントを ignore マスクに追加することができる。
63+クローズイベントを受信すると、 変更イベントを ignore イベントから削除し、 ファイルキャッシュエントリーを更新することができる。
64+.PP
65+fanotify 通知グループのエントリーは、 ファイルやディレクトリでは inode 番号経由で参照され、 マウントではマウント ID
66+経由で参照される。 ファイルやディレクトリの名前が変更されたり、移動されたりした場合も、 関連するエントリーはそのまま残る。
67+ファイルやディレクトリが削除されたり、マウントがアンマウントされたりした場合には、 対応するエントリーは削除される。
68+.SS イベントキュー
69+通知グループにより監視されているファイルシステムオブジェクトでイベントが発生すると、 fanotify システムはイベントを生成し、
70+そのイベントはキューにまとめられる。 これらのイベントは、 \fBfanotify_init\fP(2) が返した fanotify
71+ファイルディスクリプターから (\fBread\fP(2) などを使って) 読み出すことができる。
72+
73+2 種類のイベントが生成される。 \fInotification\fP (通知) イベントと \fIpermission\fP (アクセス許可) イベントである。
74+通知イベントは単なる情報通知であり、 イベントで渡されたファイルディスクリプターをクローズする場合 (下記参照) を除き、
75+受信したアプリケーションでアクションを取る必要はない。 アクセス許可イベントは、
76+受信したアプリケーションがファイルアクセスの許可を承認するかを判定する必要がある。 この場合、
77+受信者はアクセスが許可されたか否かを決定する応答を書き込まなければならない。
78+
79+イベントは、 読み出されると、 fanotify グループのイベントキューから削除される。 読み出されたアクセス許可イベントは、 fanotify
80+ファイルディスクリプターにアクセス許可の判定が書き込まれるか、 fanotify ファイルディスクリプターがクローズされるまで、 fanotify
81+グループの内部のリストに保持される。
82+.SS "fanotify イベントの読み出し"
83+\fBfanotify_init\fP(2) が返したファイルディスクリプターに対する \fBread\fP(2) を呼び出しは、
84+(\fBfanotify_init\fP(2) の呼び出しでフラグ \fBFAN_NONBLOCK\fP を指定しなかった場合)
85+ファイルイベントが起こるか、呼び出しがシグナルによって割り込まれる (\fBsignal\fP(7) 参照) まで停止する。
86+
87+\fBread\fP(2) が成功すると、読み出しバッファーには以下の構造体が 1 つ以上格納される。
88+
89+.in +4n
90+.nf
91+struct fanotify_event_metadata {
92+ __u32 event_len;
93+ __u8 vers;
94+ __u8 reserved;
95+ __u16 metadata_len;
96+ __aligned_u64 mask;
97+ __s32 fd;
98+ __s32 pid;
99+};
100+.fi
101+.in
102+.PP
103+性能上の理由から、複数のイベントを一度の \fBread\fP(2) で取得できるように大きめのバッファーサイズ (例えば 4096 バイト)
104+を使用することを推奨する。
105+
106+\fBread\fP(2) の返り値はバッファーに格納されたバイト数である。 エラーの場合は \-1 が返される (ただし、バグも参照)。
107+
108+\fIfanotify_event_metadata\fP 構造体のフィールドは以下のとおりである。
109+.TP
110+\fIevent_len\fP
111+これは、 このイベントのデータ長であり、バッファー内の次のイベントへのオフセットである。 現在の実装では、 \fIevent_len\fP の値は常に
112+\fBFAN_EVENT_METADATA_LEN\fP である。 しかしながら、 API は将来可変長の構造体を返すことができるように設計されている。
113+.TP
114+\fIvers\fP
115+このフィールドには構造体のバージョン番号が入る。 実行時に返された構造体がコンパイル時の構造体と一致しているかを検査するには、 この値を
116+\fBFANOTIFY_METADATA_VERSION\fP を比較すること。 一致しない場合、 アプリケーションはその fanotify
117+ファイルディスクリプターを使用するのを諦めるべきである。
118+.TP
119+\fIreserved\fP
120+このフィールドは使用されない。
121+.TP
122+\fImetadata_len\fP
123+この構造体の長さである。 このフィールドは、 イベント種別単位のオプションヘッダーの実装を扱うために導入された。
124+現在の実装ではこのようなオプションヘッダーは存在しない。
125+.TP
126+\fImask\fP
127+イベントを示すビットマスクである (下記参照)
128+.TP
129+\fIfd\fP
130+これはアクセスされたオブジェクトに対するオープンされたファイルディスクリプターである。 または、キューのオーバーフローが発生した場合には
131+\fBFAN_NOFD\fP が入る。 ファイルディスクリプターは監視対象のファイルやディレクトリの内容にアクセスするのに使用できる。
132+読み出したアプリケーションは責任を持ってこのファイルディスクリプターをクローズしなければならない。
133+.IP
134+\fBfanotify_init\fP(2) を呼び出す際、
135+呼び出し元はこのファイルディスクリプターに対応するオープンファイル記述にセットされた様々なファイル状態フラグを (\fIevent_f_flags\fP
136+引き数を使って) 指定することができる。 さらに、 (カーネル内部の) \fBFMODE_NONOTIFY\fP
137+ファイル状態フラグがオープンファイル記述にセットされる。 このフラグは fanotify イベントの生成を抑制する。 したがって、 fanotify
138+イベントの受信者がこのファイルディスクリプターを使って通知されたファイルやディレクトリにアクセスした際に、 これ以上イベントが作成されなくなる。
139+.TP
140+\fIpid\fP
141+これはイベントが発生する原因となったプロセス ID である。 fanotify イベントを監視しているプログラムは、 この PID を
142+\fBgetpid\fP(2) が返す PID と比較することで、 イベントが監視しているプログラム自身から発生したかどうか、
143+別のプロセスによるファイルアクセスにより発生したか、を判定できる。
144+.PP
145+\fImask\fP のビットマスクは、1 つのファイルシステムオブジェクトに対してどのイベントが発生したかを示す。
146+監視対象のファイルシステムオブジェクトに複数のイベントが発生した場合は、 このマスクに複数のビットがセットされることがある。 特に、
147+同じファイルシステムオブジェクトに対する連続するイベントが同じプロセスから生成された場合には、 一つのイベントにまとめられることがある。 例外として、
148+2 つのアクセス許可イベントが一つのキューエントリーにまとめられることは決してない。
149+.PP
150+\fImask\fP でセットされている可能性のあるビットは以下のとおりである。
151+.TP
152+\fBFAN_ACCESS\fP
153+ファイルやディレクトリがアクセスされた (読み出しが行われた) (ただし、「バグ」の節も参照)。
154+.TP
155+\fBFAN_OPEN\fP
156+ファイルやディレクトリがオープンされた。
157+.TP
158+\fBFAN_MODIFY\fP
159+ファイルやディレクトリが変更された。
160+.TP
161+\fBFAN_CLOSE_WRITE\fP
162+書き込み用 (\fBO_WRONLY\fP か \fBO_RDWR\fP) にオープンされたファイルがクローズされた。
163+.TP
164+\fBFAN_CLOSE_NOWRITE\fP
165+読み出し用 (\fBO_RDONLY\fP) にオープンされたファイルがクローズされた。
166+.TP
167+\fBFAN_Q_OVERFLOW\fP
168+イベントキューが 16384 エントリーの上限を超過した。 この上限は \fBfanotify_init\fP(2) 呼び出し時に
169+\fBFAN_UNLIMITED_QUEUE\fP フラグを指定することで上書きできる。
170+.TP
171+\fBFAN_ACCESS_PERM\fP
172+アプリケーションが例えば \fBread\fP(2) や \fBreaddir\fP(2) などを使ってファイルやディレクトリを読み出そうとした。
173+このイベントを読み出したプログラムは、 そのファイルシステムオブジェクトへのアクセス許可を承認するかを判定し (下記で説明するとおり)
174+応答を書き込まなければならない。
175+.TP
176+\fBFAN_OPEN_PERM\fP
177+アプリケーションがファイルやディレクトリをオープンしようとした。 このイベントを読み出したプログラムは、
178+そのファイルシステムオブジェクトのオープンを承認するかを判定し (下記で説明するとおり) 応答を書き込まなければならない。
179+.PP
180+クローズイベントを確認するために以下のビットマスクを使うことができる。
181+.TP
182+\fBFAN_CLOSE\fP
183+ファイルがクローズされた。 以下の同義語である。
184+
185+ FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE
186+.PP
187+fanotify ファイルディスクリプターからの \fBread\fP(2) が返した fanotify
188+イベントメタデータを含むバッファーに対して繰り返しを行うため、 以下のマクロが提供されている。
189+.TP
190+\fBFAN_EVENT_OK(meta, len)\fP
191+このマクロは、 バッファー \fImeta\fP の残りの長さ \fIlen\fP を、 メタデータ構造体の長さとバッファーの最初のメタデータ構造体の
192+\fIevent_len\fP フィールドと比較して検査する。
193+.TP
194+\fBFAN_EVENT_NEXT(meta, len)\fP
195+このマクロは、 \fImeta\fP が指すメタデータ構造体の \fIevent_len\fP フィールドで示された長さを使って、 \fImeta\fP
196+の次のメタデータ構造体のアドレスを計算する。 \fIlen\fP はバッファーに現在残っているメタデータのバイト数である。 このマクロは \fImeta\fP
197+の次のメタデータ構造体へのポインターを返し、 スキップされたメタデータ構造体のバイト数だけ \fIlen\fP を減算する (つまり、 \fIlen\fP から
198+\fImeta\->event_len\fP を引き算する)。
199+.PP
200+また、 以下のマクロも用意されている。
201+.TP
202+\fBFAN_EVENT_METADATA_LEN\fP
203+.\"
204+このマクロは \fIfanotify_event_metadata\fP 構造体の (バイト単位の) サイズを返す。
205+返される値はイベントメタデータの最小値である (現在のところ、これが唯一のサイズである)。
206+.SS "fanotify ファイルディスクリプターのイベントを監視する"
207+fanotify イベントが発生すると、 \fBepoll\fP(7), \fBpoll\fP(2), \fBselect\fP(2) に fanotify
208+ファイルディスクリプターが渡された場合には、そのファイルディスクリプターが読み出し可能であると通知される。
209+.SS アクセス許可イベントの取り扱い
210+アクセス許可イベントでは、 アプリケーションは以下の形式の構造体を fanotify ファイルディスクリプターに \fBwrite\fP(2)
211+しなければならない。
212+
213+.in +4n
214+.nf
215+struct fanotify_response {
216+ __s32 fd;
217+ __u32 response;
218+};
219+.fi
220+.in
221+.PP
222+この構造体のフィールドは以下のとおりである。
223+.TP
224+\fIfd\fP
225+このフィールドは \fIfanotify_event_metadata\fP 構造体で返されたファイルディスクリプターである。
226+.TP
227+\fIresponse\fP
228+このフィールドはアクセス許可を承認するかどうかを示す。 値は、このファイル操作を許可する \fBFAN_ALLOW\fP か、 このファイル操作を拒否する
229+\fBFAN_DENY\fP のいずれかでなければならない。
230+.PP
231+アクセスを拒否した場合、 アクセスを要求したアプリケーションは \fBEPERM\fP エラーを受け取ることになる。
232+.SS "fanotify ファイルディスクリプターのクローズ"
233+.PP
234+fanotify 通知グループを参照するすべてのファイルディスクリプターがクローズされると、 fanotify グループは解放され、
235+カーネルが再利用できるようにそのリソースは解放される。 \fBclose\fP(2) の際に、 処理中であったアクセス許可イベントには許可が設定される。
236+.SS /proc/[pid]/fdinfo
237+ファイル \fI/proc/[pid]/fdinfo/[fd]\fP には、 プロセス \fIpid\fP のファイルディスクリプター \fIfd\fP の
238+fanotify マークに関する情報が格納される。 詳細はカーネルのソースファイル
239+\fIDocumentation/filesystems/proc.txt\fP を参照。
240+.SH エラー
241+通常の \fBread\fP(2) のエラーに加え、 fanotify ファイルディスクリプターから読み出しを行った際に以下のエラーが発生することがある。
242+.TP
243+\fBEINVAL\fP
244+バッファーがイベントを保持するには小さすぎる。
245+.TP
246+\fBEMFILE\fP
247+オープンしたファイル数のプロセス毎の上限に達した。 \fBgetrlimit\fP(2) の \fBRLIMIT_NOFILE\fP の説明を参照。
248+.TP
249+\fBENFILE\fP
250+オープンされたファイル数のシステム全体の上限に達した。 \fBproc\fP(5) の \fI/proc/sys/fs/file\-max\fP を参照。
251+.TP
252+\fBETXTBSY\fP
253+\fBfanotify_init\fP(2) の呼び出し時に \fBO_RDWR\fP か \fBO_WRONLY\fP が \fIevent_f_flags\fP
254+引き数に指定されており、 現在実行中の監視対象のファイルに対してイベントが発生した際に、 このエラーが \fBread\fP(2) から返される。
255+.PP
256+通常の \fBwrite\fP(2) のエラーに加え、 fanotify ファイルディスクリプターに書き込みを行った際に以下のエラーが発生することがある。
257+.TP
258+\fBEINVAL\fP
259+fanotify アクセス許可がカーネルの設定で有効になっていない。 応答構造体の \fIresponse\fP 値が無効である。
260+.TP
261+\fBENOENT\fP
262+応答構造体のファイルディスクリプター \fIfd\fP が無効である。 このエラーはアクセス許可イベントに対する応答がすでに書き込まれている際に発生する。
263+.SH バージョン
264+fanotify API は Linux カーネルのバージョン 2.6.36 で導入され、 バージョン 2.6.37 で有効にされた。 fdinfo
265+のサポートはバージョン 3.8 で追加された。
266+.SH 準拠
267+fanotify API は Linux 独自のものである。
268+.SH 注意
269+fanotify API が利用できるのは、 カーネルが \fBCONFIG_FANOTIFY\fP 設定オプションを有効にして作成されている場合だけである。
270+また、 fanotify アクセス許可の処理が利用できるのは \fBCONFIG_FANOTIFY_ACCESS_PERMISSIONS\fP
271+設定オプションが有効になっている場合だけである。
272+.SS 制限と警告
273+fanotify が報告するのはユーザー空間プログラムがファイルシステム API 経由で行ったイベントだけである。 その結果、 fanotify
274+ではネットワークファイルシステム上で発生したリモートイベントは捕捉できない。
275+.PP
276+inotify API は \fBmmap\fP(2), \fBmsync\fP(2), \fBmunmap\fP(2)
277+により起こったファイルのアクセスと変更を報告しない。
278+.PP
279+ディレクトリのイベントは、ディレクトリ自身がオープン、読み出し、クローズされた場合にしか作成されない。
280+マークされたディレクトリでの子要素の追加、削除、変更では、監視対象のディレクトリ自身へのイベントは作成されない。
281+.PP
282+fanotify のディレクトリの監視は再帰的ではない。 ディレクトリ内のサブディレクトリを監視するには、
283+追加で監視用のマークを作成しなければならない。 (ただし、 fanotify API
284+では、サブディレクトリが監視対象としてマークされているディレクトリに作成された際に検出する手段は提供されていない点に注意すること。)
285+マウントの監視を使うことで、 ディレクトリツリー全体を監視することができる。
286+.PP
287+ベントキューはオーバーフローすることがある。 この場合、 イベントは失われる。
288+.SH バグ
289+Linux 3.17 時点では、 以下のバグが存在する。
290+.IP * 3
291+Linux では、ファイルシステムオブジェクトは複数のパスでアクセス可能である。 例えば、 ファイルシステムの一部は \fBmount\fP(8) の
292+\fI\-\-bind\fP オプションを使って再マウントされることがある。 マークされたマウントの監視者は、
293+同じマウントを使ったファイルオブジェクトについてのみイベント通知を受ける。 それ以外のイベントは通知されない。
294+.IP *
295+\fBfallocate\fP(2) の呼び出しでは fanotify イベントが作成されない。
296+.IP *
297+.\" FIXME . A patch was proposed.
298+イベントが生成された際に、 そのファイルのファイルディスクリプターを渡す前に、 イベントを受信するプロセスのユーザー ID
299+がそのファイルに対する読み出し/書き込み許可があるかの確認は行われない。 非特権ユーザーによって実行されたプログラムに \fBCAP_SYS_ADMIN\fP
300+ケーパビリティーがセットされている場合には、 このことはセキュリティーリスクとなる。
301+.IP *
302+\fBread\fP(2) の呼び出しが fanotify キューから複数のイベントを処理している際に、 エラーが発生した場合、
303+返り値はエラーが発生する前までにユーザー空間バッファーに正常にコピーされたイベントの合計長となる。 返り値は \-1 にならず、 \fIerrno\fP
304+もセットされない。 したがって、 読み出しを行うアプリケーションではエラーを検出する方法はない。
305+.SH 例
306+以下のプログラムは fanotify API の使用法を示すものである。 コマンドライン引き数で渡されたマウントポイントを監視し、 種別が
307+\fBFAN_PERM_OPEN\fP と \fBFAN_CLOSE_WRITE\fP のイベントを待つ。 アクセス許可イベントが発生には、
308+\fBFAN_ALLOW\fP 応答を返す。
309+.PP
310+以下の出力例はファイル \fI/home/user/temp/notes\fP を編集した際に記録されたものである。 ファイルをオープンする前に
311+\fBFAN_OPEN_PERM\fP イベントが発生している。 ファイルをクローズした後に \fBFAN_CLOSE_WRITE\fP イベントが発生している。
312+エンターキーをユーザーが押すと、 このプログラムの実行は終了する。
313+.SS 出力例
314+.in +4n
315+.nf
316+# ./fanotify_example /home
317+Press enter key to terminate.
318+Listening for events.
319+FAN_OPEN_PERM: File /home/user/temp/notes
320+FAN_CLOSE_WRITE: File /home/user/temp/notes
321+
322+Listening for events stopped.
323+.fi
324+.in
325+.SS プログラムソース
326+.nf
327+#define _GNU_SOURCE /* O_LARGEFILE の定義を得るために必要 */
328+#include <errno.h>
329+#include <fcntl.h>
330+#include <limits.h>
331+#include <poll.h>
332+#include <stdio.h>
333+#include <stdlib.h>
334+#include <sys/fanotify.h>
335+#include <unistd.h>
336+
337+/* ファイルディスクリプター 'fd' から読み出しできる全 fanotify イベントを読み出す */
338+
339+static void
340+handle_events(int fd)
341+{
342+ const struct fanotify_event_metadata *metadata;
343+ struct fanotify_event_metadata buf[200];
344+ ssize_t len;
345+ char path[PATH_MAX];
346+ ssize_t path_len;
347+ char procfd_path[PATH_MAX];
348+ struct fanotify_response response;
349+
350+ /* fanotify ファイルディスクリプターからイベントが読み出せる間はループする */
351+
352+ for(;;) {
353+
354+ /* イベントを読み出す */
355+
356+ len = read(fd, (void *) &buf, sizeof(buf));
357+ if (len == \-1 && errno != EAGAIN) {
358+ perror("read");
359+ exit(EXIT_FAILURE);
360+ }
361+
362+ /* 読み出せるデータの最後に達しているかチェックする */
363+
364+ if (len <= 0)
365+ break;
366+
367+ /* バッファーの最初のイベントを参照する */
368+
369+ metadata = buf;
370+
371+ /* バッファー内の全イベントを処理する */
372+
373+ while (FAN_EVENT_OK(metadata, len)) {
374+
375+ /* 実行時とコンパイル時の構造体が一致するか確認する */
376+
377+ if (metadata\->vers != FANOTIFY_METADATA_VERSION) {
378+ fprintf(stderr,
379+ "Mismatch of fanotify metadata version.\en");
380+ exit(EXIT_FAILURE);
381+ }
382+
383+ /* metadata\->fd には、キューのオーバーフローを示す FAN_NOFD か、
384+ ファイルディスクリプター (負でない整数) のいずれかが入っている。
385+ ここではキューのオーバーフローは無視している。 */
386+
387+ if (metadata\->fd >= 0) {
388+
389+ /* オープン許可イベントを処理する */
390+
391+ if (metadata\->mask & FAN_OPEN_PERM) {
392+ printf("FAN_OPEN_PERM: ");
393+
394+ /* ファイルのオープンを許可する */
395+
396+ response.fd = metadata\->fd;
397+ response.response = FAN_ALLOW;
398+ write(fd, &response,
399+ sizeof(struct fanotify_response));
400+ }
401+
402+ /* 書き込み可能ファイルのクローズイベントを処理する */
403+
404+ if (metadata\->mask & FAN_CLOSE_WRITE)
405+ printf("FAN_CLOSE_WRITE: ");
406+
407+ /* アクセスされたファイルのパス名を取得し表示する */
408+
409+ snprintf(procfd_path, sizeof(procfd_path),
410+ "/proc/self/fd/%d", metadata\->fd);
411+ path_len = readlink(procfd_path, path,
412+ sizeof(path) \- 1);
413+ if (path_len == \-1) {
414+ perror("readlink");
415+ exit(EXIT_FAILURE);
416+ }
417+
418+ path[path_len] = '\e0';
419+ printf("File %s\en", path);
420+
421+ /* イベントのファイルディスクリプターをクローズする */
422+
423+ close(metadata\->fd);
424+ }
425+
426+ /* 次のイベントに進む */
427+
428+ metadata = FAN_EVENT_NEXT(metadata, len);
429+ }
430+ }
431+}
432+
433+int
434+main(int argc, char *argv[])
435+{
436+ char buf;
437+ int fd, poll_num;
438+ nfds_t nfds;
439+ struct pollfd fds[2];
440+
441+ /* マウントポイントが指定されたか確認する */
442+
443+ if (argc != 2) {
444+ fprintf(stderr, "Usage: %s MOUNT\en", argv[0]);
445+ exit(EXIT_FAILURE);
446+ }
447+
448+ printf("Press enter key to terminate.\en");
449+
450+ /* fanotify API にアクセスするためのファイルディスクリプターを作成する */
451+
452+ fd = fanotify_init(FAN_CLOEXEC | FAN_CLASS_CONTENT | FAN_NONBLOCK,
453+ O_RDONLY | O_LARGEFILE);
454+ if (fd == \-1) {
455+ perror("fanotify_init");
456+ exit(EXIT_FAILURE);
457+ }
458+
459+ /* 指定されたマウントに対して以下を監視するようにマークを付ける:
460+ \- ファイルのオープン前のアクセス許可イベント
461+ \- 書き込み可能なファイルディスクリプターのクローズ後の
462+ 通知イベント */
463+
464+ if (fanotify_mark(fd, FAN_MARK_ADD | FAN_MARK_MOUNT,
465+ FAN_OPEN_PERM | FAN_CLOSE_WRITE, AT_FDCWD,
466+ argv[1]) == \-1) {
467+ perror("fanotify_mark");
468+ exit(EXIT_FAILURE);
469+ }
470+
471+ /* ポーリングの準備 */
472+
473+ nfds = 2;
474+
475+ /* コンソールの入力 */
476+
477+ fds[0].fd = STDIN_FILENO;
478+ fds[0].events = POLLIN;
479+
480+ /* fanotify の入力 */
481+
482+ fds[1].fd = fd;
483+ fds[1].events = POLLIN;
484+
485+ /* イベントの発生を待つループ */
486+
487+ printf("Listening for events.\en");
488+
489+ while (1) {
490+ poll_num = poll(fds, nfds, \-1);
491+ if (poll_num == \-1) {
492+ if (errno == EINTR) /* シグナルに割り込まれた場合 */
493+ continue; /* poll() を再開する */
494+
495+ perror("poll"); /* 予期しないエラー */
496+ exit(EXIT_FAILURE);
497+ }
498+
499+ if (poll_num > 0) {
500+ if (fds[0].revents & POLLIN) {
501+
502+ /* コンソールからの入力がある場合: 空の標準入力であれば終了 */
503+
504+ while (read(STDIN_FILENO, &buf, 1) > 0 && buf != '\en')
505+ continue;
506+ break;
507+ }
508+
509+ if (fds[1].revents & POLLIN) {
510+
511+ /* fanotify イベントがある場合 */
512+
513+ handle_events(fd);
514+ }
515+ }
516+ }
517+
518+ printf("Listening for events stopped.\en");
519+ exit(EXIT_SUCCESS);
520+}
521+.fi
522+.SH 関連項目
523+.ad l
524+\fBfanotify_init\fP(2), \fBfanotify_mark\fP(2), \fBinotify\fP(7)
525+.SH この文書について
526+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.76 の一部
527+である。プロジェクトの説明とバグ報告に関する情報は
528+http://www.kernel.org/doc/man\-pages/ に書かれている。
--- a/draft/man7/inotify.7
+++ b/draft/man7/inotify.7
@@ -53,35 +53,35 @@ inotify \- ファイルシステムイベントを監視する
5353
5454 この API では以下のシステムコールが使用される。
5555 .IP * 3
56-\fBinotify_init\fP(2) は inotify インスタンスを作成し、inotify インスタンスを参照する ファイルディスクリプタを返す。
57-より新しい \fBinotify_init1\fP(2) も \fBinotify_init\fP(2) と同様だが、
56+\fBinotify_init\fP(2) は inotify インスタンスを作成し、inotify インスタンスを参照する
57+ファイルディスクリプターを返す。 より新しい \fBinotify_init1\fP(2) も \fBinotify_init\fP(2) と同様だが、
5858 こちらにはいくつかの追加の機能を利用するための \fIflags\fP 引き数がある。
5959 .IP *
6060 \fBinotify_add_watch\fP(2) は inotify インスタンスに関連づけられた「監視対象 (watch) リスト」を操作する。
6161 監視対象リストの各アイテム ("watch") は、 ファイルまたはディレクトリのパス名と、 そのパス名で参照されるファイルに対して
6262 カーネルが監視する複数のイベントの集合を指定する。 \fBinotify_add_watch\fP(2)
63-は新しい監視アイテムの作成や既存の監視対象の変更ができる。 各監視対象は一意の「監視対象ディスクリプタ」を持つ。 これは監視対象を作成したときに
63+は新しい監視アイテムの作成や既存の監視対象の変更ができる。 各監視対象は一意の「監視対象ディスクリプター」を持つ。 これは監視対象を作成したときに
6464 \fBinotify_add_watch\fP(2) から返される整数である。
6565 .IP *
66-監視しているファイルやディレクトリでイベントが起こると、 それらのイベントはアプリケーションから inotify ファイルディスクリプタから
66+監視しているファイルやディレクトリでイベントが起こると、 それらのイベントはアプリケーションから inotify ファイルディスクリプターから
6767 \fBread\fP(2) を使って構造化データとして読み出すことができる (下記参照)。
6868 .IP *
6969 \fBinotify_rm_watch\fP(2) は inotify の監視対象リストからアイテムを削除する。
7070 .IP *
71-inotify インスタンスを指している 全てのファイルディスクリプタが (\fBclose\fP(2) を使って) クローズされた場合、
71+inotify インスタンスを指している 全てのファイルディスクリプターが (\fBclose\fP(2) を使って) クローズされた場合、
7272 その下層にあるオブジェクトとそのリソースは、 カーネルで再利用するために解放される。 関連が切られた監視対象は自動的に解放される。
7373 .PP
7474 注意深くプログラミングすることで、 アプリケーションは inotify
7575 を使ってファイルシステムオブジェクトの集合の状態を効率的に監視しキャッシュしておくことができる。
7676 しかしながら、ロバストなアプリケーションでは、監視ロジックのバグや以下に説明があるような種類の競合条件によりファイルシステムの状態とキャッシュが一致しない状態になることがあるという事実も考慮に入れておくべきである。
7777 おそらく何らかの一貫性のチェックを行い、不一致が検出された場合にはキャッシュを再構築するのが懸命だろう。
78-.SS "inotify ファイルディスクリプタからのイベントの読み出し"
79-どのようなイベントが起こっていたかを知るには、 アプリケーションで inotify ファイルディスクリプタを \fBread\fP(2) すればよい。
80-これまでに何もイベントが起こっていない場合、 停止 (blocking) モードのファイルディスクリプタであれば、 少なくとも 1
78+.SS "inotify ファイルディスクリプターからのイベントの読み出し"
79+どのようなイベントが起こっていたかを知るには、 アプリケーションで inotify ファイルディスクリプターを \fBread\fP(2) すればよい。
80+これまでに何もイベントが起こっていない場合、 停止 (blocking) モードのファイルディスクリプターであれば、 少なくとも 1
8181 つのイベントが起こるまで \fBread\fP(2) は停止する (シグナルにより割り込まれなかった場合。
8282 シグナルによる割り込みがあった場合、呼び出しはエラー \fBEINTR\fP で失敗する。 \fBsignal\fP(7) 参照)。
8383
84-\fBread\fP(2) が成功すると、以下の構造体を 1 つ以上含むバッファが返される:
84+\fBread\fP(2) が成功すると、以下の構造体を 1 つ以上含むバッファーが返される:
8585 .in +4n
8686 .nf
8787
@@ -90,7 +90,7 @@ inotify インスタンスを指している 全てのファイルディスク
9090 .\" "[patch] Fix type errors in inotify interfaces", 18 Nov 2008
9191 .\" Glibc bug filed: http://sources.redhat.com/bugzilla/show_bug.cgi?id=7040
9292 struct inotify_event {
93- int wd; /* 監視対象ディスクリプタ */
93+ int wd; /* 監視対象ディスクリプター */
9494 uint32_t mask; /* イベントを示すマスク */
9595 uint32_t cookie; /* 関連するイベント群を関連づける
9696 一意なクッキー (rename(2) 用) */
@@ -101,7 +101,7 @@ struct inotify_event {
101101 .in
102102
103103 \fIwd\fP はイベント発生の監視対象を指定する。 これは、前もって行われた \fBinotify_add_watch\fP(2)
104-呼び出しで返された監視対象ディスクリプタのうちの 1 つである。
104+呼び出しで返された監視対象ディスクリプターのうちの 1 つである。
105105
106106 \fImask\fP には発生したイベント (下記参照) を記述するためのビットが含まれる。
107107
@@ -119,11 +119,11 @@ struct inotify_event {
119119 よって、 \fIinotify_event\fP 構造体のサイズは
120120 \fIsizeof(struct inotify_event)+len\fP である。
121121
122-\fBread\fP(2) に渡されたバッファが小さすぎて次のイベントに関する情報を返せ
122+\fBread\fP(2) に渡されたバッファーが小さすぎて次のイベントに関する情報を返せ
123123 ない場合の動作はカーネルのバージョンにより異なる。 2.6.21 より前のカー
124124 ネルでは、 \fBread\fP(2) は 0 を返す。 2.6.21 以降のカーネルでは、
125125 \fBread\fP(2) はエラー \fBEINVAL\fP で失敗する。
126-バッファサイズとして
126+バッファーサイズとして
127127
128128 sizeof(struct inotify_event) + NAME_MAX + 1
129129
@@ -159,7 +159,7 @@ struct inotify_event {
159159 \fBIN_DELETE_SELF\fP
160160 監視対象のファイルやディレクトリ自身が削除あれた。 (このイベントはオブジェクトが別のファイルシステムに移動された場合にも発生する。 \fBmv\fP(1)
161161 は実際には別のファイルシステムにファイルをコピーした後、元のファイルシステムからそのファイルを削除するからである。) また、
162-結果的に監視ディスクリプタに対して \fBIN_IGNORED\fP イベントも生成される。
162+結果的に監視ディスクリプターに対して \fBIN_IGNORED\fP イベントも生成される。
163163 .TP
164164 \fBIN_MODIFY\fP (+)
165165 ファイルが変更された (\fBwrite\fP(2), \fBtruncate\fP(2) など)。
@@ -239,7 +239,7 @@ struct inotify_event {
239239 イベントキューが溢れた (このイベントの場合、\fIwd\fP は \-1 である)。
240240 .TP
241241 \fBIN_UNMOUNT\fP
242-監視対象オブジェクトを含むファイルシステムがアンマウントされた。さらに、この監視対象ディスクリプタに対して \fBIN_IGNORED\fP
242+監視対象オブジェクトを含むファイルシステムがアンマウントされた。さらに、この監視対象ディスクリプターに対して \fBIN_IGNORED\fP
243243 イベントが生成される。
244244 .RE
245245 .SS 例
@@ -320,26 +320,26 @@ inotify は 2.6.13 の Linux カーネルに組込まれた。 これに必要
320320 .SH 準拠
321321 inotify API は Linux 独自のものである。
322322 .SH 注意
323-inotify ファイルディスクリプタは \fBselect\fP(2), \fBpoll\fP(2), \fBepoll\fP(7) を使って監視できる。
324-イベントがある場合、ファイルディスクリプタは読み込み可能と通知する。
323+inotify ファイルディスクリプターは \fBselect\fP(2), \fBpoll\fP(2), \fBepoll\fP(7) を使って監視できる。
324+イベントがある場合、ファイルディスクリプターは読み込み可能と通知する。
325325
326326 Linux 2.6.25 以降では、シグナル駆動 (signal\-driven) I/O の通知が inotify
327-ファイルディスクリプタについて利用可能である。 \fBfcntl\fP(2) に書かれている (\fBO_ASYNC\fP フラグを設定するための)
327+ファイルディスクリプターについて利用可能である。 \fBfcntl\fP(2) に書かれている (\fBO_ASYNC\fP フラグを設定するための)
328328 \fBF_SETFL\fP, \fBF_SETOWN\fP, \fBF_SETSIG\fP の議論を参照のこと。 シグナルハンドラに渡される \fIsiginfo_t\fP
329329 構造体は、以下のフィールドが設定される (\fIsiginfo_t\fP は \fBsigaction\fP(2) で説明されている)。 \fIsi_fd\fP には
330-inotify ファイルディスクリプタ番号が、 \fIsi_signo\fP にはシグナル番号が、 \fIsi_code\fP には \fBPOLL_IN\fP が、
330+inotify ファイルディスクリプター番号が、 \fIsi_signo\fP にはシグナル番号が、 \fIsi_code\fP には \fBPOLL_IN\fP が、
331331 \fIsi_band\fP には \fBPOLLIN\fP が設定される。
332332
333-inotify ファイルディスクリプタに対して 連続して生成される出力 inotify イベントが同一の場合 (\fIwd\fP, \fImask\fP,
333+inotify ファイルディスクリプターに対して 連続して生成される出力 inotify イベントが同一の場合 (\fIwd\fP, \fImask\fP,
334334 \fIcookie\fP, \fIname\fP が等しい場合)、 前のイベントがまだ読み込まれていなければ、 連続するイベントが 1 つのイベントにまとめられる
335335 (ただし「バグ」の節も参照のこと)。 これによりイベントキューに必要なカーネルメモリ量が減るが、
336336 これはまたアプリケーションがファイルイベント数を信頼性を持って数えるのに inotify を使用できないということでもある。
337337
338-inotify ファイルディスクリプタの読み込みで返されるイベントは、 順序付けられたキューになる。
339-従って、たとえば、あるディレクトリの名前を別の名前に変更した場合、 inotify ファイルディスクリプタについての正しい順番で
338+inotify ファイルディスクリプターの読み込みで返されるイベントは、 順序付けられたキューになる。
339+従って、たとえば、あるディレクトリの名前を別の名前に変更した場合、 inotify ファイルディスクリプターについての正しい順番で
340340 イベントが生成されることが保証される。
341341
342-\fBFIONREAD\fP \fBioctl\fP(2) は inotify ファイルディスクリプタから何バイト読み込めるかを返す。
342+\fBFIONREAD\fP \fBioctl\fP(2) は inotify ファイルディスクリプターから何バイト読み込めるかを返す。
343343 .SS 制限と警告
344344 inotify API では、inotify イベントが発生するきっかけとなったユーザやプロセスに関する情報は提供されない。とりわけ、inotify
345345 経由でイベントを監視しているプロセスが、自分自身がきっかけとなったイベントと他のプロセスがきっかけとなったイベントを区別する簡単な手段はない。
@@ -356,8 +356,8 @@ inotify API では影響が受けるファイルをファイル名で特定す
356356 しかしながら、アプリケーションが inotify イベントを処理する時点では、
357357 そのファイル名がすでに削除されたり変更されたりしている可能性がある。
358358
359-inotify API では監視対象ディスクリプタを通してイベントが区別される。 (必要であれば)
360-監視対象ディスクリプタとパス名のマッピングをキャッシュしておくのはアプリケーションの役目である。
359+inotify API では監視対象ディスクリプターを通してイベントが区別される。 (必要であれば)
360+監視対象ディスクリプターとパス名のマッピングをキャッシュしておくのはアプリケーションの役目である。
361361 ディレクトリの名前変更の場合、キャッシュしている複数のパス名に影響がある点に注意すること。
362362
363363 inotify によるディレクトリの監視は再帰的に行われない: あるディレクトリ以下の
@@ -373,13 +373,13 @@ inotify によるディレクトリの監視は再帰的に行われない: あ
373373 イベントキューはオーバーフローする場合があることに注意すること。 この場合、イベントは失なわれる。 ロバスト性が求められるアプリケーションでは、
374374 イベントが失なわれる可能性も含めて適切に処理を行うべきである。
375375 例えば、アプリケーション内のキャッシュの一部分または全てを再構築する必要があるかもしれない。 (単純だが、おそらくコストがかかる方法は、 inotify
376-ファイルディスクリプタをクローズし、 キャッシュを空にし、 新しい inotify ファイルディスクリプタを作成し、
377-監視しているオブジェクトの監視対象ディスクリプタとキャッシュエントリーの再作成を行う方法である。)
376+ファイルディスクリプターをクローズし、 キャッシュを空にし、 新しい inotify ファイルディスクリプターを作成し、
377+監視しているオブジェクトの監視対象ディスクリプターとキャッシュエントリーの再作成を行う方法である。)
378378 .SS "rename() イベントの取り扱い"
379379 上述の通り、 \fBrename\fP(2) により生成される \fBIN_MOVED_FROM\fP と \fBIN_MOVED_TO\fP イベントの組は、共有される
380380 cookie 値によって対応を取ることができる。 しかし、対応を取る場合にはいくつか難しい点がある。
381381
382-これらの 2 つのイベントは、 inotify ファイルディスクリプタから読み出しを行った場合に、通常はイベントストリーム内で連続している。
382+これらの 2 つのイベントは、 inotify ファイルディスクリプターから読み出しを行った場合に、通常はイベントストリーム内で連続している。
383383 しかしながら、連続していることは保証されていない。 複数のプロセスが監視対象オブジェクトでイベントを発生させた場合、 (めったに起こらないことだが)
384384 イベント \fBIN_MOVED_FROM\fP と \fBIN_MOVED_TO\fP の間に任意の数の他のイベントがはさまる可能性がある。
385385 さらに、対となるイベントがアトミックにキューに挿入されることも保証されていない。 \fBIN_MOVED_FROM\fP が現れたが
@@ -390,11 +390,11 @@ cookie 値によって対応を取ることができる。 しかし、対応を
390390 \fBIN_MOVED_TO\fP イベントは存在しさえしないことを忘れてはならない)。 (イベントは常に連続しているとの仮定を置くといった)
391391 発見的な方法を使うと、ほとんどの場合でイベントの組をうまく見つけることができるが、 いくつかの場合に見逃すことが避けられず、 アプリケーションが
392392 \fBIN_MOVED_FROM\fP と \fBIN_MOVED_TO\fP イベントが無関係だとみなしてしまう可能性がある。
393-結果的に、監視対象ディスクリプタが破棄され再作成された場合、これらの監視対象ディスクリプタは、処理待ちイベントの監視対象ディスクリプタと一貫性のないものになってしまう
393+結果的に、監視対象ディスクリプターが破棄され再作成された場合、これらの監視対象ディスクリプターは、処理待ちイベントの監視対象ディスクリプターと一貫性のないものになってしまう
394394 (inotify ファイルディスクリプタの再作成とキャッシュの再構成はこの状況に対処するのに有用な方法なのだが)。
395395
396396 また、アプリケーションは、 \fBIN_MOVED_FROM\fP イベントが今行った \fBread\fP(2)
397-の呼び出しで返されたバッファのちょうど一番最後のイベントで、 \fBIN_MOVED_TO\fP イベントは次の \fBread\fP(2)
397+の呼び出しで返されたバッファーのちょうど一番最後のイベントで、 \fBIN_MOVED_TO\fP イベントは次の \fBread\fP(2)
398398 を行わないと取得できない可能性も考慮に入れる必要がある。 2 つ目の \fBread\fP(2) は (短い) タイムアウトで行うべきである。 これは、
399399 \fBIN_MOVED_FROM\fP\-\fBIN_MOVED_TO\fP のイベントペアのキューへの挿入はアトミックではなく、 また \fBIN_MOVED_TO\fP
400400 イベントが全く発生しない可能性もあるという事実を考慮に入れておく必要があるからである。
@@ -416,18 +416,18 @@ cookie 値によって対応を取ることができる。 しかし、対応を
416416 をチェックするようになっていた。
417417
418418 .\" FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=77111
419-\fBinotify_rm_watch\fP(2) の呼び出しにより監視対象ディスクリプタが削除された場合
420-(なお、監視対象ファイルの削除や監視対象ファイルが含まれるファイルシステムのアンマウントによっても監視対象ディスクリプタは削除される)、
421-この監視対象ディスクリプタ関連の処理待ちの未読み出しイベントは、 読み出し可能なままとなる。 監視対象ディスクリプタは
422-\fBinotify_add_watch\fP(2) によって後で割り当てられるため、 カーネルは利用可能な監視対象ディスクリプタの範囲 (0 から
423-\fBINT_MAX\fP) から昇順にサイクリックに割り当てを行う。未使用の監視対象ディスクリプタを割り当てる際、 その監視対象ディスクリプタ番号に
424-inotify キューで処理待ちの未読み出しイベントがあるかの確認は行われない。 したがって、監視対象ディスクリプタが再割り当てされた際に、
425-その監視対象ディスクリプタの一つ前の使用時に発生した処理待ちの未読み出しイベントが存在するということが起こりうる。
419+\fBinotify_rm_watch\fP(2) の呼び出しにより監視対象ディスクリプターが削除された場合
420+(なお、監視対象ファイルの削除や監視対象ファイルが含まれるファイルシステムのアンマウントによっても監視対象ディスクリプターは削除される)、
421+この監視対象ディスクリプター関連の処理待ちの未読み出しイベントは、 読み出し可能なままとなる。 監視対象ディスクリプターは
422+\fBinotify_add_watch\fP(2) によって後で割り当てられるため、 カーネルは利用可能な監視対象ディスクリプターの範囲 (0 から
423+\fBINT_MAX\fP) から昇順にサイクリックに割り当てを行う。未使用の監視対象ディスクリプターを割り当てる際、 その監視対象ディスクリプター番号に
424+inotify キューで処理待ちの未読み出しイベントがあるかの確認は行われない。 したがって、監視対象ディスクリプターが再割り当てされた際に、
425+その監視対象ディスクリプターの一つ前の使用時に発生した処理待ちの未読み出しイベントが存在するということが起こりうる。
426426 その結果、アプリケーションはこれらのイベントを読み出す可能性があり、
427-これらのイベントが新しく再利用された監視対象ディスクリプタに関連付けられたファイルに属するものかを解釈する必要が出て来る。
427+これらのイベントが新しく再利用された監視対象ディスクリプターに関連付けられたファイルに属するものかを解釈する必要が出て来る。
428428 実際のところ、このバグを踏む可能性は極めて低い。 それは、このバグを踏むためには、アプリケーションが \fBINT_MAX\fP
429-個の監視対象ディスクリプタが一周させて、 キューに未読み出しイベントが残っている監視対象ディスクリプタを解放し、
430-その監視対象ディスクリプタを再利用する必要があるからである。 この理由と、実世界のアプリケーションで発生したというバグ報告がないことから、 Linux
429+個の監視対象ディスクリプターが一周させて、 キューに未読み出しイベントが残っている監視対象ディスクリプターを解放し、
430+その監視対象ディスクリプターを再利用する必要があるからである。 この理由と、実世界のアプリケーションで発生したというバグ報告がないことから、 Linux
431431 3.15 時点では、この計算上は起こりうるバグを取り除くためのカーネルの変更は行われていない。
432432 .SH 例
433433 以下のプログラムは inotify API の使用例を示したものである。 コマンドライン引き数で渡されたディレクトリに印を付け、 タイプが
@@ -501,7 +501,7 @@ handle_events(int fd, int *wd, int argc, char* argv[])
501501 if (len <= 0)
502502 break;
503503
504- /* Loop over all events in the buffer */
504+ /* バッファー内の全イベントを処理する */
505505
506506 for (ptr = buf; ptr < buf + len;
507507 ptr += sizeof(struct inotify_event) + event\->len) {
@@ -587,11 +587,11 @@ main(int argc, char* argv[])
587587 }
588588 }
589589
590- /* Prepare for polling */
590+ /* ポーリングの準備 */
591591
592592 nfds = 2;
593593
594- /* Console input */
594+ /* コンソールの入力 */
595595
596596 fds[0].fd = STDIN_FILENO;
597597 fds[0].events = POLLIN;
--- a/po4a/notify/po/ja.po
+++ b/po4a/notify/po/ja.po
@@ -7,7 +7,7 @@ msgid ""
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "POT-Creation-Date: 2015-01-04 23:49+0900\n"
10-"PO-Revision-Date: 2015-01-05 17:29+0900\n"
10+"PO-Revision-Date: 2015-01-11 03:38+0900\n"
1111 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1212 "Language-Team: LANGUAGE <LL@li.org>\n"
1313 "Language: \n"
@@ -57,7 +57,7 @@ msgstr "名前"
5757 #. type: Plain text
5858 #: build/C/man7/fanotify.7:28
5959 msgid "fanotify - monitoring filesystem events"
60-msgstr ""
60+msgstr "fanotify - ファイルシステムイベントを監視する"
6161
6262 #. type: SH
6363 #: build/C/man7/fanotify.7:28 build/C/man2/fanotify_init.2:33
@@ -76,7 +76,7 @@ msgid ""
7676 "management. Currently, only a limited set of events is supported. In "
7777 "particular, there is no support for create, delete, and move events. (See "
7878 "B<inotify>(7) for details of an API that does notify those events.)"
79-msgstr ""
79+msgstr "fanotify API はファイルシステムイベントの通知と横取り機能 (interception) を提供する。 ユースケースとしては、ウイルススキャンや階層型ストレージの管理などがある。 現在のところ、限定的なイベントのみがサポートされている。 特に、作成 (create)、削除 (delete)、移動 (move) イベントがサポートされていない (これらのイベントを通知する API の詳細については B<inotify>(7) を参照)。"
8080
8181 #. type: Plain text
8282 #: build/C/man7/fanotify.7:44
@@ -85,34 +85,34 @@ msgid ""
8585 "ability to monitor all of the objects in a mounted filesystem, the ability "
8686 "to make access permission decisions, and the possibility to read or modify "
8787 "files before access by other applications."
88-msgstr ""
88+msgstr "B<inotify>(7) API と比較して追加されている機能としては、 マウントされたファイルシステムの全オブジェクトを監視する機能、 アクセス許可の判定を行う機能、 他のアプリケーションによるアクセスの前にファイルを読み出したり変更したりする機能がある。"
8989
9090 #. type: Plain text
9191 #: build/C/man7/fanotify.7:52
9292 msgid ""
9393 "The following system calls are used with this API: B<fanotify_init>(2), "
9494 "B<fanotify_mark>(2), B<read>(2), B<write>(2), and B<close>(2)."
95-msgstr ""
95+msgstr "この API では以下のシステムコールを使用する: B<fanotify_init>(2), B<fanotify_mark>(2), B<read>(2), B<write>(2), B<close>(2)。"
9696
9797 #. type: SS
9898 #: build/C/man7/fanotify.7:52
9999 #, no-wrap
100100 msgid "fanotify_init(), fanotify_mark(), and notification groups"
101-msgstr ""
101+msgstr "fanotify_init(), fanotify_mark() と通知グループ"
102102
103103 #. type: Plain text
104104 #: build/C/man7/fanotify.7:57
105105 msgid ""
106106 "The B<fanotify_init>(2) system call creates and initializes an fanotify "
107107 "notification group and returns a file descriptor referring to it."
108-msgstr ""
108+msgstr "B<fanotify_init>(2) システムコールは fanotify 通知グループを作成、初期化し、 この通知グループを参照するファイルディスクリプターを返す。"
109109
110110 #. type: Plain text
111111 #: build/C/man7/fanotify.7:61
112112 msgid ""
113113 "An fanotify notification group is a kernel-internal object that holds a list "
114114 "of files, directories, and mount points for which events shall be created."
115-msgstr ""
115+msgstr "fanotify 通知グループはカーネル内部のオブジェクトで、 イベントが作成されるファイル、 ディレクトリ、 マウントポイントのリストを保持する。"
116116
117117 #. type: Plain text
118118 #: build/C/man7/fanotify.7:72
@@ -124,7 +124,7 @@ msgid ""
124124 "a mount point or directory to be marked for receiving events, while at the "
125125 "same time ignoring events for specific objects under that mount point or "
126126 "directory."
127-msgstr ""
127+msgstr "fanotify 通知グループの各エントリーには 2 つのビットマスクがある。 I<mark> マスクと I<ignore> マスクである。 mark マスクはどのファイル操作についてイベントを作成するかを定義する。 ignore マスクはどの操作についてイベントを作成しないかを定義する。 これらの 2 種類のマスクがあることで、 マウントポイントやディレクトリに対してイベントの受信を mark しておきつつ、 同時にそのマウントポイントやディレクトリ配下の特定のオブジェクトに対するイベントを無視する、 といったことができる。"
128128
129129 #. type: Plain text
130130 #: build/C/man7/fanotify.7:78
@@ -132,7 +132,7 @@ msgid ""
132132 "The B<fanotify_mark>(2) system call adds a file, directory, or mount to a "
133133 "notification group and specifies which events shall be reported (or "
134134 "ignored), or removes or modifies such an entry."
135-msgstr ""
135+msgstr "B<fanotify_mark>(2) システムコールは、ファイル、ディレクトリ、マウントを通知グループに追加し、 どのイベントを報告 (もしくは無視) するかを指定する。 また、このようなエントリーの削除、変更も行う。"
136136
137137 #. type: Plain text
138138 #: build/C/man7/fanotify.7:91
@@ -146,7 +146,7 @@ msgid ""
146146 "Hence, the modify event can be added to the ignore mask. Upon receiving the "
147147 "close event, the modify event can be removed from the ignore mask and the "
148148 "file cache entry can be updated."
149-msgstr ""
149+msgstr "ignore マスクの考えられる使用方法はファイルキャッシュに対してである。 ファイルキャッシュに関して興味のあるイベントは、ファイルの変更とファイルのクローズである。 それゆえ、 キャッシュされたディレクトリやマウントポイントは、 これらのイベントを受信するようにマークされる。 ファイルが変更されたという最初のイベントを受信した後は、 対応するキャッシュエントリーは無効化される。 そのファイルがクローズされるまでは、 このファイルに対する変更イベントは興味のない情報となる。 したがって、 変更イベントを ignore マスクに追加することができる。 クローズイベントを受信すると、 変更イベントを ignore イベントから削除し、 ファイルキャッシュエントリーを更新することができる。"
150150
151151 #. type: Plain text
152152 #: build/C/man7/fanotify.7:98
@@ -156,13 +156,13 @@ msgid ""
156156 "files or directories are renamed or moved, the respective entries survive. "
157157 "If files or directories are deleted or mounts are unmounted, the "
158158 "corresponding entries are deleted."
159-msgstr ""
159+msgstr "fanotify 通知グループのエントリーは、 ファイルやディレクトリでは inode 番号経由で参照され、 マウントではマウント ID 経由で参照される。 ファイルやディレクトリの名前が変更されたり、移動されたりした場合も、 関連するエントリーはそのまま残る。 ファイルやディレクトリが削除されたり、マウントがアンマウントされたりした場合には、 対応するエントリーは削除される。"
160160
161161 #. type: SS
162162 #: build/C/man7/fanotify.7:98
163163 #, no-wrap
164164 msgid "The event queue"
165-msgstr ""
165+msgstr "イベントキュー"
166166
167167 #. type: Plain text
168168 #: build/C/man7/fanotify.7:107
@@ -171,7 +171,7 @@ msgid ""
171171 "the fanotify system generates events that are collected in a queue. These "
172172 "events can then be read (using B<read>(2) or similar) from the fanotify "
173173 "file descriptor returned by B<fanotify_init>(2)."
174-msgstr ""
174+msgstr "通知グループにより監視されているファイルシステムオブジェクトでイベントが発生すると、 fanotify システムはイベントを生成し、 そのイベントはキューにまとめられる。 これらのイベントは、 B<fanotify_init>(2) が返した fanotify ファイルディスクリプターから (B<read>(2) などを使って) 読み出すことができる。"
175175
176176 #. type: Plain text
177177 #: build/C/man7/fanotify.7:121
@@ -183,7 +183,7 @@ msgid ""
183183 "receiving application to decide whether permission for a file access shall "
184184 "be granted. For these events, the recipient must write a response which "
185185 "decides whether access is granted or not."
186-msgstr ""
186+msgstr "2 種類のイベントが生成される。 I<notification> (通知) イベントと I<permission> (アクセス許可) イベントである。 通知イベントは単なる情報通知であり、 イベントで渡されたファイルディスクリプターをクローズする場合 (下記参照) を除き、 受信したアプリケーションでアクションを取る必要はない。 アクセス許可イベントは、 受信したアプリケーションがファイルアクセスの許可を承認するかを判定する必要がある。 この場合、 受信者はアクセスが許可されたか否かを決定する応答を書き込まなければならない。"
187187
188188 #. type: Plain text
189189 #: build/C/man7/fanotify.7:128
@@ -193,13 +193,13 @@ msgid ""
193193 "list of the fanotify group until either a permission decision has been taken "
194194 "by writing to the fanotify file descriptor or the fanotify file descriptor "
195195 "is closed."
196-msgstr ""
196+msgstr "イベントは、 読み出されると、 fanotify グループのイベントキューから削除される。 読み出されたアクセス許可イベントは、 fanotify ファイルディスクリプターにアクセス許可の判定が書き込まれるか、 fanotify ファイルディスクリプターがクローズされるまで、 fanotify グループの内部のリストに保持される。"
197197
198198 #. type: SS
199199 #: build/C/man7/fanotify.7:128
200200 #, no-wrap
201201 msgid "Reading fanotify events"
202-msgstr ""
202+msgstr "fanotify イベントの読み出し"
203203
204204 #. type: Plain text
205205 #: build/C/man7/fanotify.7:140
@@ -208,14 +208,14 @@ msgid ""
208208 "blocks (if the flag B<FAN_NONBLOCK> is not specified in the call to "
209209 "B<fanotify_init>(2)) until either a file event occurs or the call is "
210210 "interrupted by a signal (see B<signal>(7))."
211-msgstr ""
211+msgstr "B<fanotify_init>(2) が返したファイルディスクリプターに対する B<read>(2) を呼び出しは、 (B<fanotify_init>(2) の呼び出しでフラグ B<FAN_NONBLOCK> を指定しなかった場合) ファイルイベントが起こるか、呼び出しがシグナルによって割り込まれる (B<signal>(7) 参照) まで停止する。"
212212
213213 #. type: Plain text
214214 #: build/C/man7/fanotify.7:144
215215 msgid ""
216216 "After a successful B<read>(2), the read buffer contains one or more of the "
217217 "following structures:"
218-msgstr ""
218+msgstr "B<read>(2) が成功すると、読み出しバッファーには以下の構造体が 1 つ以上格納される。"
219219
220220 #. type: Plain text
221221 #: build/C/man7/fanotify.7:156
@@ -231,6 +231,15 @@ msgid ""
231231 " __s32 pid;\n"
232232 "};\n"
233233 msgstr ""
234+"struct fanotify_event_metadata {\n"
235+" __u32 event_len;\n"
236+" __u8 vers;\n"
237+" __u8 reserved;\n"
238+" __u16 metadata_len;\n"
239+" __aligned_u64 mask;\n"
240+" __s32 fd;\n"
241+" __s32 pid;\n"
242+"};\n"
234243
235244 #. type: Plain text
236245 #: build/C/man7/fanotify.7:163
@@ -238,25 +247,25 @@ msgid ""
238247 "For performance reasons, it is recommended to use a large buffer size (for "
239248 "example, 4096 bytes), so that multiple events can be retrieved by a single "
240249 "B<read>(2)."
241-msgstr ""
250+msgstr "性能上の理由から、複数のイベントを一度の B<read>(2) で取得できるように大きめのバッファーサイズ (例えば 4096 バイト) を使用することを推奨する。"
242251
243252 #. type: Plain text
244253 #: build/C/man7/fanotify.7:168
245254 msgid ""
246255 "The return value of B<read>(2) is the number of bytes placed in the buffer, "
247256 "or -1 in case of an error (but see BUGS)."
248-msgstr ""
257+msgstr "B<read>(2) の返り値はバッファーに格納されたバイト数である。 エラーの場合は -1 が返される (ただし、バグも参照)。"
249258
250259 #. type: Plain text
251260 #: build/C/man7/fanotify.7:172
252261 msgid "The fields of the I<fanotify_event_metadata> structure are as follows:"
253-msgstr ""
262+msgstr "I<fanotify_event_metadata> 構造体のフィールドは以下のとおりである。"
254263
255264 #. type: TP
256265 #: build/C/man7/fanotify.7:172
257266 #, no-wrap
258267 msgid "I<event_len>"
259-msgstr ""
268+msgstr "I<event_len>"
260269
261270 #. type: Plain text
262271 #: build/C/man7/fanotify.7:182
@@ -265,13 +274,13 @@ msgid ""
265274 "next event in the buffer. In the current implementation, the value of "
266275 "I<event_len> is always B<FAN_EVENT_METADATA_LEN>. However, the API is "
267276 "designed to allow variable-length structures to be returned in the future."
268-msgstr ""
277+msgstr "これは、 このイベントのデータ長であり、バッファー内の次のイベントへのオフセットである。 現在の実装では、 I<event_len> の値は常に B<FAN_EVENT_METADATA_LEN> である。 しかしながら、 API は将来可変長の構造体を返すことができるように設計されている。"
269278
270279 #. type: TP
271280 #: build/C/man7/fanotify.7:182
272281 #, no-wrap
273282 msgid "I<vers>"
274-msgstr ""
283+msgstr "I<vers>"
275284
276285 #. type: Plain text
277286 #: build/C/man7/fanotify.7:191
@@ -281,24 +290,24 @@ msgid ""
281290 "runtime match the structures defined at compile time. In case of a "
282291 "mismatch, the application should abandon trying to use the fanotify file "
283292 "descriptor."
284-msgstr ""
293+msgstr "このフィールドには構造体のバージョン番号が入る。 実行時に返された構造体がコンパイル時の構造体と一致しているかを検査するには、 この値を B<FANOTIFY_METADATA_VERSION> を比較すること。 一致しない場合、 アプリケーションはその fanotify ファイルディスクリプターを使用するのを諦めるべきである。"
285294
286295 #. type: TP
287296 #: build/C/man7/fanotify.7:191
288297 #, no-wrap
289298 msgid "I<reserved>"
290-msgstr ""
299+msgstr "I<reserved>"
291300
292301 #. type: Plain text
293302 #: build/C/man7/fanotify.7:194
294303 msgid "This field is not used."
295-msgstr ""
304+msgstr "このフィールドは使用されない。"
296305
297306 #. type: TP
298307 #: build/C/man7/fanotify.7:194
299308 #, no-wrap
300309 msgid "I<metadata_len>"
301-msgstr ""
310+msgstr "I<metadata_len>"
302311
303312 #. type: Plain text
304313 #: build/C/man7/fanotify.7:200
@@ -306,24 +315,24 @@ msgid ""
306315 "This is the length of the structure. The field was introduced to facilitate "
307316 "the implementation of optional headers per event type. No such optional "
308317 "headers exist in the current implementation."
309-msgstr ""
318+msgstr "この構造体の長さである。 このフィールドは、 イベント種別単位のオプションヘッダーの実装を扱うために導入された。 現在の実装ではこのようなオプションヘッダーは存在しない。"
310319
311320 #. type: TP
312321 #: build/C/man7/fanotify.7:200
313322 #, no-wrap
314323 msgid "I<mask>"
315-msgstr ""
324+msgstr "I<mask>"
316325
317326 #. type: Plain text
318327 #: build/C/man7/fanotify.7:203
319328 msgid "This is a bit mask describing the event (see below)."
320-msgstr ""
329+msgstr "イベントを示すビットマスクである (下記参照)"
321330
322331 #. type: TP
323332 #: build/C/man7/fanotify.7:203 build/C/man7/fanotify.7:360
324333 #, no-wrap
325334 msgid "I<fd>"
326-msgstr ""
335+msgstr "I<fd>"
327336
328337 #. type: Plain text
329338 #: build/C/man7/fanotify.7:211
@@ -332,7 +341,7 @@ msgid ""
332341 "B<FAN_NOFD> if a queue overflow occurred. The file descriptor can be used "
333342 "to access the contents of the monitored file or directory. The reading "
334343 "application is responsible for closing this file descriptor."
335-msgstr ""
344+msgstr "これはアクセスされたオブジェクトに対するオープンされたファイルディスクリプターである。 または、キューのオーバーフローが発生した場合には B<FAN_NOFD> が入る。 ファイルディスクリプターは監視対象のファイルやディレクトリの内容にアクセスするのに使用できる。 読み出したアプリケーションは責任を持ってこのファイルディスクリプターをクローズしなければならない。"
336345
337346 #. type: Plain text
338347 #: build/C/man7/fanotify.7:224
@@ -345,13 +354,13 @@ msgid ""
345354 "generation. Hence, when the receiver of the fanotify event accesses the "
346355 "notified file or directory using this file descriptor, no additional events "
347356 "will be created."
348-msgstr ""
357+msgstr "B<fanotify_init>(2) を呼び出す際、 呼び出し元はこのファイルディスクリプターに対応するオープンファイル記述にセットされた様々なファイル状態フラグを (I<event_f_flags> 引き数を使って) 指定することができる。 さらに、 (カーネル内部の) B<FMODE_NONOTIFY> ファイル状態フラグがオープンファイル記述にセットされる。 このフラグは fanotify イベントの生成を抑制する。 したがって、 fanotify イベントの受信者がこのファイルディスクリプターを使って通知されたファイルやディレクトリにアクセスした際に、 これ以上イベントが作成されなくなる。"
349358
350359 #. type: TP
351360 #: build/C/man7/fanotify.7:224
352361 #, no-wrap
353362 msgid "I<pid>"
354-msgstr ""
363+msgstr "I<pid>"
355364
356365 #. type: Plain text
357366 #: build/C/man7/fanotify.7:232
@@ -360,7 +369,7 @@ msgid ""
360369 "fanotify events can compare this PID to the PID returned by B<getpid>(2), to "
361370 "determine whether the event is caused by the listener itself, or is due to a "
362371 "file access by another process."
363-msgstr ""
372+msgstr "これはイベントが発生する原因となったプロセス ID である。 fanotify イベントを監視しているプログラムは、 この PID を B<getpid>(2) が返す PID と比較することで、 イベントが監視しているプログラム自身から発生したかどうか、 別のプロセスによるファイルアクセスにより発生したか、を判定できる。"
364373
365374 #. type: Plain text
366375 #: build/C/man7/fanotify.7:242
@@ -371,12 +380,12 @@ msgid ""
371380 "consecutive events for the same filesystem object and originating from the "
372381 "same process may be merged into a single event, with the exception that two "
373382 "permission events are never merged into one queue entry."
374-msgstr ""
383+msgstr "I<mask> のビットマスクは、1 つのファイルシステムオブジェクトに対してどのイベントが発生したかを示す。 監視対象のファイルシステムオブジェクトに複数のイベントが発生した場合は、 このマスクに複数のビットがセットされることがある。 特に、 同じファイルシステムオブジェクトに対する連続するイベントが同じプロセスから生成された場合には、 一つのイベントにまとめられることがある。 例外として、 2 つのアクセス許可イベントが一つのキューエントリーにまとめられることは決してない。"
375384
376385 #. type: Plain text
377386 #: build/C/man7/fanotify.7:246
378387 msgid "The bits that may appear in I<mask> are as follows:"
379-msgstr ""
388+msgstr "I<mask> でセットされている可能性のあるビットは以下のとおりである。"
380389
381390 #. type: TP
382391 #: build/C/man7/fanotify.7:246 build/C/man2/fanotify_mark.2:136
@@ -387,7 +396,7 @@ msgstr "B<FAN_ACCESS>"
387396 #. type: Plain text
388397 #: build/C/man7/fanotify.7:249
389398 msgid "A file or a directory (but see BUGS) was accessed (read)."
390-msgstr ""
399+msgstr "ファイルやディレクトリがアクセスされた (読み出しが行われた) (ただし、「バグ」の節も参照)。"
391400
392401 #. type: TP
393402 #: build/C/man7/fanotify.7:249 build/C/man2/fanotify_mark.2:148
@@ -398,7 +407,7 @@ msgstr "B<FAN_OPEN>"
398407 #. type: Plain text
399408 #: build/C/man7/fanotify.7:252
400409 msgid "A file or a directory was opened."
401-msgstr ""
410+msgstr "ファイルやディレクトリがオープンされた。"
402411
403412 #. type: TP
404413 #: build/C/man7/fanotify.7:252 build/C/man2/fanotify_mark.2:139
@@ -409,7 +418,7 @@ msgstr "B<FAN_MODIFY>"
409418 #. type: Plain text
410419 #: build/C/man7/fanotify.7:255
411420 msgid "A file was modified."
412-msgstr ""
421+msgstr "ファイルやディレクトリが変更された。"
413422
414423 #. type: TP
415424 #: build/C/man7/fanotify.7:255 build/C/man2/fanotify_mark.2:142
@@ -421,7 +430,7 @@ msgstr "B<FAN_CLOSE_WRITE>"
421430 #: build/C/man7/fanotify.7:262
422431 msgid ""
423432 "A file that was opened for writing (B<O_WRONLY> or B<O_RDWR>) was closed."
424-msgstr ""
433+msgstr "書き込み用 (B<O_WRONLY> か B<O_RDWR>) にオープンされたファイルがクローズされた。"
425434
426435 #. type: TP
427436 #: build/C/man7/fanotify.7:262 build/C/man2/fanotify_mark.2:145
@@ -433,7 +442,7 @@ msgstr "B<FAN_CLOSE_NOWRITE>"
433442 #: build/C/man7/fanotify.7:267
434443 msgid ""
435444 "A file or directory that was opened read-only (B<O_RDONLY>) was closed."
436-msgstr ""
445+msgstr "読み出し用 (B<O_RDONLY>) にオープンされたファイルがクローズされた。"
437446
438447 #. type: TP
439448 #: build/C/man7/fanotify.7:267
@@ -447,7 +456,7 @@ msgid ""
447456 "The event queue exceeded the limit of 16384 entries. This limit can be "
448457 "overridden by specifying the B<FAN_UNLIMITED_QUEUE> flag when calling "
449458 "B<fanotify_init>(2)."
450-msgstr ""
459+msgstr "イベントキューが 16384 エントリーの上限を超過した。 この上限は B<fanotify_init>(2) 呼び出し時に B<FAN_UNLIMITED_QUEUE> フラグを指定することで上書きできる。"
451460
452461 #. type: TP
453462 #: build/C/man7/fanotify.7:274 build/C/man2/fanotify_mark.2:159
@@ -462,7 +471,7 @@ msgid ""
462471 "B<read>(2) or B<readdir>(2). The reader must write a response (as "
463472 "described below) that determines whether the permission to access the "
464473 "filesystem object shall be granted."
465-msgstr ""
474+msgstr "アプリケーションが例えば B<read>(2) や B<readdir>(2) などを使ってファイルやディレクトリを読み出そうとした。 このイベントを読み出したプログラムは、 そのファイルシステムオブジェクトへのアクセス許可を承認するかを判定し (下記で説明するとおり) 応答を書き込まなければならない。"
466475
467476 #. type: TP
468477 #: build/C/man7/fanotify.7:283 build/C/man2/fanotify_mark.2:151
@@ -476,12 +485,12 @@ msgid ""
476485 "An application wants to open a file or directory. The reader must write a "
477486 "response that determines whether the permission to open the filesystem "
478487 "object shall be granted."
479-msgstr ""
488+msgstr "アプリケーションがファイルやディレクトリをオープンしようとした。 このイベントを読み出したプログラムは、 そのファイルシステムオブジェクトのオープンを承認するかを判定し (下記で説明するとおり) 応答を書き込まなければならない。"
480489
481490 #. type: Plain text
482491 #: build/C/man7/fanotify.7:290
483492 msgid "To check for any close event, the following bit mask may be used:"
484-msgstr ""
493+msgstr "クローズイベントを確認するために以下のビットマスクを使うことができる。"
485494
486495 #. type: TP
487496 #: build/C/man7/fanotify.7:290 build/C/man2/fanotify_mark.2:186
@@ -492,7 +501,7 @@ msgstr "B<FAN_CLOSE>"
492501 #. type: Plain text
493502 #: build/C/man7/fanotify.7:294
494503 msgid "A file was closed. This is a synonym for:"
495-msgstr ""
504+msgstr "ファイルがクローズされた。 以下の同義語である。"
496505
497506 #. type: Plain text
498507 #: build/C/man7/fanotify.7:296
@@ -506,13 +515,13 @@ msgid ""
506515 "The following macros are provided to iterate over a buffer containing "
507516 "fanotify event metadata returned by a B<read>(2) from an fanotify file "
508517 "descriptor:"
509-msgstr ""
518+msgstr "fanotify ファイルディスクリプターからの B<read>(2) が返した fanotify イベントメタデータを含むバッファーに対して繰り返しを行うため、 以下のマクロが提供されている。"
510519
511520 #. type: TP
512521 #: build/C/man7/fanotify.7:301
513522 #, no-wrap
514523 msgid "B<FAN_EVENT_OK(meta, len)>"
515-msgstr ""
524+msgstr "B<FAN_EVENT_OK(meta, len)>"
516525
517526 #. type: Plain text
518527 #: build/C/man7/fanotify.7:310
@@ -520,13 +529,13 @@ msgid ""
520529 "This macro checks the remaining length I<len> of the buffer I<meta> against "
521530 "the length of the metadata structure and the I<event_len> field of the first "
522531 "metadata structure in the buffer."
523-msgstr ""
532+msgstr "このマクロは、 バッファー I<meta> の残りの長さ I<len> を、 メタデータ構造体の長さとバッファーの最初のメタデータ構造体の I<event_len> フィールドと比較して検査する。"
524533
525534 #. type: TP
526535 #: build/C/man7/fanotify.7:310
527536 #, no-wrap
528537 msgid "B<FAN_EVENT_NEXT(meta, len)>"
529-msgstr ""
538+msgstr "B<FAN_EVENT_NEXT(meta, len)>"
530539
531540 #. type: Plain text
532541 #: build/C/man7/fanotify.7:329
@@ -538,18 +547,18 @@ msgid ""
538547 "pointer to the next metadata structure that follows I<meta>, and reduces "
539548 "I<len> by the number of bytes in the the metadata structure that has been "
540549 "skipped over (i.e., it subtracts I<meta-E<gt>event_len> from I<len>)."
541-msgstr ""
550+msgstr "このマクロは、 I<meta> が指すメタデータ構造体の I<event_len> フィールドで示された長さを使って、 I<meta> の次のメタデータ構造体のアドレスを計算する。 I<len> はバッファーに現在残っているメタデータのバイト数である。 このマクロは I<meta> の次のメタデータ構造体へのポインターを返し、 スキップされたメタデータ構造体のバイト数だけ I<len> を減算する (つまり、 I<len> から I<meta-E<gt>event_len> を引き算する)。"
542551
543552 #. type: Plain text
544553 #: build/C/man7/fanotify.7:331
545554 msgid "In addition, there is:"
546-msgstr ""
555+msgstr "また、 以下のマクロも用意されている。"
547556
548557 #. type: TP
549558 #: build/C/man7/fanotify.7:331
550559 #, no-wrap
551560 msgid "B<FAN_EVENT_METADATA_LEN>"
552-msgstr ""
561+msgstr "B<FAN_EVENT_METADATA_LEN>"
553562
554563 #. type: Plain text
555564 #: build/C/man7/fanotify.7:337
@@ -557,33 +566,33 @@ msgid ""
557566 "This macro returns the size (in bytes) of the structure "
558567 "I<fanotify_event_metadata>. This is the minimum size (and currently the "
559568 "only size) of any event metadata."
560-msgstr ""
569+msgstr "このマクロは I<fanotify_event_metadata> 構造体の (バイト単位の) サイズを返す。 返される値はイベントメタデータの最小値である (現在のところ、これが唯一のサイズである)。"
561570
562571 #. type: SS
563572 #: build/C/man7/fanotify.7:337
564573 #, no-wrap
565574 msgid "Monitoring an fanotify file descriptor for events"
566-msgstr ""
575+msgstr "fanotify ファイルディスクリプターのイベントを監視する"
567576
568577 #. type: Plain text
569578 #: build/C/man7/fanotify.7:344
570579 msgid ""
571580 "When an fanotify event occurs, the fanotify file descriptor indicates as "
572581 "readable when passed to B<epoll>(7), B<poll>(2), or B<select>(2)."
573-msgstr ""
582+msgstr "fanotify イベントが発生すると、 B<epoll>(7), B<poll>(2), B<select>(2) に fanotify ファイルディスクリプターが渡された場合には、そのファイルディスクリプターが読み出し可能であると通知される。"
574583
575584 #. type: SS
576585 #: build/C/man7/fanotify.7:344
577586 #, no-wrap
578587 msgid "Dealing with permission events"
579-msgstr ""
588+msgstr "アクセス許可イベントの取り扱い"
580589
581590 #. type: Plain text
582591 #: build/C/man7/fanotify.7:349
583592 msgid ""
584593 "For permission events, the application must B<write>(2) a structure of the "
585594 "following form to the fanotify file descriptor:"
586-msgstr ""
595+msgstr "アクセス許可イベントでは、 アプリケーションは以下の形式の構造体を fanotify ファイルディスクリプターに B<write>(2) しなければならない。"
587596
588597 #. type: Plain text
589598 #: build/C/man7/fanotify.7:356
@@ -594,23 +603,27 @@ msgid ""
594603 " __u32 response;\n"
595604 "};\n"
596605 msgstr ""
606+"struct fanotify_response {\n"
607+" __s32 fd;\n"
608+" __u32 response;\n"
609+"};\n"
597610
598611 #. type: Plain text
599612 #: build/C/man7/fanotify.7:360
600613 msgid "The fields of this structure are as follows:"
601-msgstr ""
614+msgstr "この構造体のフィールドは以下のとおりである。"
602615
603616 #. type: Plain text
604617 #: build/C/man7/fanotify.7:364
605618 msgid ""
606619 "This is the file descriptor from the structure I<fanotify_event_metadata>."
607-msgstr ""
620+msgstr "このフィールドは I<fanotify_event_metadata> 構造体で返されたファイルディスクリプターである。"
608621
609622 #. type: TP
610623 #: build/C/man7/fanotify.7:364
611624 #, no-wrap
612625 msgid "I<response>"
613-msgstr ""
626+msgstr "I<response>"
614627
615628 #. type: Plain text
616629 #: build/C/man7/fanotify.7:372
@@ -618,20 +631,20 @@ msgid ""
618631 "This field indicates whether or not the permission is to be granted. Its "
619632 "value must be either B<FAN_ALLOW> to allow the file operation or B<FAN_DENY> "
620633 "to deny the file operation."
621-msgstr ""
634+msgstr "このフィールドはアクセス許可を承認するかどうかを示す。 値は、このファイル操作を許可する B<FAN_ALLOW> か、 このファイル操作を拒否する B<FAN_DENY> のいずれかでなければならない。"
622635
623636 #. type: Plain text
624637 #: build/C/man7/fanotify.7:376
625638 msgid ""
626639 "If access is denied, the requesting application call will receive an "
627640 "B<EPERM> error."
628-msgstr ""
641+msgstr "アクセスを拒否した場合、 アクセスを要求したアプリケーションは B<EPERM> エラーを受け取ることになる。"
629642
630643 #. type: SS
631644 #: build/C/man7/fanotify.7:376
632645 #, no-wrap
633646 msgid "Closing the fanotify file descriptor"
634-msgstr ""
647+msgstr "fanotify ファイルディスクリプターのクローズ"
635648
636649 #. type: Plain text
637650 #: build/C/man7/fanotify.7:384
@@ -640,13 +653,13 @@ msgid ""
640653 "closed, the fanotify group is released and its resources are freed for reuse "
641654 "by the kernel. Upon B<close>(2), outstanding permission events will be set "
642655 "to allowed."
643-msgstr ""
656+msgstr "fanotify 通知グループを参照するすべてのファイルディスクリプターがクローズされると、 fanotify グループは解放され、 カーネルが再利用できるようにそのリソースは解放される。 B<close>(2) の際に、 処理中であったアクセス許可イベントには許可が設定される。"
644657
645658 #. type: SS
646659 #: build/C/man7/fanotify.7:384
647660 #, no-wrap
648661 msgid "/proc/[pid]/fdinfo"
649-msgstr ""
662+msgstr "/proc/[pid]/fdinfo"
650663
651664 #. type: Plain text
652665 #: build/C/man7/fanotify.7:394
@@ -654,7 +667,7 @@ msgid ""
654667 "The file I</proc/[pid]/fdinfo/[fd]> contains information about fanotify "
655668 "marks for file descriptor I<fd> of process I<pid>. See the kernel source "
656669 "file I<Documentation/filesystems/proc.txt> for details."
657-msgstr ""
670+msgstr "ファイル I</proc/[pid]/fdinfo/[fd]> には、 プロセス I<pid> のファイルディスクリプター I<fd> の fanotify マークに関する情報が格納される。 詳細はカーネルのソースファイル I<Documentation/filesystems/proc.txt> を参照。"
658671
659672 #. type: SH
660673 #: build/C/man7/fanotify.7:394 build/C/man2/fanotify_init.2:206
@@ -669,7 +682,7 @@ msgstr "エラー"
669682 msgid ""
670683 "In addition to the usual errors for B<read>(2), the following errors can "
671684 "occur when reading from the fanotify file descriptor:"
672-msgstr ""
685+msgstr "通常の B<read>(2) のエラーに加え、 fanotify ファイルディスクリプターから読み出しを行った際に以下のエラーが発生することがある。"
673686
674687 #. type: TP
675688 #: build/C/man7/fanotify.7:399 build/C/man7/fanotify.7:433
@@ -683,7 +696,7 @@ msgstr "B<EINVAL>"
683696 #. type: Plain text
684697 #: build/C/man7/fanotify.7:402
685698 msgid "The buffer is too small to hold the event."
686-msgstr ""
699+msgstr "バッファーがイベントを保持するには小さすぎる。"
687700
688701 #. type: TP
689702 #: build/C/man7/fanotify.7:402 build/C/man2/fanotify_init.2:216
@@ -697,7 +710,7 @@ msgstr "B<EMFILE>"
697710 msgid ""
698711 "The per-process limit on the number of open files has been reached. See the "
699712 "description of B<RLIMIT_NOFILE> in B<getrlimit>(2)."
700-msgstr ""
713+msgstr "オープンしたファイル数のプロセス毎の上限に達した。 B<getrlimit>(2) の B<RLIMIT_NOFILE> の説明を参照。"
701714
702715 #. type: TP
703716 #: build/C/man7/fanotify.7:409 build/C/man2/inotify_init.2:88
@@ -710,13 +723,13 @@ msgstr "B<ENFILE>"
710723 msgid ""
711724 "The system-wide limit on the number of open files has been reached. See I</"
712725 "proc/sys/fs/file-max> in B<proc>(5)."
713-msgstr ""
726+msgstr "オープンされたファイル数のシステム全体の上限に達した。 B<proc>(5) の I</proc/sys/fs/file-max> を参照。"
714727
715728 #. type: TP
716729 #: build/C/man7/fanotify.7:416
717730 #, no-wrap
718731 msgid "B<ETXTBSY>"
719-msgstr ""
732+msgstr "B<ETXTBSY>"
720733
721734 #. type: Plain text
722735 #: build/C/man7/fanotify.7:429
@@ -724,21 +737,21 @@ msgid ""
724737 "This error is returned by B<read>(2) if B<O_RDWR> or B<O_WRONLY> was "
725738 "specified in the I<event_f_flags> argument when calling B<fanotify_init>(2) "
726739 "and an event occurred for a monitored file that is currently being executed."
727-msgstr ""
740+msgstr "B<fanotify_init>(2) の呼び出し時に B<O_RDWR> か B<O_WRONLY> が I<event_f_flags> 引き数に指定されており、 現在実行中の監視対象のファイルに対してイベントが発生した際に、 このエラーが B<read>(2) から返される。"
728741
729742 #. type: Plain text
730743 #: build/C/man7/fanotify.7:433
731744 msgid ""
732745 "In addition to the usual errors for B<write>(2), the following errors can "
733746 "occur when writing to the fanotify file descriptor:"
734-msgstr ""
747+msgstr "通常の B<write>(2) のエラーに加え、 fanotify ファイルディスクリプターに書き込みを行った際に以下のエラーが発生することがある。"
735748
736749 #. type: Plain text
737750 #: build/C/man7/fanotify.7:439
738751 msgid ""
739752 "Fanotify access permissions are not enabled in the kernel configuration or "
740753 "the value of I<response> in the response structure is not valid."
741-msgstr ""
754+msgstr "fanotify アクセス許可がカーネルの設定で有効になっていない。 応答構造体の I<response> 値が無効である。"
742755
743756 #. type: TP
744757 #: build/C/man7/fanotify.7:439 build/C/man2/fanotify_mark.2:265
@@ -752,7 +765,7 @@ msgstr "B<ENOENT>"
752765 msgid ""
753766 "The file descriptor I<fd> in the response structure is not valid. This may "
754767 "occur when a response for the permission event has already been written."
755-msgstr ""
768+msgstr "応答構造体のファイルディスクリプター I<fd> が無効である。 このエラーはアクセス許可イベントに対する応答がすでに書き込まれている際に発生する。"
756769
757770 #. type: SH
758771 #: build/C/man7/fanotify.7:446 build/C/man2/fanotify_init.2:233
@@ -768,7 +781,7 @@ msgstr "バージョン"
768781 msgid ""
769782 "The fanotify API was introduced in version 2.6.36 of the Linux kernel and "
770783 "enabled in version 2.6.37. Fdinfo support was added in version 3.8."
771-msgstr ""
784+msgstr "fanotify API は Linux カーネルのバージョン 2.6.36 で導入され、 バージョン 2.6.37 で有効にされた。 fdinfo のサポートはバージョン 3.8 で追加された。"
772785
773786 #. type: SH
774787 #: build/C/man7/fanotify.7:450 build/C/man2/fanotify_init.2:237
@@ -797,7 +810,7 @@ msgid ""
797810 "B<CONFIG_FANOTIFY> configuration option enabled. In addition, fanotify "
798811 "permission handling is available only if the "
799812 "B<CONFIG_FANOTIFY_ACCESS_PERMISSIONS> configuration option is enabled."
800-msgstr ""
813+msgstr "fanotify API が利用できるのは、 カーネルが B<CONFIG_FANOTIFY> 設定オプションを有効にして作成されている場合だけである。 また、 fanotify アクセス許可の処理が利用できるのは B<CONFIG_FANOTIFY_ACCESS_PERMISSIONS> 設定オプションが有効になっている場合だけである。"
801814
802815 #. type: SS
803816 #: build/C/man7/fanotify.7:459 build/C/man7/inotify.7:624
@@ -811,7 +824,7 @@ msgid ""
811824 "Fanotify reports only events that a user-space program triggers through the "
812825 "filesystem API. As a result, it does not catch remote events that occur on "
813826 "network filesystems."
814-msgstr ""
827+msgstr "fanotify が報告するのはユーザー空間プログラムがファイルシステム API 経由で行ったイベントだけである。 その結果、 fanotify ではネットワークファイルシステム上で発生したリモートイベントは捕捉できない。"
815828
816829 #. type: Plain text
817830 #: build/C/man7/fanotify.7:471
@@ -828,7 +841,7 @@ msgid ""
828841 "Events for directories are created only if the directory itself is opened, "
829842 "read, and closed. Adding, removing, or changing children of a marked "
830843 "directory does not create events for the monitored directory itself."
831-msgstr ""
844+msgstr "ディレクトリのイベントは、ディレクトリ自身がオープン、読み出し、クローズされた場合にしか作成されない。 マークされたディレクトリでの子要素の追加、削除、変更では、監視対象のディレクトリ自身へのイベントは作成されない。"
832845
833846 #. type: Plain text
834847 #: build/C/man7/fanotify.7:484
@@ -839,12 +852,12 @@ msgid ""
839852 "has been created under a marked directory, which makes recursive monitoring "
840853 "difficult.) Monitoring mounts offers the capability to monitor a whole "
841854 "directory tree."
842-msgstr ""
855+msgstr "fanotify のディレクトリの監視は再帰的ではない。 ディレクトリ内のサブディレクトリを監視するには、 追加で監視用のマークを作成しなければならない。 (ただし、 fanotify API では、サブディレクトリが監視対象としてマークされているディレクトリに作成された際に検出する手段は提供されていない点に注意すること。) マウントの監視を使うことで、 ディレクトリツリー全体を監視することができる。"
843856
844857 #. type: Plain text
845858 #: build/C/man7/fanotify.7:487
846859 msgid "The event queue can overflow. In this case, events are lost."
847-msgstr ""
860+msgstr "ベントキューはオーバーフローすることがある。 この場合、 イベントは失われる。"
848861
849862 #. type: SH
850863 #: build/C/man7/fanotify.7:487 build/C/man2/fanotify_init.2:239
@@ -856,7 +869,7 @@ msgstr "バグ"
856869 #. type: Plain text
857870 #: build/C/man7/fanotify.7:490
858871 msgid "As of Linux 3.17, the following bugs exist:"
859-msgstr ""
872+msgstr "Linux 3.17 時点では、 以下のバグが存在する。"
860873
861874 #. type: IP
862875 #: build/C/man7/fanotify.7:490 build/C/man7/fanotify.7:499
@@ -882,12 +895,12 @@ msgid ""
882895 "of B<mount>(8). A listener that marked a mount will be notified only of "
883896 "events that were triggered for a filesystem object using the same mount. "
884897 "Any other event will pass unnoticed."
885-msgstr ""
898+msgstr "Linux では、ファイルシステムオブジェクトは複数のパスでアクセス可能である。 例えば、 ファイルシステムの一部は B<mount>(8) の I<--bind> オプションを使って再マウントされることがある。 マークされたマウントの監視者は、 同じマウントを使ったファイルオブジェクトについてのみイベント通知を受ける。 それ以外のイベントは通知されない。"
886899
887900 #. type: Plain text
888901 #: build/C/man7/fanotify.7:503
889902 msgid "Calling B<fallocate>(2) does not create any fanotify events."
890-msgstr ""
903+msgstr "B<fallocate>(2) の呼び出しでは fanotify イベントが作成されない。"
891904
892905 #. FIXME . A patch was proposed.
893906 #. type: Plain text
@@ -898,7 +911,7 @@ msgid ""
898911 "passing a file descriptor for that file. This poses a security risk, when "
899912 "the B<CAP_SYS_ADMIN> capability is set for programs executed by unprivileged "
900913 "users."
901-msgstr ""
914+msgstr "イベントが生成された際に、 そのファイルのファイルディスクリプターを渡す前に、 イベントを受信するプロセスのユーザー ID がそのファイルに対する読み出し/書き込み許可があるかの確認は行われない。 非特権ユーザーによって実行されたプログラムに B<CAP_SYS_ADMIN> ケーパビリティーがセットされている場合には、 このことはセキュリティーリスクとなる。"
902915
903916 #. type: Plain text
904917 #: build/C/man7/fanotify.7:522
@@ -908,7 +921,7 @@ msgid ""
908921 "successfully copied to the user-space buffer before the error occurred. The "
909922 "return value will not be -1, and I<errno> will not be set. Thus, the "
910923 "reading application has no way to detect the error."
911-msgstr ""
924+msgstr "B<read>(2) の呼び出しが fanotify キューから複数のイベントを処理している際に、 エラーが発生した場合、 返り値はエラーが発生する前までにユーザー空間バッファーに正常にコピーされたイベントの合計長となる。 返り値は -1 にならず、 I<errno> もセットされない。 したがって、 読み出しを行うアプリケーションではエラーを検出する方法はない。"
912925
913926 #. type: SH
914927 #: build/C/man7/fanotify.7:522 build/C/man7/inotify.7:815
@@ -923,7 +936,7 @@ msgid ""
923936 "the mount point passed as a command-line argument and waits for events of "
924937 "type B<FAN_PERM_OPEN> and B<FAN_CLOSE_WRITE>. When a permission event "
925938 "occurs, a B<FAN_ALLOW> response is given."
926-msgstr ""
939+msgstr "以下のプログラムは fanotify API の使用法を示すものである。 コマンドライン引き数で渡されたマウントポイントを監視し、 種別が B<FAN_PERM_OPEN> と B<FAN_CLOSE_WRITE> のイベントを待つ。 アクセス許可イベントが発生には、 B<FAN_ALLOW> 応答を返す。"
927940
928941 #. type: Plain text
929942 #: build/C/man7/fanotify.7:542
@@ -932,7 +945,7 @@ msgid ""
932945 "notes>. Before the file was opened, a B<FAN_OPEN_PERM> event occurred. "
933946 "After the file was closed, a B<FAN_CLOSE_WRITE> event occurred. Execution "
934947 "of the program ends when the user presses the ENTER key."
935-msgstr ""
948+msgstr "以下の出力例はファイル I</home/user/temp/notes> を編集した際に記録されたものである。 ファイルをオープンする前に B<FAN_OPEN_PERM> イベントが発生している。 ファイルをクローズした後に B<FAN_CLOSE_WRITE> イベントが発生している。 エンターキーをユーザーが押すと、 このプログラムの実行は終了する。"
936949
937950 #. type: SS
938951 #: build/C/man7/fanotify.7:542 build/C/man7/inotify.7:838
@@ -982,7 +995,7 @@ msgid ""
982995 "#include E<lt>sys/fanotify.hE<gt>\n"
983996 "#include E<lt>unistd.hE<gt>\n"
984997 msgstr ""
985-"#define _GNU_SOURCE /* Needed to get O_LARGEFILE definition */\n"
998+"#define _GNU_SOURCE /* O_LARGEFILE の定義を得るために必要 */\n"
986999 "#include E<lt>errno.hE<gt>\n"
9871000 "#include E<lt>fcntl.hE<gt>\n"
9881001 "#include E<lt>limits.hE<gt>\n"
@@ -996,7 +1009,7 @@ msgstr ""
9961009 #: build/C/man7/fanotify.7:567
9971010 #, no-wrap
9981011 msgid "/* Read all available fanotify events from the file descriptor 'fd' */\n"
999-msgstr "/* Read all available fanotify events from the file descriptor 'fd' */\n"
1012+msgstr "/* ファイルディスクリプター 'fd' から読み出しできる全 fanotify イベントを読み出す */\n"
10001013
10011014 #. type: Plain text
10021015 #: build/C/man7/fanotify.7:578
@@ -1028,7 +1041,7 @@ msgstr ""
10281041 #: build/C/man7/fanotify.7:580
10291042 #, no-wrap
10301043 msgid " /* Loop while events can be read from fanotify file descriptor */\n"
1031-msgstr " /* Loop while events can be read from fanotify file descriptor */\n"
1044+msgstr " /* fanotify ファイルディスクリプターからイベントが読み出せる間はループする */\n"
10321045
10331046 #. type: Plain text
10341047 #: build/C/man7/fanotify.7:582
@@ -1040,7 +1053,7 @@ msgstr " for(;;) {\n"
10401053 #: build/C/man7/fanotify.7:584
10411054 #, no-wrap
10421055 msgid " /* Read some events */\n"
1043-msgstr " /* Read some events */\n"
1056+msgstr " /* イベントを読み出す */\n"
10441057
10451058 #. type: Plain text
10461059 #: build/C/man7/fanotify.7:590
@@ -1062,7 +1075,7 @@ msgstr ""
10621075 #: build/C/man7/fanotify.7:592
10631076 #, no-wrap
10641077 msgid " /* Check if end of available data reached */\n"
1065-msgstr " /* Check if end of available data reached */\n"
1078+msgstr " /* 読み出せるデータの最後に達しているかチェックする */\n"
10661079
10671080 #. type: Plain text
10681081 #: build/C/man7/fanotify.7:595 build/C/man7/inotify.7:901
@@ -1078,7 +1091,7 @@ msgstr ""
10781091 #: build/C/man7/fanotify.7:597
10791092 #, no-wrap
10801093 msgid " /* Point to the first event in the buffer */\n"
1081-msgstr " /* Point to the first event in the buffer */\n"
1094+msgstr " /* バッファーの最初のイベントを参照する */\n"
10821095
10831096 #. type: Plain text
10841097 #: build/C/man7/fanotify.7:599
@@ -1090,7 +1103,7 @@ msgstr " metadata = buf;\n"
10901103 #: build/C/man7/fanotify.7:601 build/C/man7/inotify.7:903
10911104 #, no-wrap
10921105 msgid " /* Loop over all events in the buffer */\n"
1093-msgstr " /* Loop over all events in the buffer */\n"
1106+msgstr " /* バッファー内の全イベントを処理する */\n"
10941107
10951108 #. type: Plain text
10961109 #: build/C/man7/fanotify.7:603
@@ -1102,7 +1115,7 @@ msgstr " while (FAN_EVENT_OK(metadata, len)) {\n"
11021115 #: build/C/man7/fanotify.7:605
11031116 #, no-wrap
11041117 msgid " /* Check that run-time and compile-time structures match */\n"
1105-msgstr " /* Check that run-time and compile-time structures match */\n"
1118+msgstr " /* 実行時とコンパイル時の構造体が一致するか確認する */\n"
11061119
11071120 #. type: Plain text
11081121 #: build/C/man7/fanotify.7:611
@@ -1128,9 +1141,9 @@ msgid ""
11281141 " queue overflow, or a file descriptor (a nonnegative\n"
11291142 " integer). Here, we simply ignore queue overflow. */\n"
11301143 msgstr ""
1131-" /* metadata-E<gt>fd contains either FAN_NOFD, indicating a\n"
1132-" queue overflow, or a file descriptor (a nonnegative\n"
1133-" integer). Here, we simply ignore queue overflow. */\n"
1144+" /* metadata-E<gt>fd には、キューのオーバーフローを示す FAN_NOFD か、\n"
1145+" ファイルディスクリプター (負でない整数) のいずれかが入っている。\n"
1146+" ここではキューのオーバーフローは無視している。 */\n"
11341147
11351148 #. type: Plain text
11361149 #: build/C/man7/fanotify.7:617
@@ -1142,7 +1155,7 @@ msgstr " if (metadata-E<gt>fd E<gt>= 0) {\n"
11421155 #: build/C/man7/fanotify.7:619
11431156 #, no-wrap
11441157 msgid " /* Handle open permission event */\n"
1145-msgstr " /* Handle open permission event */\n"
1158+msgstr " /* オープン許可イベントを処理する */\n"
11461159
11471160 #. type: Plain text
11481161 #: build/C/man7/fanotify.7:622
@@ -1158,7 +1171,7 @@ msgstr ""
11581171 #: build/C/man7/fanotify.7:624
11591172 #, no-wrap
11601173 msgid " /* Allow file to be opened */\n"
1161-msgstr " /* Allow file to be opened */\n"
1174+msgstr " /* ファイルのオープンを許可する */\n"
11621175
11631176 #. type: Plain text
11641177 #: build/C/man7/fanotify.7:630
@@ -1180,7 +1193,7 @@ msgstr ""
11801193 #: build/C/man7/fanotify.7:632
11811194 #, no-wrap
11821195 msgid " /* Handle closing of writable file event */\n"
1183-msgstr " /* Handle closing of writable file event */\n"
1196+msgstr " /* 書き込み可能ファイルのクローズイベントを処理する */\n"
11841197
11851198 #. type: Plain text
11861199 #: build/C/man7/fanotify.7:635
@@ -1196,7 +1209,7 @@ msgstr ""
11961209 #: build/C/man7/fanotify.7:637
11971210 #, no-wrap
11981211 msgid " /* Retrieve and print pathname of the accessed file */\n"
1199-msgstr " /* Retrieve and print pathname of the accessed file */\n"
1212+msgstr " /* アクセスされたファイルのパス名を取得し表示する */\n"
12001213
12011214 #. type: Plain text
12021215 #: build/C/man7/fanotify.7:646
@@ -1234,7 +1247,7 @@ msgstr ""
12341247 #: build/C/man7/fanotify.7:651
12351248 #, no-wrap
12361249 msgid " /* Close the file descriptor of the event */\n"
1237-msgstr " /* Close the file descriptor of the event */\n"
1250+msgstr " /* イベントのファイルディスクリプターをクローズする */\n"
12381251
12391252 #. type: Plain text
12401253 #: build/C/man7/fanotify.7:654
@@ -1250,7 +1263,7 @@ msgstr ""
12501263 #: build/C/man7/fanotify.7:656
12511264 #, no-wrap
12521265 msgid " /* Advance to next event */\n"
1253-msgstr " /* Advance to next event */\n"
1266+msgstr " /* 次のイベントに進む */\n"
12541267
12551268 #. type: Plain text
12561269 #: build/C/man7/fanotify.7:661
@@ -1290,7 +1303,7 @@ msgstr ""
12901303 #: build/C/man7/fanotify.7:671
12911304 #, no-wrap
12921305 msgid " /* Check mount point is supplied */\n"
1293-msgstr " /* Check mount point is supplied */\n"
1306+msgstr " /* マウントポイントが指定されたか確認する */\n"
12941307
12951308 #. type: Plain text
12961309 #: build/C/man7/fanotify.7:676
@@ -1316,7 +1329,7 @@ msgstr " printf(\"Press enter key to terminate.\\en\");\n"
13161329 #: build/C/man7/fanotify.7:680
13171330 #, no-wrap
13181331 msgid " /* Create the file descriptor for accessing the fanotify API */\n"
1319-msgstr " /* Create the file descriptor for accessing the fanotify API */\n"
1332+msgstr " /* fanotify API にアクセスするためのファイルディスクリプターを作成する */\n"
13201333
13211334 #. type: Plain text
13221335 #: build/C/man7/fanotify.7:687
@@ -1345,10 +1358,10 @@ msgid ""
13451358 " - notification events after closing a write-enabled\n"
13461359 " file descriptor */\n"
13471360 msgstr ""
1348-" /* Mark the mount for:\n"
1349-" - permission events before opening files\n"
1350-" - notification events after closing a write-enabled\n"
1351-" file descriptor */\n"
1361+" /* 指定されたマウントに対して以下を監視するようにマークを付ける:\n"
1362+" - ファイルのオープン前のアクセス許可イベント\n"
1363+" - 書き込み可能なファイルディスクリプターのクローズ後の\n"
1364+" 通知イベント */\n"
13521365
13531366 #. type: Plain text
13541367 #: build/C/man7/fanotify.7:699
@@ -1372,7 +1385,7 @@ msgstr ""
13721385 #: build/C/man7/fanotify.7:701 build/C/man7/inotify.7:989
13731386 #, no-wrap
13741387 msgid " /* Prepare for polling */\n"
1375-msgstr " /* Prepare for polling */\n"
1388+msgstr " /* ポーリングの準備 */\n"
13761389
13771390 #. type: Plain text
13781391 #: build/C/man7/fanotify.7:703 build/C/man7/inotify.7:991
@@ -1384,7 +1397,7 @@ msgstr " nfds = 2;\n"
13841397 #: build/C/man7/fanotify.7:705 build/C/man7/inotify.7:993
13851398 #, no-wrap
13861399 msgid " /* Console input */\n"
1387-msgstr " /* Console input */\n"
1400+msgstr " /* コンソールの入力 */\n"
13881401
13891402 #. type: Plain text
13901403 #: build/C/man7/fanotify.7:708 build/C/man7/inotify.7:996
@@ -1400,7 +1413,7 @@ msgstr ""
14001413 #: build/C/man7/fanotify.7:710
14011414 #, no-wrap
14021415 msgid " /* Fanotify input */\n"
1403-msgstr " /* Fanotify input */\n"
1416+msgstr " /* fanotify の入力 */\n"
14041417
14051418 #. type: Plain text
14061419 #: build/C/man7/fanotify.7:713 build/C/man7/inotify.7:1001
@@ -1416,7 +1429,7 @@ msgstr ""
14161429 #: build/C/man7/fanotify.7:715
14171430 #, no-wrap
14181431 msgid " /* This is the loop to wait for incoming events */\n"
1419-msgstr " /* This is the loop to wait for incoming events */\n"
1432+msgstr " /* イベントの発生を待つループ */\n"
14201433
14211434 #. type: Plain text
14221435 #: build/C/man7/fanotify.7:717
@@ -1437,8 +1450,8 @@ msgstr ""
14371450 " while (1) {\n"
14381451 " poll_num = poll(fds, nfds, -1);\n"
14391452 " if (poll_num == -1) {\n"
1440-" if (errno == EINTR) /* Interrupted by a signal */\n"
1441-" continue; /* Restart poll() */\n"
1453+" if (errno == EINTR) /* シグナルに割り込まれた場合 */\n"
1454+" continue; /* poll() を再開する */\n"
14421455
14431456 #. type: Plain text
14441457 #: build/C/man7/fanotify.7:727
@@ -1448,7 +1461,7 @@ msgid ""
14481461 " exit(EXIT_FAILURE);\n"
14491462 " }\n"
14501463 msgstr ""
1451-" perror(\"poll\"); /* Unexpected error */\n"
1464+" perror(\"poll\"); /* 予期しないエラー */\n"
14521465 " exit(EXIT_FAILURE);\n"
14531466 " }\n"
14541467
@@ -1466,7 +1479,7 @@ msgstr ""
14661479 #: build/C/man7/fanotify.7:732
14671480 #, no-wrap
14681481 msgid " /* Console input is available: empty stdin and quit */\n"
1469-msgstr " /* Console input is available: empty stdin and quit */\n"
1482+msgstr " /* コンソールからの入力がある場合: 空の標準入力であれば終了 */\n"
14701483
14711484 #. type: Plain text
14721485 #: build/C/man7/fanotify.7:737 build/C/man7/inotify.7:1024
@@ -1492,7 +1505,7 @@ msgstr " if (fds[1].revents & POLLIN) {\n"
14921505 #: build/C/man7/fanotify.7:741
14931506 #, no-wrap
14941507 msgid " /* Fanotify events are available */\n"
1495-msgstr " /* Fanotify events are available */\n"
1508+msgstr " /* fanotify イベントがある場合 */\n"
14961509
14971510 #. type: Plain text
14981511 #: build/C/man7/fanotify.7:746
@@ -1573,7 +1586,7 @@ msgstr "2014-10-02"
15731586 #. type: Plain text
15741587 #: build/C/man2/fanotify_init.2:27
15751588 msgid "fanotify_init - create and initialize fanotify group"
1576-msgstr ""
1589+msgstr "fanotify_init - fanotify グループを作成し、初期化する"
15771590
15781591 #. type: SH
15791592 #: build/C/man2/fanotify_init.2:27 build/C/man2/fanotify_mark.2:28
@@ -1612,7 +1625,7 @@ msgstr "fanotify API の概要については B<fanotify>(7) を参照。"
16121625 msgid ""
16131626 "B<fanotify_init>() initializes a new fanotify group and returns a file "
16141627 "descriptor for the event queue associated with the group."
1615-msgstr ""
1628+msgstr "B<fanotify_init>() は新しい fanotify グループを初期化し、 このグループに関連付けられたイベントキューに対するファイルディスクリプターを返す。"
16161629
16171630 #. type: Plain text
16181631 #: build/C/man2/fanotify_init.2:51
@@ -1624,21 +1637,21 @@ msgid ""
16241637 "events can be used to determine whether another application is permitted to "
16251638 "access a file or directory. Permission to access filesystem objects is "
16261639 "granted by writing to the file descriptor."
1627-msgstr ""
1640+msgstr "このファイルディスクリプターは、 B<fanotify_mark>(2) の呼び出しで fanotify イベントが作成されるファイル、 ディレクトリ、 マウントを指定するのに使用できる。 B<fanotify_mark>(2) で指定したファイル、 これらのイベントは、 このファイルディスクリプターからの読み出しで受信する。 いくつかのイベントは、 ファイルがアクセスされたことを示す単なる情報である。 他のいくつかのイベントは、 別のアプリケーションがファイルやディレクトリにアクセスする許可を与えるかを判定するのに使用される。 ファイルシステムオブジェクトへのアクセス許可イベントについては、 承認結果をこのファイルディスクリプターに書き込む。"
16281641
16291642 #. type: Plain text
16301643 #: build/C/man2/fanotify_init.2:54
16311644 msgid ""
16321645 "Multiple programs may be using the fanotify interface at the same time to "
16331646 "monitor the same files."
1634-msgstr ""
1647+msgstr "複数のプログラムが同時に fanotify インターフェースを使って同じファイルを同時に監視することができる。"
16351648
16361649 #. type: Plain text
16371650 #: build/C/man2/fanotify_init.2:58
16381651 msgid ""
16391652 "In the current implementation, the number of fanotify groups per user is "
16401653 "limited to 128. This limit cannot be overridden."
1641-msgstr ""
1654+msgstr "現在の実装では、 ユーザーあたりの fanotify グループ数は 128 に制限されている。 この制限は上書きすることができない。"
16421655
16431656 #. type: Plain text
16441657 #: build/C/man2/fanotify_init.2:67
@@ -1647,7 +1660,7 @@ msgid ""
16471660 "constraint might be relaxed in future versions of the API. Therefore, "
16481661 "certain additional capability checks have been implemented as indicated "
16491662 "below."
1650-msgstr ""
1663+msgstr "B<fanotify_init>() を呼び出すには B<CAP_SYS_ADMIN> ケーパビリティーが必要である。 この制約は将来のバージョンの API で緩和される可能性がある。 そのため、 以下に示すケーパビリティーチェックのいくつかが実装されている。"
16511664
16521665 #. type: Plain text
16531666 #: build/C/man2/fanotify_init.2:73
@@ -1655,26 +1668,26 @@ msgid ""
16551668 "The I<flags> argument contains a multi-bit field defining the notification "
16561669 "class of the listening application and further single bit fields specifying "
16571670 "the behavior of the file descriptor."
1658-msgstr ""
1671+msgstr "I<flags> 引き数は、 イベントを待つアプリケーションの通知クラスを定義する複数ビットのフィールドである。 これに加えて、 このファイルディスクリプターの動作を示す 1 ビットのフィールドがある。"
16591672
16601673 #. type: Plain text
16611674 #: build/C/man2/fanotify_init.2:77
16621675 msgid ""
16631676 "If multiple listeners for permission events exist, the notification class is "
16641677 "used to establish the sequence in which the listeners receive the events."
1665-msgstr ""
1678+msgstr "アクセス許可イベントを監視しているプログラムが複数いる場合、 通知クラスを使って監視するプログラムのイベント受信順序が管理される。"
16661679
16671680 #. type: Plain text
16681681 #: build/C/man2/fanotify_init.2:80
16691682 msgid ""
16701683 "Only one of the following notification classes may be specified in I<flags>:"
1671-msgstr ""
1684+msgstr "以下の通知クラスのいずれか一つだけを I<flags> に指定できる。"
16721685
16731686 #. type: TP
16741687 #: build/C/man2/fanotify_init.2:80
16751688 #, no-wrap
16761689 msgid "B<FAN_CLASS_PRE_CONTENT>"
1677-msgstr ""
1690+msgstr "B<FAN_CLASS_PRE_CONTENT>"
16781691
16791692 #. type: Plain text
16801693 #: build/C/man2/fanotify_init.2:88
@@ -1684,13 +1697,13 @@ msgid ""
16841697 "is intended for event listeners that need to access files before they "
16851698 "contain their final data. This notification class might be used by "
16861699 "hierarchical storage managers, for example."
1687-msgstr ""
1700+msgstr "この値は、 ファイルがアクセスされたことを通知するイベントと、 ファイルへのアクセスするかの許可の判断を求めるイベントを受信することを示す。 これはイベント受信者がファイルが最終的なデータを格納する前にそのファイルにアクセスする必要がある場合に使用される。 この通知クラスは例えば階層型ストレージ管理などで使用される。"
16881701
16891702 #. type: TP
16901703 #: build/C/man2/fanotify_init.2:88
16911704 #, no-wrap
16921705 msgid "B<FAN_CLASS_CONTENT>"
1693-msgstr ""
1706+msgstr "B<FAN_CLASS_CONTENT>"
16941707
16951708 #. type: Plain text
16961709 #: build/C/man2/fanotify_init.2:96
@@ -1700,13 +1713,13 @@ msgid ""
17001713 "is intended for event listeners that need to access files when they already "
17011714 "contain their final content. This notification class might be used by "
17021715 "malware detection programs, for example."
1703-msgstr ""
1716+msgstr "この値は、 ファイルがアクセスされたことを通知するイベントと、 ファイルへのアクセスするかの許可の判断を求めるイベントを受信することを示す。 これはイベント受信者がファイルに最終的なデータが格納された際にそのファイルにアクセスする必要がある場合に使用される。 この通知クラスは例えばウイルス検知プログラムなどで使用される。"
17041717
17051718 #. type: TP
17061719 #: build/C/man2/fanotify_init.2:96
17071720 #, no-wrap
17081721 msgid "B<FAN_CLASS_NOTIF>"
1709-msgstr ""
1722+msgstr "B<FAN_CLASS_NOTIF>"
17101723
17111724 #. type: Plain text
17121725 #: build/C/man2/fanotify_init.2:103
@@ -1714,7 +1727,7 @@ msgid ""
17141727 "This is the default value. It does not need to be specified. This value "
17151728 "only allows the receipt of events notifying that a file has been accessed. "
17161729 "Permission decisions before the file is accessed are not possible."
1717-msgstr ""
1730+msgstr "これはデフォルト値である。 この値を指定する必要はない。 この値は、 ファイルがアクセスされたことを通知するイベントの受信だけを行うことを意味する。 ファイルがアクセスする前にアクセス許可の判定を行うことはできない。"
17181731
17191732 #. type: Plain text
17201733 #: build/C/man2/fanotify_init.2:111
@@ -1723,12 +1736,12 @@ msgid ""
17231736 "order B<FAN_CLASS_PRE_CONTENT>, B<FAN_CLASS_CONTENT>, B<FAN_CLASS_NOTIF>. "
17241737 "The order of notification for listeners in the same notification class is "
17251738 "undefined."
1726-msgstr ""
1739+msgstr "異なる通知クラスの受信者は B<FAN_CLASS_PRE_CONTENT>, B<FAN_CLASS_CONTENT>, B<FAN_CLASS_NOTIF> の順序でイベントを受信する。 同じ通知クラスの受信者での通知順序は不定である。"
17271740
17281741 #. type: Plain text
17291742 #: build/C/man2/fanotify_init.2:114
17301743 msgid "The following bits can additionally be set in I<flags>:"
1731-msgstr ""
1744+msgstr "I<flags> には以下のビットを追加でセットすることができる。"
17321745
17331746 #. type: TP
17341747 #: build/C/man2/fanotify_init.2:114
@@ -1741,7 +1754,7 @@ msgstr "B<FAN_CLOEXEC>"
17411754 msgid ""
17421755 "Set the close-on-exec flag (B<FD_CLOEXEC>) on the new file descriptor. See "
17431756 "the description of the B<O_CLOEXEC> flag in B<open>(2)."
1744-msgstr ""
1757+msgstr "close-on-exec フラグ (B<FD_CLOEXEC>) を新しいファイルディスクリプターにセットする。 B<open>(2) の B<O_CLOEXEC> フラグの説明を参照。"
17451758
17461759 #. type: TP
17471760 #: build/C/man2/fanotify_init.2:123
@@ -1755,33 +1768,33 @@ msgid ""
17551768 "Enable the nonblocking flag (B<O_NONBLOCK>) for the file descriptor. "
17561769 "Reading from the file descriptor will not block. Instead, if no data is "
17571770 "available, B<read>(2) will fail with the error B<EAGAIN>."
1758-msgstr ""
1771+msgstr "ノンブロッキングフラグ (B<O_NONBLOCK>) をそのファイルディスクリプターで有効にする。 このファイルディスクリプターからの読み出しは停止しない。 その代わり、 読みだし可能なデータが何もない場合、 B<read>(2) はエラー B<EAGAIN> で失敗する。"
17591772
17601773 #. type: TP
17611774 #: build/C/man2/fanotify_init.2:133
17621775 #, no-wrap
17631776 msgid "B<FAN_UNLIMITED_QUEUE>"
1764-msgstr ""
1777+msgstr "B<FAN_UNLIMITED_QUEUE>"
17651778
17661779 #. type: Plain text
17671780 #: build/C/man2/fanotify_init.2:139
17681781 msgid ""
17691782 "Remove the limit of 16384 events for the event queue. Use of this flag "
17701783 "requires the B<CAP_SYS_ADMIN> capability."
1771-msgstr ""
1784+msgstr "そのイベントキューの 16384 イベントの上限を削除する。 このフラグを使用するには B<CAP_SYS_ADMIN> ケーパビリティーが必要である。"
17721785
17731786 #. type: TP
17741787 #: build/C/man2/fanotify_init.2:139
17751788 #, no-wrap
17761789 msgid "B<FAN_UNLIMITED_MARKS>"
1777-msgstr ""
1790+msgstr "B<FAN_UNLIMITED_MARKS>"
17781791
17791792 #. type: Plain text
17801793 #: build/C/man2/fanotify_init.2:145
17811794 msgid ""
17821795 "Remove the limit of 8192 marks. Use of this flag requires the "
17831796 "B<CAP_SYS_ADMIN> capability."
1784-msgstr ""
1797+msgstr "8192 マークの上限を削除する。 このフラグを使用するには B<CAP_SYS_ADMIN> ケーパビリティーが必要である。"
17851798
17861799 #. type: Plain text
17871800 #: build/C/man2/fanotify_init.2:158
@@ -1791,46 +1804,46 @@ msgid ""
17911804 "details of these flags, see the description of the I<flags> values in "
17921805 "B<open>(2). I<event_f_flags> includes a multi-bit field for the access "
17931806 "mode. This field can take the following values:"
1794-msgstr ""
1807+msgstr "I<event_f_flags> 引き数は fanotify イベントが作成されるオープンファイル記述にセットされるファイル状態フラグを定義する。 これらのフラグの詳細については B<open>(2) の I<flags> 値の説明を参照のこと。 I<event_f_flags> にはアクセスモードのビットを複数入れることができる。 このフィールドには以下の値も指定することができる。"
17951808
17961809 #. type: TP
17971810 #: build/C/man2/fanotify_init.2:158
17981811 #, no-wrap
17991812 msgid "B<O_RDONLY>"
1800-msgstr ""
1813+msgstr "B<O_RDONLY>"
18011814
18021815 #. type: Plain text
18031816 #: build/C/man2/fanotify_init.2:161
18041817 msgid "This value allows only read access."
1805-msgstr ""
1818+msgstr "読み出しアクセスのみを許可する。"
18061819
18071820 #. type: TP
18081821 #: build/C/man2/fanotify_init.2:161
18091822 #, no-wrap
18101823 msgid "B<O_WRONLY>"
1811-msgstr ""
1824+msgstr "B<O_WRONLY>"
18121825
18131826 #. type: Plain text
18141827 #: build/C/man2/fanotify_init.2:164
18151828 msgid "This value allows only write access."
1816-msgstr ""
1829+msgstr "書き込みアクセスのみを許可する。"
18171830
18181831 #. type: TP
18191832 #: build/C/man2/fanotify_init.2:164
18201833 #, no-wrap
18211834 msgid "B<O_RDWR>"
1822-msgstr ""
1835+msgstr "B<O_RDWR>"
18231836
18241837 #. type: Plain text
18251838 #: build/C/man2/fanotify_init.2:167
18261839 msgid "This value allows read and write access."
1827-msgstr ""
1840+msgstr "読み出しと書き込みの両方を許可する。"
18281841
18291842 #. type: Plain text
18301843 #: build/C/man2/fanotify_init.2:171
18311844 msgid ""
18321845 "Additional bits can be set in I<event_f_flags>. The most useful values are:"
1833-msgstr ""
1846+msgstr "他のビットも I<event_f_flags> もセットすることができる。 役立つであろう値は以下である。"
18341847
18351848 #. type: TP
18361849 #: build/C/man2/fanotify_init.2:171
@@ -1844,7 +1857,7 @@ msgid ""
18441857 "Enable support for files exceeding 2 GB. Failing to set this flag will "
18451858 "result in an B<EOVERFLOW> error when trying to open a large file which is "
18461859 "monitored by an fanotify group on a 32-bit system."
1847-msgstr ""
1860+msgstr "2 GB を超えるファイルのサポートを有効にする。 このフラグのセットに失敗すると、 32 ビットシステムで fanotify グループが監視するラージファイルをオープンしようとした際に B<EOVERFLOW> エラーとなる。"
18481861
18491862 #. type: TP
18501863 #: build/C/man2/fanotify_init.2:178
@@ -1857,7 +1870,7 @@ msgstr "B<O_CLOEXEC>"
18571870 msgid ""
18581871 "Enable the close-on-exec flag for the file descriptor. See the description "
18591872 "of the B<O_CLOEXEC> flag in B<open>(2) for reasons why this may be useful."
1860-msgstr ""
1873+msgstr "このファイルディスクリプターで close-on-exec フラグを有効にする。 このフラグが役立つ理由については B<open>(2) の B<O_CLOEXEC> フラグの説明を参照。"
18611874
18621875 #. type: Plain text
18631876 #: build/C/man2/fanotify_init.2:199
@@ -1865,7 +1878,7 @@ msgid ""
18651878 "The following are also allowable: B<O_APPEND>, B<O_DSYNC>, B<O_NOATIME>, "
18661879 "B<O_NONBLOCK>, and B<O_SYNC>. Specifying any other flag in I<event_f_flags> "
18671880 "yields the error B<EINVAL> (but see BUGS)."
1868-msgstr ""
1881+msgstr "B<O_APPEND>, B<O_DSYNC>, B<O_NOATIME>, B<O_NONBLOCK>, B<O_SYNC> も指定することができる。 I<event_f_flags> にこれ以外のフラグを指定すると、 エラー B<EINVAL> が起こる (ただし、バグを参照)。"
18691882
18701883 #. type: SH
18711884 #: build/C/man2/fanotify_init.2:199 build/C/man2/fanotify_mark.2:236
@@ -1880,19 +1893,19 @@ msgstr "返り値"
18801893 msgid ""
18811894 "On success, B<fanotify_init>() returns a new file descriptor. On error, -1 "
18821895 "is returned, and I<errno> is set to indicate the error."
1883-msgstr ""
1896+msgstr "成功すると B<fanotify_init>() は新しいファイルディスクリプターを返す。 エラーの場合、 -1 を返し、 I<errno> にエラーを示す値を設定する。"
18841897
18851898 #. type: Plain text
18861899 #: build/C/man2/fanotify_init.2:216
18871900 msgid ""
18881901 "An invalid value was passed in I<flags> or I<event_f_flags>. "
18891902 "B<FAN_ALL_INIT_FLAGS> defines all allowable bits for I<flags>."
1890-msgstr ""
1903+msgstr "I<flags> か I<event_f_flags> に無効な値が渡された。 B<FAN_ALL_INIT_FLAGS> で I<flags> に指定できる全ビットが定義されている。"
18911904
18921905 #. type: Plain text
18931906 #: build/C/man2/fanotify_init.2:219
18941907 msgid "The number of fanotify groups for this user exceeds 128."
1895-msgstr ""
1908+msgstr "このユーザーの fanotify グループ数が 128 を超過した。"
18961909
18971910 #. type: TP
18981911 #: build/C/man2/fanotify_init.2:219 build/C/man2/fanotify_mark.2:274
@@ -1904,7 +1917,7 @@ msgstr "B<ENOMEM>"
19041917 #. type: Plain text
19051918 #: build/C/man2/fanotify_init.2:222
19061919 msgid "The allocation of memory for the notification group failed."
1907-msgstr ""
1920+msgstr "通知グループへのメモリー割り当てが失敗した。"
19081921
19091922 #. type: TP
19101923 #: build/C/man2/fanotify_init.2:222 build/C/man2/fanotify_mark.2:283
@@ -1917,27 +1930,27 @@ msgstr "B<ENOSYS>"
19171930 msgid ""
19181931 "This kernel does not implement B<fanotify_init>(). The fanotify API is "
19191932 "available only if the kernel was configured with B<CONFIG_FANOTIFY>."
1920-msgstr ""
1933+msgstr "このカーネルは B<fanotify_init>() を実装していない。 fanotify API が利用できるのは、 カーネルが B<CONFIG_FANOTIFY> を有効にして作成されている場合だけである。"
19211934
19221935 #. type: TP
19231936 #: build/C/man2/fanotify_init.2:228
19241937 #, no-wrap
19251938 msgid "B<EPERM>"
1926-msgstr ""
1939+msgstr "B<EPERM>"
19271940
19281941 #. type: Plain text
19291942 #: build/C/man2/fanotify_init.2:233
19301943 msgid ""
19311944 "The operation is not permitted because the caller lacks the B<CAP_SYS_ADMIN> "
19321945 "capability."
1933-msgstr ""
1946+msgstr "呼び出し元が B<CAP_SYS_ADMIN> ケーパビリティーを持っていないので、操作が許可されない。"
19341947
19351948 #. type: Plain text
19361949 #: build/C/man2/fanotify_init.2:237
19371950 msgid ""
19381951 "B<fanotify_init>() was introduced in version 2.6.36 of the Linux kernel and "
19391952 "enabled in version 2.6.37."
1940-msgstr ""
1953+msgstr "B<fanotify_init>() は Linux カーネルのバージョン 2.6.36 で導入され、 バージョン 2.6.37 で有効になった。"
19411954
19421955 #. type: Plain text
19431956 #: build/C/man2/fanotify_init.2:239 build/C/man2/fanotify_mark.2:305
@@ -1948,18 +1961,18 @@ msgstr "このシステムコールは Linux 独自である。"
19481961 #. type: Plain text
19491962 #: build/C/man2/fanotify_init.2:242
19501963 msgid "As of Linux 3.17, the following bug exists:"
1951-msgstr ""
1964+msgstr "Linux 3.17 時点では、 以下のバグが存在する。"
19521965
19531966 #. FIXME . Patch proposed: https://lkml.org/lkml/2014/9/24/967
19541967 #. type: Plain text
19551968 #: build/C/man2/fanotify_init.2:248
19561969 msgid "The B<O_CLOEXEC> is ignored when passed in I<event_f_flags>."
1957-msgstr ""
1970+msgstr "B<O_CLOEXEC> が I<event_f_flags> に指定された場合、 無視される。"
19581971
19591972 #. type: Plain text
19601973 #: build/C/man2/fanotify_init.2:250
19611974 msgid "The following bug was present in Linux kernels before version 3.14:"
1962-msgstr ""
1975+msgstr "バージョン 3.14 より前の Linux カーネルには以下のバグが存在する。"
19631976
19641977 #. Fixed by commit 48149e9d3a7e924010a0daab30a6197b7d7b6580
19651978 #. type: Plain text
@@ -1969,7 +1982,7 @@ msgid ""
19691982 "are intended only for internal use, such as B<FMODE_EXEC>, can be set, and "
19701983 "will consequently be set for the file descriptors returned when reading from "
19711984 "the fanotify file descriptor."
1972-msgstr ""
1985+msgstr "I<event_f_flags> 引き数に無効なフラグがないかのチェックが行われない。 B<FMODE_EXEC> などの内部での使用のみが意図されたフラグを指定することができ、 その場合 fanotify ファイルディスクリプターからの読み出し時に返されるファイルディスクリプターにそのフラグがセットされる。"
19731986
19741987 #. type: Plain text
19751988 #: build/C/man2/fanotify_init.2:263
@@ -2002,6 +2015,8 @@ msgid ""
20022015 "B<int fanotify_mark(int >I<fanotify_fd>B<, unsigned int >I<flags>B<,>\n"
20032016 "B< uint64_t >I<mask>B<, int >I<dirfd>B<, const char *>I<pathname>B<);>\n"
20042017 msgstr ""
2018+"B<int fanotify_mark(int >I<fanotify_fd>B<, unsigned int >I<flags>B<,>\n"
2019+"B< uint64_t >I<mask>B<, int >I<dirfd>B<, const char *>I<pathname>B<);>\n"
20052020
20062021 #. type: Plain text
20072022 #: build/C/man2/fanotify_mark.2:44
@@ -2056,7 +2071,7 @@ msgstr ""
20562071 #: build/C/man2/fanotify_mark.2:71
20572072 #, no-wrap
20582073 msgid "B<FAN_MARK_FLUSH>"
2059-msgstr ""
2074+msgstr "B<FAN_MARK_FLUSH>"
20602075
20612076 #. type: Plain text
20622077 #: build/C/man2/fanotify_mark.2:86
@@ -2085,7 +2100,7 @@ msgstr ""
20852100 #: build/C/man2/fanotify_mark.2:94
20862101 #, no-wrap
20872102 msgid "B<FAN_MARK_DONT_FOLLOW>"
2088-msgstr ""
2103+msgstr "B<FAN_MARK_DONT_FOLLOW>"
20892104
20902105 #. type: Plain text
20912106 #: build/C/man2/fanotify_mark.2:105
@@ -2139,7 +2154,7 @@ msgstr ""
21392154 #: build/C/man2/fanotify_mark.2:126
21402155 #, no-wrap
21412156 msgid "B<FAN_MARK_IGNORED_SURV_MODIFY>"
2142-msgstr ""
2157+msgstr "B<FAN_MARK_IGNORED_SURV_MODIFY>"
21432158
21442159 #. type: Plain text
21452160 #: build/C/man2/fanotify_mark.2:132
@@ -2216,7 +2231,7 @@ msgstr ""
22162231 #: build/C/man2/fanotify_mark.2:176
22172232 #, no-wrap
22182233 msgid "B<FAN_EVENT_ON_CHILD>"
2219-msgstr ""
2234+msgstr "B<FAN_EVENT_ON_CHILD>"
22202235
22212236 #. type: Plain text
22222237 #: build/C/man2/fanotify_mark.2:184
@@ -2438,7 +2453,7 @@ msgid ""
24382453 "that provides access to some extra functionality."
24392454 msgstr ""
24402455 "B<inotify_init>(2) は inotify インスタンスを作成し、inotify インスタンスを参"
2441-"照する ファイルディスクリプタを返す。 より新しい B<inotify_init1>(2) も "
2456+"照する ファイルディスクリプターを返す。 より新しい B<inotify_init1>(2) も "
24422457 "B<inotify_init>(2) と同様だが、 こちらにはいくつかの追加の機能を利用するため"
24432458 "の I<flags> 引き数がある。"
24442459
@@ -2458,7 +2473,7 @@ msgstr ""
24582473 "イルまたはディレクトリのパス名と、 そのパス名で参照されるファイルに対して "
24592474 "カーネルが監視する複数のイベントの集合を指定する。 B<inotify_add_watch>(2) "
24602475 "は新しい監視アイテムの作成や既存の監視対象の変更ができる。 各監視対象は一意の"
2461-"「監視対象ディスクリプタ」を持つ。 これは監視対象を作成したときに "
2476+"「監視対象ディスクリプター」を持つ。 これは監視対象を作成したときに "
24622477 "B<inotify_add_watch>(2) から返される整数である。"
24632478
24642479 #. type: Plain text
@@ -2469,7 +2484,7 @@ msgid ""
24692484 "inotify file descriptor using B<read>(2) (see below)."
24702485 msgstr ""
24712486 "監視しているファイルやディレクトリでイベントが起こると、 それらのイベントはア"
2472-"プリケーションから inotify ファイルディスクリプタから B<read>(2) を使って構造"
2487+"プリケーションから inotify ファイルディスクリプターから B<read>(2) を使って構造"
24732488 "化データとして読み出すことができる (下記参照)。"
24742489
24752490 #. type: Plain text
@@ -2485,7 +2500,7 @@ msgid ""
24852500 "(using B<close>(2)), the underlying object and its resources are freed for "
24862501 "reuse by the kernel; all associated watches are automatically freed."
24872502 msgstr ""
2488-"inotify インスタンスを指している 全てのファイルディスクリプタが (B<close>(2) "
2503+"inotify インスタンスを指している 全てのファイルディスクリプターが (B<close>(2) "
24892504 "を使って) クローズされた場合、 その下層にあるオブジェクトとそのリソースは、 "
24902505 "カーネルで再利用するために解放される。 関連が切られた監視対象は自動的に解放さ"
24912506 "れる。"
@@ -2512,7 +2527,7 @@ msgstr ""
25122527 #: build/C/man7/inotify.7:89
25132528 #, no-wrap
25142529 msgid "Reading events from an inotify file descriptor"
2515-msgstr "inotify ファイルディスクリプタからのイベントの読み出し"
2530+msgstr "inotify ファイルディスクリプターからのイベントの読み出し"
25162531
25172532 #. type: Plain text
25182533 #: build/C/man7/inotify.7:102
@@ -2524,8 +2539,8 @@ msgid ""
25242539 "the error B<EINTR>; see B<signal>(7))."
25252540 msgstr ""
25262541 "どのようなイベントが起こっていたかを知るには、 アプリケーションで inotify "
2527-"ファイルディスクリプタを B<read>(2) すればよい。 これまでに何もイベントが起"
2528-"こっていない場合、 停止 (blocking) モードのファイルディスクリプタであれば、 "
2542+"ファイルディスクリプターを B<read>(2) すればよい。 これまでに何もイベントが起"
2543+"こっていない場合、 停止 (blocking) モードのファイルディスクリプターであれば、 "
25292544 "少なくとも 1 つのイベントが起こるまで B<read>(2) は停止する (シグナルにより"
25302545 "割り込まれなかった場合。 シグナルによる割り込みがあった場合、呼び出しはエ"
25312546 "ラー B<EINTR> で失敗する。 B<signal>(7) 参照)。"
@@ -2535,8 +2550,7 @@ msgstr ""
25352550 msgid ""
25362551 "Each successful B<read>(2) returns a buffer containing one or more of the "
25372552 "following structures:"
2538-msgstr ""
2539-"B<read>(2) が成功すると、以下の構造体を 1 つ以上含むバッファが返される:"
2553+msgstr "B<read>(2) が成功すると、以下の構造体を 1 つ以上含むバッファーが返される:"
25402554
25412555 #. FIXME . The type of the 'wd' field should probably be "int32_t".
25422556 #. I submitted a patch to fix this. See the LKML thread
@@ -2556,7 +2570,7 @@ msgid ""
25562570 "};\n"
25572571 msgstr ""
25582572 "struct inotify_event {\n"
2559-" int wd; /* 監視対象ディスクリプタ */\n"
2573+" int wd; /* 監視対象ディスクリプター */\n"
25602574 " uint32_t mask; /* イベントを示すマスク */\n"
25612575 " uint32_t cookie; /* 関連するイベント群を関連づける\n"
25622576 " 一意なクッキー (rename(2) 用) */\n"
@@ -2571,7 +2585,7 @@ msgid ""
25712585 "watch descriptors returned by a previous call to B<inotify_add_watch>(2)."
25722586 msgstr ""
25732587 "I<wd> はイベント発生の監視対象を指定する。 これは、前もって行われた "
2574-"B<inotify_add_watch>(2) 呼び出しで返された監視対象ディスクリプタのうちの 1 "
2588+"B<inotify_add_watch>(2) 呼び出しで返された監視対象ディスクリプターのうちの 1 "
25752589 "つである。"
25762590
25772591 #. type: Plain text
@@ -2628,11 +2642,11 @@ msgid ""
26282642 "before 2.6.21, B<read>(2) returns 0; since kernel 2.6.21, B<read>(2) fails "
26292643 "with the error B<EINVAL>. Specifying a buffer of size"
26302644 msgstr ""
2631-"B<read>(2) に渡されたバッファが小さすぎて次のイベントに関する情報を返せ\n"
2645+"B<read>(2) に渡されたバッファーが小さすぎて次のイベントに関する情報を返せ\n"
26322646 "ない場合の動作はカーネルのバージョンにより異なる。 2.6.21 より前のカー\n"
26332647 "ネルでは、 B<read>(2) は 0 を返す。 2.6.21 以降のカーネルでは、\n"
26342648 "B<read>(2) はエラー B<EINVAL> で失敗する。\n"
2635-"バッファサイズとして"
2649+"バッファーサイズとして"
26362650
26372651 #. type: Plain text
26382652 #: build/C/man7/inotify.7:175
@@ -2765,7 +2779,7 @@ msgstr ""
27652779 "監視対象のファイルやディレクトリ自身が削除あれた。 (このイベントはオブジェク"
27662780 "トが別のファイルシステムに移動された場合にも発生する。 B<mv>(1) は実際には別"
27672781 "のファイルシステムにファイルをコピーした後、元のファイルシステムからそのファ"
2768-"イルを削除するからである。) また、 結果的に監視ディスクリプタに対して "
2782+"イルを削除するからである。) また、 結果的に監視ディスクリプターに対して "
27692783 "B<IN_IGNORED> イベントも生成される。"
27702784
27712785 #. type: TP
@@ -3042,7 +3056,7 @@ msgid ""
30423056 "B<IN_IGNORED> event will subsequently be generated for the watch descriptor."
30433057 msgstr ""
30443058 "監視対象オブジェクトを含むファイルシステムがアンマウントされた。さらに、この"
3045-"監視対象ディスクリプタに対して B<IN_IGNORED> イベントが生成される。"
3059+"監視対象ディスクリプターに対して B<IN_IGNORED> イベントが生成される。"
30463060
30473061 #. type: SS
30483062 #: build/C/man7/inotify.7:377
@@ -3328,8 +3342,8 @@ msgid ""
33283342 "and B<epoll>(7). When an event is available, the file descriptor indicates "
33293343 "as readable."
33303344 msgstr ""
3331-"inotify ファイルディスクリプタは B<select>(2), B<poll>(2), B<epoll>(7) を"
3332-"使って監視できる。 イベントがある場合、ファイルディスクリプタは読み込み可能と"
3345+"inotify ファイルディスクリプターは B<select>(2), B<poll>(2), B<epoll>(7) を"
3346+"使って監視できる。 イベントがある場合、ファイルディスクリプターは読み込み可能と"
33333347 "通知する。"
33343348
33353349 #. type: Plain text
@@ -3344,11 +3358,11 @@ msgid ""
33443358 "is set to B<POLL_IN>; and B<POLLIN> is set in I<si_band>."
33453359 msgstr ""
33463360 "Linux 2.6.25 以降では、シグナル駆動 (signal-driven) I/O の通知が inotify ファ"
3347-"イルディスクリプタについて利用可能である。 B<fcntl>(2) に書かれている "
3361+"イルディスクリプターについて利用可能である。 B<fcntl>(2) に書かれている "
33483362 "(B<O_ASYNC> フラグを設定するための) B<F_SETFL>, B<F_SETOWN>, B<F_SETSIG> の"
33493363 "議論を参照のこと。 シグナルハンドラに渡される I<siginfo_t> 構造体は、以下の"
33503364 "フィールドが設定される (I<siginfo_t> は B<sigaction>(2) で説明されている)。 "
3351-"I<si_fd> には inotify ファイルディスクリプタ番号が、 I<si_signo> にはシグナル"
3365+"I<si_fd> には inotify ファイルディスクリプター番号が、 I<si_signo> にはシグナル"
33523366 "番号が、 I<si_code> には B<POLL_IN> が、 I<si_band> には B<POLLIN> が設定され"
33533367 "る。"
33543368
@@ -3362,7 +3376,7 @@ msgid ""
33623376 "queue, but also means that an application can't use inotify to reliably "
33633377 "count file events."
33643378 msgstr ""
3365-"inotify ファイルディスクリプタに対して 連続して生成される出力 inotify イベン"
3379+"inotify ファイルディスクリプターに対して 連続して生成される出力 inotify イベン"
33663380 "トが同一の場合 (I<wd>, I<mask>, I<cookie>, I<name> が等しい場合)、 前のイベン"
33673381 "トがまだ読み込まれていなければ、 連続するイベントが 1 つのイベントにまとめら"
33683382 "れる (ただし「バグ」の節も参照のこと)。 これによりイベントキューに必要なカー"
@@ -3377,9 +3391,9 @@ msgid ""
33773391 "one directory to another, events will be produced in the correct order on "
33783392 "the inotify file descriptor."
33793393 msgstr ""
3380-"inotify ファイルディスクリプタの読み込みで返されるイベントは、 順序付けられた"
3394+"inotify ファイルディスクリプターの読み込みで返されるイベントは、 順序付けられた"
33813395 "キューになる。 従って、たとえば、あるディレクトリの名前を別の名前に変更した場"
3382-"合、 inotify ファイルディスクリプタについての正しい順番で イベントが生成され"
3396+"合、 inotify ファイルディスクリプターについての正しい順番で イベントが生成され"
33833397 "ることが保証される。"
33843398
33853399 #. type: Plain text
@@ -3388,7 +3402,7 @@ msgid ""
33883402 "The B<FIONREAD> B<ioctl>(2) returns the number of bytes available to read "
33893403 "from an inotify file descriptor."
33903404 msgstr ""
3391-"B<FIONREAD> B<ioctl>(2) は inotify ファイルディスクリプタから何バイト読み込"
3405+"B<FIONREAD> B<ioctl>(2) は inotify ファイルディスクリプターから何バイト読み込"
33923406 "めるかを返す。"
33933407
33943408 #. type: Plain text
@@ -3448,8 +3462,8 @@ msgid ""
34483462 "watch descriptors and pathnames. Be aware that directory renamings may "
34493463 "affect multiple cached pathnames."
34503464 msgstr ""
3451-"inotify API では監視対象ディスクリプタを通してイベントが区別される。 (必要で"
3452-"あれば) 監視対象ディスクリプタとパス名のマッピングをキャッシュしておくのはア"
3465+"inotify API では監視対象ディスクリプターを通してイベントが区別される。 (必要で"
3466+"あれば) 監視対象ディスクリプターとパス名のマッピングをキャッシュしておくのはア"
34533467 "プリケーションの役目である。 ディレクトリの名前変更の場合、キャッシュしている"
34543468 "複数のパス名に影響がある点に注意すること。"
34553469
@@ -3499,9 +3513,9 @@ msgstr ""
34993513 "ベントは失なわれる。 ロバスト性が求められるアプリケーションでは、 イベントが"
35003514 "失なわれる可能性も含めて適切に処理を行うべきである。 例えば、アプリケーション"
35013515 "内のキャッシュの一部分または全てを再構築する必要があるかもしれない。 (単純だ"
3502-"が、おそらくコストがかかる方法は、 inotify ファイルディスクリプタをクローズ"
3503-"し、 キャッシュを空にし、 新しい inotify ファイルディスクリプタを作成し、 監"
3504-"視しているオブジェクトの監視対象ディスクリプタとキャッシュエントリーの再作成"
3516+"が、おそらくコストがかかる方法は、 inotify ファイルディスクリプターをクローズ"
3517+"し、 キャッシュを空にし、 新しい inotify ファイルディスクリプターを作成し、 監"
3518+"視しているオブジェクトの監視対象ディスクリプターとキャッシュエントリーの再作成"
35053519 "を行う方法である。)"
35063520
35073521 #. type: SS
@@ -3532,7 +3546,7 @@ msgid ""
35323546 "guaranteed that the event pair is atomically inserted into the queue: there "
35333547 "may be a brief interval where the B<IN_MOVED_FROM> has appeared, but the "
35343548 "B<IN_MOVED_TO> has not."
3535-msgstr "これらの 2 つのイベントは、 inotify ファイルディスクリプタから読み出しを行った場合に、通常はイベントストリーム内で連続している。 しかしながら、連続していることは保証されていない。 複数のプロセスが監視対象オブジェクトでイベントを発生させた場合、 (めったに起こらないことだが) イベント B<IN_MOVED_FROM> と B<IN_MOVED_TO> の間に任意の数の他のイベントがはさまる可能性がある。 さらに、対となるイベントがアトミックにキューに挿入されることも保証されていない。 B<IN_MOVED_FROM> が現れたが B<IN_MOVED_TO> は現れていないという短い期間がありえるということだ。"
3549+msgstr "これらの 2 つのイベントは、 inotify ファイルディスクリプターから読み出しを行った場合に、通常はイベントストリーム内で連続している。 しかしながら、連続していることは保証されていない。 複数のプロセスが監視対象オブジェクトでイベントを発生させた場合、 (めったに起こらないことだが) イベント B<IN_MOVED_FROM> と B<IN_MOVED_TO> の間に任意の数の他のイベントがはさまる可能性がある。 さらに、対となるイベントがアトミックにキューに挿入されることも保証されていない。 B<IN_MOVED_FROM> が現れたが B<IN_MOVED_TO> は現れていないという短い期間がありえるということだ。"
35363550
35373551 #. type: Plain text
35383552 #: build/C/man7/inotify.7:737
@@ -3556,9 +3570,9 @@ msgstr ""
35563570 "は常に連続しているとの仮定を置くといった) 発見的な方法を使うと、ほとんどの場"
35573571 "合でイベントの組をうまく見つけることができるが、 いくつかの場合に見逃すことが"
35583572 "避けられず、 アプリケーションが B<IN_MOVED_FROM> と B<IN_MOVED_TO> イベントが"
3559-"無関係だとみなしてしまう可能性がある。 結果的に、監視対象ディスクリプタが破棄"
3560-"され再作成された場合、これらの監視対象ディスクリプタは、処理待ちイベントの監"
3561-"視対象ディスクリプタと一貫性のないものになってしまう (inotify ファイルディス"
3573+"無関係だとみなしてしまう可能性がある。 結果的に、監視対象ディスクリプターが破棄"
3574+"され再作成された場合、これらの監視対象ディスクリプターは、処理待ちイベントの監"
3575+"視対象ディスクリプターと一貫性のないものになってしまう (inotify ファイルディス"
35623576 "クリプタの再作成とキャッシュの再構成はこの状況に対処するのに有用な方法なのだ"
35633577 "が)。"
35643578
@@ -3572,7 +3586,7 @@ msgid ""
35723586 "timeout to allow for the fact that insertion of the B<IN_MOVED_FROM>-"
35733587 "B<IN_MOVED_TO> event pair is not atomic, and also the possibility that there "
35743588 "may not be any B<IN_MOVED_TO> event."
3575-msgstr "また、アプリケーションは、 B<IN_MOVED_FROM> イベントが今行った B<read>(2) の呼び出しで返されたバッファのちょうど一番最後のイベントで、 B<IN_MOVED_TO> イベントは次の B<read>(2) を行わないと取得できない可能性も考慮に入れる必要がある。 2 つ目の B<read>(2) は (短い) タイムアウトで行うべきである。 これは、 B<IN_MOVED_FROM>-B<IN_MOVED_TO> のイベントペアのキューへの挿入はアトミックではなく、 また B<IN_MOVED_TO> イベントが全く発生しない可能性もあるという事実を考慮に入れておく必要があるからである。"
3589+msgstr "また、アプリケーションは、 B<IN_MOVED_FROM> イベントが今行った B<read>(2) の呼び出しで返されたバッファーのちょうど一番最後のイベントで、 B<IN_MOVED_TO> イベントは次の B<read>(2) を行わないと取得できない可能性も考慮に入れる必要がある。 2 つ目の B<read>(2) は (短い) タイムアウトで行うべきである。 これは、 B<IN_MOVED_FROM>-B<IN_MOVED_TO> のイベントペアのキューへの挿入はアトミックではなく、 また B<IN_MOVED_TO> イベントが全く発生しない可能性もあるという事実を考慮に入れておく必要があるからである。"
35763590
35773591 #. type: Plain text
35783592 #: build/C/man7/inotify.7:758
@@ -3639,7 +3653,7 @@ msgid ""
36393653 "watch descriptor. For this reason, and because there have been no reports "
36403654 "of the bug occurring in real-world applications, as of Linux 3.15, no kernel "
36413655 "changes have yet been made to eliminate this possible bug."
3642-msgstr "B<inotify_rm_watch>(2) の呼び出しにより監視対象ディスクリプタが削除された場合 (なお、監視対象ファイルの削除や監視対象ファイルが含まれるファイルシステムのアンマウントによっても監視対象ディスクリプタは削除される)、 この監視対象ディスクリプタ関連の処理待ちの未読み出しイベントは、 読み出し可能なままとなる。 監視対象ディスクリプタは B<inotify_add_watch>(2) によって後で割り当てられるため、 カーネルは利用可能な監視対象ディスクリプタの範囲 (0 から B<INT_MAX>) から昇順にサイクリックに割り当てを行う。未使用の監視対象ディスクリプタを割り当てる際、 その監視対象ディスクリプタ番号に inotify キューで処理待ちの未読み出しイベントがあるかの確認は行われない。 したがって、監視対象ディスクリプタが再割り当てされた際に、 その監視対象ディスクリプタの一つ前の使用時に発生した処理待ちの未読み出しイベントが存在するということが起こりうる。 その結果、アプリケーションはこれらのイベントを読み出す可能性があり、 これらのイベントが新しく再利用された監視対象ディスクリプタに関連付けられたファイルに属するものかを解釈する必要が出て来る。 実際のところ、このバグを踏む可能性は極めて低い。 それは、このバグを踏むためには、アプリケーションが B<INT_MAX> 個の監視対象ディスクリプタが一周させて、 キューに未読み出しイベントが残っている監視対象ディスクリプタを解放し、 その監視対象ディスクリプタを再利用する必要があるからである。 この理由と、実世界のアプリケーションで発生したというバグ報告がないことから、 Linux 3.15 時点では、この計算上は起こりうるバグを取り除くためのカーネルの変更は行われていない。"
3656+msgstr "B<inotify_rm_watch>(2) の呼び出しにより監視対象ディスクリプターが削除された場合 (なお、監視対象ファイルの削除や監視対象ファイルが含まれるファイルシステムのアンマウントによっても監視対象ディスクリプターは削除される)、 この監視対象ディスクリプター関連の処理待ちの未読み出しイベントは、 読み出し可能なままとなる。 監視対象ディスクリプターは B<inotify_add_watch>(2) によって後で割り当てられるため、 カーネルは利用可能な監視対象ディスクリプターの範囲 (0 から B<INT_MAX>) から昇順にサイクリックに割り当てを行う。未使用の監視対象ディスクリプターを割り当てる際、 その監視対象ディスクリプター番号に inotify キューで処理待ちの未読み出しイベントがあるかの確認は行われない。 したがって、監視対象ディスクリプターが再割り当てされた際に、 その監視対象ディスクリプターの一つ前の使用時に発生した処理待ちの未読み出しイベントが存在するということが起こりうる。 その結果、アプリケーションはこれらのイベントを読み出す可能性があり、 これらのイベントが新しく再利用された監視対象ディスクリプターに関連付けられたファイルに属するものかを解釈する必要が出て来る。 実際のところ、このバグを踏む可能性は極めて低い。 それは、このバグを踏むためには、アプリケーションが B<INT_MAX> 個の監視対象ディスクリプターが一周させて、 キューに未読み出しイベントが残っている監視対象ディスクリプターを解放し、 その監視対象ディスクリプターを再利用する必要があるからである。 この理由と、実世界のアプリケーションで発生したというバグ報告がないことから、 Linux 3.15 時点では、この計算上は起こりうるバグを取り除くためのカーネルの変更は行われていない。"
36433657
36443658 #. type: Plain text
36453659 #: build/C/man7/inotify.7:823
@@ -4200,14 +4214,7 @@ msgid ""
42004214 "events to be monitored for I<pathname> are specified in the I<mask> bit-mask "
42014215 "argument. See B<inotify>(7) for a description of the bits that can be set "
42024216 "in I<mask>."
4203-msgstr ""
4204-"B<inotify_add_watch>() は、 I<pathname> で指定された位置にあるファイルを監視"
4205-"する監視アイテム (watch) の新規追加、 または既存の監視アイテムの変更を行う。 "
4206-"呼び出し元は、監視対象のファイルに対する読み出し許可を 持っていなければならな"
4207-"い。 I<fd> 引き数は、変更を行う監視対象リスト (watch list) を持つ inotify イ"
4208-"ンスタンスを参照するファイルディスクリプタである。 I<pathname> のどのイベント"
4209-"を監視するかは、引き数のビットマスク I<mask> で指定する。 I<mask> に設定でき"
4210-"るビットの説明については B<inotify>(7) を参照のこと。"
4217+msgstr "B<inotify_add_watch>() は、 I<pathname> で指定された位置にあるファイルを監視する監視アイテム (watch) の新規追加、 または既存の監視アイテムの変更を行う。 呼び出し元は、監視対象のファイルに対する読み出し許可を 持っていなければならない。 I<fd> 引き数は、変更を行う監視対象リスト (watch list) を持つ inotify インスタンスを参照するファイルディスクリプターである。 I<pathname> のどのイベントを監視するかは、引き数のビットマスク I<mask> で指定する。 I<mask> に設定できるビットの説明については B<inotify>(7) を参照のこと。"
42114218
42124219 #. type: Plain text
42134220 #: build/C/man2/inotify_add_watch.2:66
@@ -4219,7 +4226,7 @@ msgid ""
42194226 "allocated. If the filesystem object was already being watched (perhaps via "
42204227 "a different link to the same object), then the descriptor for the existing "
42214228 "watch is returned."
4222-msgstr "B<inotify_add_watch>() の呼び出しが成功すると、 I<pathname> に対応するファイルシステムオブジェクトに対する、 一意な監視対象ディスクリプタ (watch descriptor) を、 対象の inotify インスタンスに対して返す。 そのファイルシステムオブジェクトが対象の inotify インスタンスによって以前に監視されていない場合には、 監視対象ディスクリプタは新規に割り当てられる。 ファイルシステムオブジェクトが (おそらく同じオブジェクトに対する異なるリンク経由で) すでに監視されている場合には、 既存の監視に対するディスクリプタが返される。"
4229+msgstr "B<inotify_add_watch>() の呼び出しが成功すると、 I<pathname> に対応するファイルシステムオブジェクトに対する、 一意な監視対象ディスクリプター (watch descriptor) を、 対象の inotify インスタンスに対して返す。 そのファイルシステムオブジェクトが対象の inotify インスタンスによって以前に監視されていない場合には、 監視対象ディスクリプターは新規に割り当てられる。 ファイルシステムオブジェクトが (おそらく同じオブジェクトに対する異なるリンク経由で) すでに監視されている場合には、 既存の監視に対するディスクリプターが返される。"
42234230
42244231 #. type: Plain text
42254232 #: build/C/man2/inotify_add_watch.2:77
@@ -4228,21 +4235,14 @@ msgid ""
42284235 "descriptor. These reads fetch I<inotify_event> structures (see "
42294236 "B<inotify>(7)) indicating filesystem events; the watch descriptor inside "
42304237 "this structure identifies the object for which the event occurred."
4231-msgstr ""
4232-"これ以降に inotify ファイルディスクリプタから B<read>(2) を行うと、監視対象"
4233-"ディスクリプタが返される。 これらの B<read>() を行うと、ファイルシステムイベ"
4234-"ントを示す I<inotify_event> 構造体が読み出される (B<inotify>(7) 参照)。この"
4235-"構造体内の監視対象ディスクリプタにより、 どのオブジェクトでそのイベントが発生"
4236-"したかを特定できる。"
4238+msgstr "これ以降に inotify ファイルディスクリプターから B<read>(2) を行うと、監視対象ディスクリプターが返される。 これらの B<read>() を行うと、ファイルシステムイベントを示す I<inotify_event> 構造体が読み出される (B<inotify>(7) 参照)。この構造体内の監視対象ディスクリプターにより、 どのオブジェクトでそのイベントが発生したかを特定できる。"
42374239
42384240 #. type: Plain text
42394241 #: build/C/man2/inotify_add_watch.2:84
42404242 msgid ""
42414243 "On success, B<inotify_add_watch>() returns a nonnegative watch descriptor. "
42424244 "On error, -1 is returned and I<errno> is set appropriately."
4243-msgstr ""
4244-"成功すると、 B<inotify_add_watch>() は非負の監視対象ディスクリプタを返す。 "
4245-"エラーの場合、-1 を返し、 I<errno> を適切に設定する。"
4245+msgstr "成功すると、 B<inotify_add_watch>() は非負の監視対象ディスクリプターを返す。 エラーの場合、-1 を返し、 I<errno> を適切に設定する。"
42464246
42474247 #. type: TP
42484248 #: build/C/man2/inotify_add_watch.2:85
@@ -4258,7 +4258,7 @@ msgstr "指定されたファイルに対する読み出しアクセスが許可
42584258 #. type: Plain text
42594259 #: build/C/man2/inotify_add_watch.2:91
42604260 msgid "The given file descriptor is not valid."
4261-msgstr "指定されたファイルディスクリプタが有効ではない。"
4261+msgstr "指定されたファイルディスクリプターが有効ではない。"
42624262
42634263 #. type: TP
42644264 #: build/C/man2/inotify_add_watch.2:91
@@ -4277,9 +4277,7 @@ msgstr ""
42774277 msgid ""
42784278 "The given event mask contains no valid events; or I<fd> is not an inotify "
42794279 "file descriptor."
4280-msgstr ""
4281-"指定されたイベントマスクに有効なイベントが含まれていない。 もしくは I<fd> が "
4282-"inotify ファイルディスクリプタではない。"
4280+msgstr "指定されたイベントマスクに有効なイベントが含まれていない。 もしくは I<fd> が inotify ファイルディスクリプターではない。"
42834281
42844282 #. type: TP
42854283 #: build/C/man2/inotify_add_watch.2:100
@@ -4368,9 +4366,7 @@ msgstr "inotify API の概要については B<inotify>(7) を参照。"
43684366 msgid ""
43694367 "B<inotify_init>() initializes a new inotify instance and returns a file "
43704368 "descriptor associated with a new inotify event queue."
4371-msgstr ""
4372-"B<inotify_init>() は、新規の inotify インスタンスを初期化し、作成された "
4373-"inotify イベントキュー に対応するファイルディスクリプタを返す。"
4369+msgstr "B<inotify_init>() は、新規の inotify インスタンスを初期化し、作成された inotify イベントキュー に対応するファイルディスクリプターを返す。"
43744370
43754371 #. type: Plain text
43764372 #: build/C/man2/inotify_init.2:56
@@ -4412,19 +4408,14 @@ msgid ""
44124408 "Set the close-on-exec (B<FD_CLOEXEC>) flag on the new file descriptor. See "
44134409 "the description of the B<O_CLOEXEC> flag in B<open>(2) for reasons why this "
44144410 "may be useful."
4415-msgstr ""
4416-"新しいファイル・ディスクリプターに対して close-on-exec (B<FD_CLOEXEC>) フラ"
4417-"グをセットする。 このフラグが役に立つ理由については、 B<open>(2) の "
4418-"B<O_CLOEXEC> フラグの説明を参照のこと。"
4411+msgstr "新しいファイルディスクリプターに対して close-on-exec (B<FD_CLOEXEC>) フラグをセットする。 このフラグが役に立つ理由については、 B<open>(2) の B<O_CLOEXEC> フラグの説明を参照のこと。"
44194412
44204413 #. type: Plain text
44214414 #: build/C/man2/inotify_init.2:79
44224415 msgid ""
44234416 "On success, these system calls return a new file descriptor. On error, -1 "
44244417 "is returned, and I<errno> is set to indicate the error."
4425-msgstr ""
4426-"成功すると、これらのシステムコールは新しいファイルディスクリプタを返す。 エ"
4427-"ラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
4418+msgstr "成功すると、これらのシステムコールは新しいファイルディスクリプターを返す。 エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
44284419
44294420 #. type: Plain text
44304421 #: build/C/man2/inotify_init.2:85
@@ -4441,7 +4432,7 @@ msgstr "inotify インスタンスの総数がユーザ単位の上限に達し
44414432 #: build/C/man2/inotify_init.2:91
44424433 msgid ""
44434434 "The system limit on the total number of file descriptors has been reached."
4444-msgstr "inotify インスタンスの総数がシステムの上限に達していた。"
4435+msgstr "inotify ファイルディスクリプターの総数がシステムの上限に達していた。"
44454436
44464437 #. type: Plain text
44474438 #: build/C/man2/inotify_init.2:94
@@ -4501,19 +4492,14 @@ msgid ""
45014492 "B<inotify_rm_watch>() removes the watch associated with the watch "
45024493 "descriptor I<wd> from the inotify instance associated with the file "
45034494 "descriptor I<fd>."
4504-msgstr ""
4505-"B<inotify_rm_watch>() は、監視対象ディスクリプタ (watch descriptor) I<wd> "
4506-"に対応する監視アイテムを、 ファイルディスクリプタ I<fd> に対応する inotify イ"
4507-"ンスタンスから削除する。"
4495+msgstr "B<inotify_rm_watch>() は、監視対象ディスクリプター (watch descriptor) I<wd> に対応する監視アイテムを、 ファイルディスクリプター I<fd> に対応する inotify インスタンスから削除する。"
45084496
45094497 #. type: Plain text
45104498 #: build/C/man2/inotify_rm_watch.2:48
45114499 msgid ""
45124500 "Removing a watch causes an B<IN_IGNORED> event to be generated for this "
45134501 "watch descriptor. (See B<inotify>(7).)"
4514-msgstr ""
4515-"監視対象を削除すると、 この監視対象ディスクリプタに対して B<IN_IGNORED> イベ"
4516-"ントが生成される (B<inotify>(7) 参照)。"
4502+msgstr "監視対象を削除すると、 この監視対象ディスクリプターに対して B<IN_IGNORED> イベントが生成される (B<inotify>(7) 参照)。"
45174503
45184504 #. type: Plain text
45194505 #: build/C/man2/inotify_rm_watch.2:55
@@ -4527,40 +4513,23 @@ msgstr ""
45274513 #. type: Plain text
45284514 #: build/C/man2/inotify_rm_watch.2:60
45294515 msgid "I<fd> is not a valid file descriptor."
4530-msgstr "I<fd> が有効なファイルディスクリプタではない。"
4516+msgstr "I<fd> が有効なファイルディスクリプターではない。"
45314517
45324518 #. type: Plain text
45334519 #: build/C/man2/inotify_rm_watch.2:67
45344520 msgid ""
45354521 "The watch descriptor I<wd> is not valid; or I<fd> is not an inotify file "
45364522 "descriptor."
4537-msgstr ""
4538-"監視対象ディスクリプタ I<wd> が有効でない。もしくは、 I<fd> が inotify ファイ"
4539-"ルディスクリプタではない。"
4523+msgstr "監視対象ディスクリプター I<wd> が有効でない。もしくは、 I<fd> が inotify ファイルディスクリプターではない。"
45404524
45414525 #. type: Plain text
45424526 #: build/C/man2/inotify_rm_watch.2:75
45434527 msgid "B<inotify_add_watch>(2), B<inotify_init>(2), B<inotify>(7)"
45444528 msgstr "B<inotify_add_watch>(2), B<inotify_init>(2), B<inotify>(7)"
45454529
4546-#~ msgid "2014-05-21"
4547-#~ msgstr "2014-05-21"
4548-
4549-#~ msgid "2014-09-06"
4550-#~ msgstr "2014-09-06"
4551-
45524530 #~ msgid ""
45534531 #~ "Add (OR) events to watch mask for this pathname if it already exists "
45544532 #~ "(instead of replacing mask)."
45554533 #~ msgstr ""
45564534 #~ "I<pathname> に対する監視マスクが既に存在する場合、 (マスクの置き換えではな"
45574535 #~ "く) イベントを追加 (OR) する。"
4558-
4559-#~ msgid "Only watch I<pathname> if it is a directory."
4560-#~ msgstr "I<pathname> がディレクトリの場合にのみ監視する。"
4561-
4562-#~ msgid "2014-05-18"
4563-#~ msgstr "2014-05-18"
4564-
4565-#~ msgid "2014-04-24"
4566-#~ msgstr "2014-04-24"
--- a/stats/notify
+++ b/stats/notify
@@ -1,4 +1,2 @@
11 # pagename,#complete,#remaining,#all
2-fanotify.7,97,94,191
3-fanotify_init.2,31,46,77
4-fanotify_mark.2,49,51,100
2+fanotify_mark.2,54,46,100
--- a/untrans.html
+++ b/untrans.html
@@ -62,9 +62,7 @@
6262 <TR><TD>inet_net_pton.3</TD><TD>37/92</TD><TD>59.78</TD></TR>
6363 <TR class="over70"><TD>nss.5</TD><TD>7/27</TD><TD>74.07</TD></TR>
6464 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>notify</B></TD></TR>
65-<TR><TD>fanotify.7</TD><TD>94/191</TD><TD>50.79</TD></TR>
66-<TR><TD>fanotify_init.2</TD><TD>46/77</TD><TD>40.26</TD></TR>
67-<TR><TD>fanotify_mark.2</TD><TD>51/100</TD><TD>49.00</TD></TR>
65+<TR><TD>fanotify_mark.2</TD><TD>46/100</TD><TD>54.00</TD></TR>
6866 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>process</B></TD></TR>
6967 <TR><TD>cpuset.7</TD><TD>212/314</TD><TD>32.48</TD></TR>
7068 <TR><TD>user_namespaces.7</TD><TD>75/168</TD><TD>55.36</TD></TR>
@@ -95,6 +93,6 @@
9593 <TR class="over80"><TD>zdump.8</TD><TD>1/22</TD><TD>95.45</TD></TR>
9694 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>unistd</B></TD></TR>
9795 <TR class="over80"><TD>fcntl.2</TD><TD>46/241</TD><TD>80.91</TD></TR>
98-<TR><TD COLSPAN=3>Total 66 pages</TD></TR>
96+<TR><TD COLSPAN=3>Total 64 pages</TD></TR>
9997 </TABLE>
10098 </BODY></HTML>
Show on old repository browser