OSDN Git Service

長音記号の修正を release に反映
[linuxjm/LDP_man-pages.git] / release / man2 / open.2
index 2f6665d..ead17de 100644 (file)
@@ -80,7 +80,7 @@
 .\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
 .\" Updated 2013-08-16, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
-.TH OPEN 2 2014\-05\-10 Linux "Linux Programmer's Manual"
+.TH OPEN 2 2015\-01\-22 Linux "Linux Programmer's Manual"
 .SH 名前
 open, openat, creat \- ファイルのオープン、作成を行う
 .SH 書式
@@ -116,27 +116,22 @@ _ATFILE_SOURCE
 .ad
 .PD
 .SH 説明
-ファイルの \fIpathname\fP を与えると、 \fBopen\fP()  はファイルディスクリプタを返す。
-ファイルディスクリプタは、この後に続くシステムコール (\fBread\fP(2), \fBwrite\fP(2), \fBlseek\fP(2),
-\fBfcntl\fP(2) など)  で使用される小さな非負の整数である。 このシステムコールが成功した場合に返されるファイルディスクリプタは
-そのプロセスがその時点でオープンしていないファイルディスクリプタの うち最小の数字のものとなる。
\83\95ã\82¡ã\82¤ã\83«ã\81® \fIpathname\fP ã\82\92ä¸\8eã\81\88ã\82\8bã\81¨ã\80\81 \fBopen\fP()  ã\81¯ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82
\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¯ã\80\81ã\81\93ã\81®å¾\8cã\81«ç¶\9aã\81\8fã\82·ã\82¹ã\83\86ã\83 ã\82³ã\83¼ã\83« (\fBread\fP(2), \fBwrite\fP(2), \fBlseek\fP(2),
+\fBfcntl\fP(2) ã\81ªã\81©)  ã\81§ä½¿ç\94¨ã\81\95ã\82\8cã\82\8bå°\8fã\81\95ã\81ªé\9d\9eè² ã\81®æ\95´æ\95°ã\81§ã\81\82ã\82\8bã\80\82 ã\81\93ã\81®ã\82·ã\82¹ã\83\86ã\83 ã\82³ã\83¼ã\83«ã\81\8cæ\88\90å\8a\9fã\81\97ã\81\9få ´å\90\88ã\81«è¿\94ã\81\95ã\82\8cã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¯
\81\9dã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81\8cã\81\9dã\81®æ\99\82ç\82¹ã\81§ã\82ªã\83¼ã\83\97ã\83³ã\81\97ã\81¦ã\81\84ã\81ªã\81\84ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81® ã\81\86ã\81¡æ\9c\80å°\8fã\81®æ\95°å­\97ã\81®ã\82\82ã\81®ã\81¨ã\81ªã\82\8bã\80\82
 .PP
-デフォルトでは、新しいファイルディスクリプタは \fBexecve\fP(2) を実行した後も
\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§ã\81¯ã\80\81æ\96°ã\81\97ã\81\84ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¯ \fBexecve\fP(2) ã\82\92å®\9fè¡\8cã\81\97ã\81\9få¾\8cã\82\82
 オープンされたままとなる (つまり、 \fBfcntl\fP(2) に説明がある \fBFD_CLOEXEC\fP
\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83\95ã\83©ã\82°ã\81¯æ\9c\80å\88\9dã\81¯ç\84¡å\8a¹ã\81§ã\81\82ã\82\8b; 後述の \fBO_CLOEXEC\fP フラグ
-を使うとこのデフォルトを変更することができる)。 ファイルオフセット
\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\83\95ã\83©ã\82°ã\81¯æ\9c\80å\88\9dã\81¯ç\84¡å\8a¹ã\81§ã\81\82ã\82\8b); 後述の \fBO_CLOEXEC\fP フラグ
+を使うとこのデフォルトを変更することができる。 ファイルオフセット
 (file offset) はファイルの先頭に設定される (\fBlseek\fP(2) 参照)。
 .PP
-A call to \fBopen\fP()  creates a new \fIopen file description\fP, an entry in the
-system\-wide table of open files.  (This object is variously also called an
-"open file object", a "file handle", an "open file table entry", or\(emin
-kernel\-developer parlance\(ema \fIstruct file\fP.  The term "open file
-description" is used by POSIX.)  The open file description records the file
-offset and the file status flags (see below).  A file descriptor is a
-reference to an open file description; this reference is unaffected if
-\fIpathname\fP is subsequently removed or modified to refer to a different
-file.  The new open file description is initially not shared with any other
-process, but sharing may arise via \fBfork\fP(2).
+\fBopen\fP()  を呼び出すと、「オープンファイル記述」 \fI(open file description)\fP
+が作成される。ファイル記述とは、システム全体のオープン中のファイルのテーブルのエントリーである。
+このオープンファイル記述は、ファイルオフセットとファイル状態フラグ (下記参照) が保持する。
+ファイルディスクリプターはオープンファイルっ記述への参照である。 この後で \fIpathname\fP
+が削除されたり、他のファイルを参照するように変更されたりしても、 この参照は影響を受けない。 オープンファイル記述の詳細な説明は「注意」の節を参照。
 .PP
 引き数 \fIflags\fP には、アクセスモード \fBO_RDONLY\fP, \fBO_WRONLY\fP, \fBO_RDWR\fP
 のどれかひとつが入っていなければならない。 これらはそれぞれ読み込み専用、書き込み専用、読み書き用に ファイルをオープンすることを要求するものである。
@@ -167,31 +162,31 @@ flag) を 0 個以上「ビット単位の OR (bitwise\-or)」で 指定する
 .\" http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=453946
 .\" http://nfs.sourceforge.net/
 ファイルを追加 (append) モードでオープンする。 毎回の \fBwrite\fP(2)  の前に \fBlseek\fP(2)
-を行ったかのように、ファイルポインタをファイルの最後に移動する。 NFS ファイルシステムで、 \fBO_APPEND\fP
\82\92è¡\8cã\81£ã\81\9fã\81\8bã\81®ã\82\88ã\81\86ã\81«ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\82\92ã\83\95ã\82¡ã\82¤ã\83«ã\81®æ\9c\80å¾\8cã\81«ç§»å\8b\95ã\81\99ã\82\8bã\80\82 NFS ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81§ã\80\81 \fBO_APPEND\fP
 を使用すると、複数のプロセスがひとつのファイルに同時にデータを追加した場合、 ファイルが壊れてしまうことがある。 これは NFS
 が追加モードをサポートしていないため、 クライアントのカーネル (kernel) がそれをシミュレートしなければならないのだが、
 競合状態を避けることはできないからである。
 .TP 
 \fBO_ASYNC\fP
-シグナル駆動 I/O (signal\-driven I/O) を有効にする: このファイルディスクリプタへの
\82·ã\82°ã\83\8aã\83«é§\86å\8b\95 I/O (signal\-driven I/O) ã\82\92æ\9c\89å\8a¹ã\81«ã\81\99ã\82\8b: ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¸ã\81®
 入力または出力が可能になった場合に、シグナルを生成する (デフォルトは \fBSIGIO\fP であるが、 \fBfcntl\fP(2)
 によって変更可能である)。 この機能が使用可能なのは端末、疑似端末、ソケットのみであり、 (Linux 2.6 以降では) パイプと FIFO
 に対しても使用できる。 さらに詳しい説明は \fBfcntl\fP(2)  を参照すること。 下記の「バグ」も参照。
 .TP 
 \fBO_CLOEXEC\fP (Linux 2.6.23 以降)
 .\" NOTE! several other man pages refer to this text
-新しいファイルディスクリプタに対して close\-on\-exec フラグを有効にする。 このフラグを指定することで、 プログラムは
\96°ã\81\97ã\81\84ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«å¯¾ã\81\97ã\81¦ close\-on\-exec ã\83\95ã\83©ã\82°ã\82\92æ\9c\89å\8a¹ã\81«ã\81\99ã\82\8bã\80\82 ã\81\93ã\81®ã\83\95ã\83©ã\82°ã\82\92æ\8c\87å®\9aã\81\99ã\82\8bã\81\93ã\81¨ã\81§ã\80\81 ã\83\97ã\83­ã\82°ã\83©ã\83 ã\81¯
 \fBFD_CLOEXEC\fP フラグをセットするために \fBfcntl\fP(2) \fBF_SETFD\fP 操作を別途呼び出す必要がなくなる。
 
 .\" This flag fixes only one form of the race condition;
 .\" The race can also occur with, for example, descriptors
 .\" returned by accept(), pipe(), etc.
 ある種のマルチスレッドのプログラムはこのフラグの使用は不可欠である点に注意すること。 なぜなら、個別に \fBFD_CLOEXEC\fP フラグを設定する
-\fBfcntl\fP(2) \fBF_SETFD\fP 操作を呼び出したとしても、あるスレッドがファイルディスクリプタを オープンするのと同時に別のスレッドが
+\fBfcntl\fP(2) \fBF_SETFD\fP æ\93\8dä½\9cã\82\92å\91¼ã\81³å\87ºã\81\97ã\81\9fã\81¨ã\81\97ã\81¦ã\82\82ã\80\81ã\81\82ã\82\8bã\82¹ã\83¬ã\83\83ã\83\89ã\81\8cã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92 ã\82ªã\83¼ã\83\97ã\83³ã\81\99ã\82\8bã\81®ã\81¨å\90\8cæ\99\82ã\81«å\88¥ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81\8c
 \fBfork\fP(2) と \fBexecve\fP(2) を実行するという競合条件を避けるのには十分ではないからである。
-実行の順序に依存して、この競合条件の結果、 \fBopen\fP() が返したファイルディスクリプタが \fBfork\fP(2)
+å®\9fè¡\8cã\81®é \86åº\8fã\81«ä¾\9då­\98ã\81\97ã\81¦ã\80\81ã\81\93ã\81®ç«¶å\90\88æ\9d¡ä»¶ã\81®çµ\90æ\9e\9cã\80\81 \fBopen\fP() ã\81\8cè¿\94ã\81\97ã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8c \fBfork\fP(2)
 で作成された子プロセスにより実行されるプログラムに意図せず見えてしまう可能性がある。 (この種の競合は、 本質的に、 close\-on\-exec
-フラグをセットすべきファイルディスクリプタを作成するどのシステムコールでも起こり得るものであり、 他のいろいろな Linux
\83\95ã\83©ã\82°ã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\81¹ã\81\8dã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92ä½\9cæ\88\90ã\81\99ã\82\8bã\81©ã\81®ã\82·ã\82¹ã\83\86ã\83 ã\82³ã\83¼ã\83«ã\81§ã\82\82èµ·ã\81\93ã\82\8aå¾\97ã\82\8bã\82\82ã\81®ã\81§ã\81\82ã\82\8aã\80\81 ä»\96ã\81®ã\81\84ã\82\8dã\81\84ã\82\8dã\81ª Linux
 システムコールでこの問題に対処するために \fBO_CLOEXEC\fP と同等の機能が提供されている。)
 .TP 
 \fBO_CREAT\fP
@@ -208,7 +203,7 @@ flag) を 0 個以上「ビット単位の OR (bitwise\-or)」で 指定する
 も指定されていない場合、 \fImode\fP は無視される。 有効なアクセス許可は、普段と同じようにプロセスの \fIumask\fP
 によって修正され、作成されたファイルの許可は \fI(mode\ &\ ~umask)\fP となる。
 このモードは、新しく作成されたファイルに対するそれ以降のアクセス にのみ適用される点に注意すること。 読み取り専用のファイルを作成する
-\fBopen\fP()  コールであっても、 読み書き可能なファイルディスクリプタを返すことがありうる。
+\fBopen\fP()  ã\82³ã\83¼ã\83«ã\81§ã\81\82ã\81£ã\81¦ã\82\82ã\80\81 èª­ã\81¿æ\9b¸ã\81\8då\8f¯è\83½ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\81\93ã\81¨ã\81\8cã\81\82ã\82\8aã\81\86ã\82\8bã\80\82
 .PP
 \fImode\fP のために以下のシンボル定数が提供されている :
 .TP  9
@@ -251,12 +246,12 @@ flag) を 0 個以上「ビット単位の OR (bitwise\-or)」で 指定する
 .TP 
 \fBO_DIRECT\fP (Linux 2.4.10 以降)
 このファイルに対する I/O のキャッシュの効果を最小化しようとする。このフラグを使うと、一般的に性能が低下する。
-しかしアプリケーションが独自にキャッシングを行っているような 特別な場合には役に立つ。 ファイルの I/O はユーザー空間バッファに対して直接行われる。
-\fBO_DIRECT\fP フラグ自身はデータを同期で転送しようとはするが、 \fBO_SYNC\fP
+しかしアプリケーションが独自にキャッシングを行っているような 特別な場合には役に立つ。 ファイルの I/O
+はユーザー空間バッファーに対して直接行われる。 \fBO_DIRECT\fP フラグ自身はデータを同期で転送しようとはするが、 \fBO_SYNC\fP
 フラグのようにデータと必要なメタデータの転送が保証されるわけではない。同期 I/O を保証するためには、 \fBO_DIRECT\fP に加えて
 \fBO_SYNC\fP を使用しなければならない。下記の「注意」の節の議論も参照。
 .sp
-ブロックデバイスに対する似通った意味のインターフェースが \fBraw\fP(8)  で説明されている (但し、このインタフェースは非推奨である)。
\83\96ã\83­ã\83\83ã\82¯ã\83\87ã\83\90ã\82¤ã\82¹ã\81«å¯¾ã\81\99ã\82\8bä¼¼é\80\9aã\81£ã\81\9fæ\84\8få\91³ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81\8c \fBraw\fP(8)  ã\81§èª¬æ\98\8eã\81\95ã\82\8cã\81¦ã\81\84ã\82\8b (ä½\86ã\81\97ã\80\81ã\81\93ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81¯é\9d\9eæ\8e¨å¥¨ã\81§ã\81\82ã\82\8b\80\82
 .TP 
 \fBO_DIRECTORY\fP
 .\" But see the following and its replies:
@@ -301,7 +296,7 @@ PID を組み合わせた名前) を作成し、 \fBlink\fP(2)  を使用して
 .TP 
 \fBO_LARGEFILE\fP
 (LFS) \fIoff_t\fP ではサイズを表せない (だだし \fIoff64_t\fP ではサイズを表せる)ファ
-イルをオープン可能にする。この定義を有効にするためには、(\fIどの\fPヘッダファイ
\82¤ã\83«ã\82\92ã\82ªã\83¼ã\83\97ã\83³å\8f¯è\83½ã\81«ã\81\99ã\82\8bã\80\82ã\81\93ã\81®å®\9a義ã\82\92æ\9c\89å\8a¹ã\81«ã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\81¯ã\80\81(\fIã\81©ã\81®\fPã\83\98ã\83\83ã\83\80ã\83¼ã\83\95ã\82¡ã\82¤
 ルをインクルードするよりも前に) \fB_LARGEFILE64_SOURCE\fP マクロを定義しなければ
 ならない。
 32 ビットシステムにおいて大きなファイルにアクセスしたい場合、
@@ -330,7 +325,7 @@ PID を組み合わせた名前) を作成し、 \fBlink\fP(2)  を使用して
 .TP 
 \fBO_NONBLOCK\fP または \fBO_NDELAY\fP
 可能ならば、ファイルは非停止 (nonblocking) モードでオープンされる。
-\fBopen\fP() も、返したファイルディスクリプタに対する以後のすべての操作も呼び出
+\fBopen\fP() ã\82\82ã\80\81è¿\94ã\81\97ã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«å¯¾ã\81\99ã\82\8b以å¾\8cã\81®ã\81\99ã\81¹ã\81¦ã\81®æ\93\8dä½\9cã\82\82å\91¼ã\81³å\87º
 したプロセスを待たせることはない。 FIFO (名前付きパイプ) を扱う場合には
 \fBfifo\fP(7) も参照すること。 強制ファイルロック (mandatory file lock) やファイ
 ルリース (file lease) と組み合わせた場合の、 \fBO_NONBLOCK\fP の効果についての
@@ -345,38 +340,37 @@ PID を組み合わせた名前) を作成し、 \fBlink\fP(2)  を使用して
 .\"    Subject: Re: [PATCH] open(2): document O_PATH
 .\"    Newsgroups: gmane.linux.man, gmane.linux.kernel
 .\"
-このフラグを指定して取得したファイルディスクリプタは、 ファイルシステムツリー内での場所を示すため、
-純粋にファイルディスクリプタレベルでの作用する操作を実行するため、 の二つの目的で使用することができる。 ファイル自身はオープンされず、
\81\93ã\81®ã\83\95ã\83©ã\82°ã\82\92æ\8c\87å®\9aã\81\97ã\81¦å\8f\96å¾\97ã\81\97ã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¯ã\80\81 ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\83\84ã\83ªã\83¼å\86\85ã\81§ã\81®å ´æ\89\80ã\82\92示ã\81\99ã\81\9fã\82\81ã\80\81
+ç´\94ç²\8bã\81«ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\83¬ã\83\99ã\83«ã\81§ã\81®ä½\9cç\94¨ã\81\99ã\82\8bæ\93\8dä½\9cã\82\92å®\9fè¡\8cã\81\99ã\82\8bã\81\9fã\82\81ã\80\81 ã\81®äº\8cã\81¤ã\81®ç\9b®ç\9a\84ã\81§ä½¿ç\94¨ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82 ã\83\95ã\82¡ã\82¤ã\83«è\87ªèº«ã\81¯ã\82ªã\83¼ã\83\97ã\83³ã\81\95ã\82\8cã\81\9aã\80\81
 他のファイル操作 (例えば \fBread\fP(2), \fBwrite\fP(2), \fBfchmod\fP(2), \fBfchown\fP(2),
 \fBfgetxattr\fP(2), \fBmmap\fP(2)) はエラー \fBEBADF\fP で失敗する。
 
-取得したファイルディスクリプタに対して以下の操作を行うことが「できる」。
\8f\96å¾\97ã\81\97ã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«å¯¾ã\81\97ã\81¦ä»¥ä¸\8bã\81®æ\93\8dä½\9cã\82\92è¡\8cã\81\86ã\81\93ã\81¨ã\81\8cã\80\8cã\81§ã\81\8dã\82\8bã\80\8dã\80\82
 .RS
 .IP * 3
 .\" commit 332a2e1244bd08b9e3ecd378028513396a004a24
 .\" fstat(): commit 55815f70147dcfa3ead5738fd56d3574e2e3c1c2
 \fBclose\fP(2); \fBfchdir\fP(2)  (Linux 3.5 以降); \fBfstat\fP(2)  (Linux 3.6 以降)
 .IP *
-ファイルディスクリプタの複製 (\fBdup\fP(2), \fBfcntl\fP(2)  \fBF_DUPFD\fP など)
\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®è¤\87製 (\fBdup\fP(2), \fBfcntl\fP(2)  \fBF_DUPFD\fP ã\81ªã\81©)
 .IP *
-ファイルディスクリプタフラグの取得と設定 (\fBfcntl\fP(2) の \fBF_GETFD\fP と \fBF_SETFD\fP)
\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\83\95ã\83©ã\82°ã\81®å\8f\96å¾\97ã\81¨è¨­å®\9a (\fBfcntl\fP(2) ã\81® \fBF_GETFD\fP ã\81¨ \fBF_SETFD\fP)
 .IP *
 \fBfcntl\fP(2) の \fBF_GETFL\fP 操作を使ったオープンされたファイルの状態フラグの取得。 返されるフラグには \fBO_PATH\fP
 ビットが含まれる。
 .IP *
-Passing the file descriptor as the \fIdirfd\fP argument of \fBopenat\fP(2)  and
-the other "*at()" system calls.  This includes \fBlinkat\fP(2)  with
-\fBAT_EMPTY_PATH\fP (or via procfs using \fBAT_SYMLINK_FOLLOW\fP)  even if the
-file is not a directory.
+\fBopenat\fP(2) や他の "*at()" 系のシステムコールの \fIdirfd\fP 引数としてそのファイルディスクリプターを渡す。 これには、
+ファイルがディレクトリでない場合に \fBlinkat\fP(2) に \fBAT_EMPTY_PATH\fP が指定された場合 (や procfs 経由で
+\fBAT_SYMLINK_FOLLOW\fP が使用された場合) を含む。
 .IP *
-そのファイルディスクリプタを別のプロセスに UNIX ドメインソケット経由で渡す。 (\fBunix\fP(7) の \fBSCM_RIGHTS\fP を参照)
\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92å\88¥ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81« UNIX ã\83\89ã\83¡ã\82¤ã\83³ã\82½ã\82±ã\83\83ã\83\88çµ\8cç\94±ã\81§æ¸¡ã\81\99ã\80\82 (\fBunix\fP(7) ã\81® \fBSCM_RIGHTS\fP ã\82\92å\8f\82ç\85§)
 .RE
 .IP
-\fIflags\fP に \fBO_PATH\fP が指定された場合、 \fBO_DIRECTORY\fP と \fBO_NOFOLLOW\fP
+\fIflags\fP に \fBO_PATH\fP が指定された場合、 \fBO_CLOEXEC\fP, \fBO_DIRECTORY\fP, \fBO_NOFOLLOW\fP
 以外のフラグビットは無視される。
 
 \fIpathname\fP がシンボリックリンクで \fBO_NOFOLLOW\fP フラグも合わせて指定された場合、
\81\93ã\81®å\91¼ã\81³å\87ºã\81\97ã\81§ã\81¯ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83ªã\83³ã\82¯ã\82\92å\8f\82ç\85§ã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\82\92è¿\94ã\81\99ã\80\82 ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿は、 空のパス名を指定した
\81\93ã\81®å\91¼ã\81³å\87ºã\81\97ã\81§ã\81¯ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83ªã\83³ã\82¯ã\82\92å\8f\82ç\85§ã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82 ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼は、 空のパス名を指定した
 \fBfchownat\fP(2), \fBfstatat\fP(2), \fBlinkat\fP(2), \fBreadlinkat\fP(2) の呼び出しで
 \fIdirfd\fP 引数として使うことで、 そのシンボリックリンクに対して操作を行うことができる。
 .TP 
@@ -393,7 +387,7 @@ file is not a directory.
 .\" commit bb458c644a59dbba3a1fe59b27106c5e68e1c4bd
 名前なしの一時ファイルを作成する。 \fIpathname\fP 引き数はディレクトリを指定する。 名前なしの inode
 がそのディレクトリが存在するファイルシステムに作成される。 そのファイルに名前を付与しない限り、 作成されたファイルに書き込まれた内容は、
-最後のファイルディスクリプタがクローズされる際に失われる。
\9c\80å¾\8cã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cã\82¯ã\83­ã\83¼ã\82ºã\81\95ã\82\8cã\82\8bé\9a\9bã\81«å¤±ã\82\8fã\82\8cã\82\8bã\80\82
 
 \fBO_TMPFILE\fP は必ず \fBO_RDWR\fP か \fBO_WRONLY\fP のいずれかと一緒に使わなければならない。 \fBO_EXCL\fP
 も指定することができる。 \fBO_EXCL\fP が指定されなかった場合、 \fBlinkat\fP(2)
@@ -457,7 +451,7 @@ linkat(AT_FDCWD, path, AT_FDCWD, "/path/for/file",
 
 \fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。
 .SH 返り値
-\fBopen\fP(), \fBopenat\fP(), \fBcreat\fP() は新しいファイルディスクリプタを返す。 エラーが発生した場合は \-1 を返す
+\fBopen\fP(), \fBopenat\fP(), \fBcreat\fP() ã\81¯æ\96°ã\81\97ã\81\84ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82 ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81\9få ´å\90\88ã\81¯ \-1 ã\82\92è¿\94ã\81\99
 (その場合は \fIerrno\fP が適切に設定される)。
 .SH エラー
 \fBopen\fP(), \fBopenat\fP(), \fBcreat\fP() は以下のエラーで失敗する。
@@ -467,7 +461,7 @@ linkat(AT_FDCWD, path, AT_FDCWD, "/path/for/file",
 またはファイルが存在せず、親ディレクトリへの書き込み許可がなかった。 (\fBpath_resolution\fP(7)  も参照すること。)
 .TP 
 \fBEDQUOT\fP
-\fBO_CREAT\fP が指定された場合で、そのファイルが存在せず、ディスクブロックか inode がそのファイルシステムのユーザクォータに達していた。
+\fBO_CREAT\fP ã\81\8cæ\8c\87å®\9aã\81\95ã\82\8cã\81\9få ´å\90\88ã\81§ã\80\81ã\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81\8cå­\98å\9c¨ã\81\9bã\81\9aã\80\81ã\83\87ã\82£ã\82¹ã\82¯ã\83\96ã\83­ã\83\83ã\82¯ã\81\8b inode ã\81\8cã\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81®ã\83¦ã\83¼ã\82¶ã\83¼ã\82¯ã\82©ã\83¼ã\82¿ã\81«é\81\94ã\81\97ã\81¦ã\81\84ã\81\9fã\80\82
 .TP 
 \fBEEXIST\fP
 \fIpathname\fP は既に存在し、 \fBO_CREAT\fP と \fBO_EXCL\fP が使用された。
@@ -480,7 +474,7 @@ linkat(AT_FDCWD, path, AT_FDCWD, "/path/for/file",
 .TP 
 \fBEINTR\fP
 遅いデバイス (例えば FIFO、 \fBfifo\fP(7)  参照) のオープンが完了するのを待って停止している間に
-システムコールがシグナルハンドラにより割り込まれた。 \fBsignal\fP(7)  参照。
\82·ã\82¹ã\83\86ã\83 ã\82³ã\83¼ã\83«ã\81\8cã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81«ã\82\88ã\82\8aå\89²ã\82\8aè¾¼ã\81¾ã\82\8cã\81\9fã\80\82 \fBsignal\fP(7)  å\8f\82ç\85§ã\80\82
 .TP 
 \fBEINVAL\fP
 ファイルシステムが \fBO_DIRECT\fP フラグをサポートしていない。 詳細は\fB注意\fPを参照。
@@ -508,7 +502,7 @@ linkat(AT_FDCWD, path, AT_FDCWD, "/path/for/file",
 が指定されていなかった。
 .TP 
 \fBEMFILE\fP
-プロセスがオープンしているファイル数がすでに最大数に達している。
+プロセスがオープンしているファイル数がすでに最大数に達している (\fBgetrlimit\fP(2) の \fBRLIMIT_NOFILE\fP の説明を参照)
 .TP 
 \fBENAMETOOLONG\fP
 \fIpathname\fP が長過ぎる。
@@ -551,7 +545,7 @@ FIFO が存在しない。 または、ファイルがデバイススペシャ
 .\" Reported 2006-10-03
 \fIpathname\fP が参照しているのが、大き過ぎてオープンできない通常のファイルである。 通常、このエラーが発生するは、32
 ビットプラットフォーム上で \fI\-D_FILE_OFFSET_BITS=64\fP を指定せずにコンパイルされたアプリケーションが、ファイルサイズが
-\fI(2<31)\-1\fP ビットを超えるファイルを開こうとした場合である。 上記の \fBO_LARGEFILE\fP も参照。 これは
+\fI(1<31)\-1\fP バイトを超えるファイルを開こうとした場合である。 上記の \fBO_LARGEFILE\fP も参照。 これは
 POSIX.1\-2001 で規定されているエラーである。 2.6.24 より前のカーネルでは、Linux はこの場合にエラー \fBEFBIG\fP
 を返していた。
 .TP 
@@ -560,6 +554,9 @@ POSIX.1\-2001 で規定されているエラーである。 2.6.24 より前の
 \fBO_NOATIME\fP フラグが指定されたが、呼び出し元の実効ユーザー ID が ファイルの所有者と一致せず、かつ呼び出し元に特権
 (\fBCAP_FOWNER\fP)  がない。
 .TP 
+\fBEPERM\fP
+操作が file seal により禁止されている。 \fBfcntl\fP(2)  参照。
+.TP 
 \fBEROFS\fP
 \fIpathname\fP が読み込み専用のファイルシステム上のファイルを参照しており、 書き込みアクセスが要求された。
 .TP 
@@ -572,10 +569,10 @@ POSIX.1\-2001 で規定されているエラーである。 2.6.24 より前の
 \fBopenat\fP() では以下のエラーも発生する。
 .TP 
 \fBEBADF\fP
-\fIdirfd\fP が有効なファイルディスクリプタではない。
+\fIdirfd\fP ã\81\8cæ\9c\89å\8a¹ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\81¯ã\81ªã\81\84ã\80\82
 .TP 
 \fBENOTDIR\fP
-\fIpathname\fP が相対パス名で、 \fIdirfd\fP がディレクトリ以外のファイルを参照しているファイルディスクリプタである。
+\fIpathname\fP ã\81\8cç\9b¸å¯¾ã\83\91ã\82¹å\90\8dã\81§ã\80\81 \fIdirfd\fP ã\81\8cã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªä»¥å¤\96ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\80\82
 .SH バージョン
 \fBopenat\fP()  はカーネル 2.6.16 で Linux に追加された。 ライブラリによるサポートはバージョン 2.4 で glibc
 に追加された。
@@ -596,7 +593,7 @@ POSIX.1\-2008 では規定されている。 glibc 2.12 以降では、これら
 \fB_GNU_SOURCE\fP などの機能検査マクロは\fIどの\fPヘッダーファイルをインクルードするより前に定義しなければならない。
 .SH 注意
 Linux では、 \fBO_NONBLOCK\fP フラグは、 open を実行したいが read または write を実行する意図は
-必ずしもないことを意味する。 これは \fBioctl\fP(2)  のためのファイルディスクリプタを取得するために、
+å¿\85ã\81\9aã\81\97ã\82\82ã\81ªã\81\84ã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\99ã\82\8bã\80\82 ã\81\93ã\82\8cã\81¯ \fBioctl\fP(2)  ã\81®ã\81\9fã\82\81ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92å\8f\96å¾\97ã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\80\81
 デバイスをオープンするときによく用いられる。
 
 .LP
@@ -617,6 +614,22 @@ Linux では、 \fBO_NONBLOCK\fP フラグは、 open を実行したいが read
 (それぞれ最終アクセス時刻、最終状態変更時刻、最終修正時刻である。 \fBstat\fP(2)  参照) が現在時刻に設定される。 さらに親ディレクトリの
 \fIst_ctime\fP と \fIst_mtime\fP も現在時刻に設定される。 それ以外の場合で、O_TRUNC フラグでファイルが修正されたときは、
 ファイルの \fIst_ctime\fP と \fIst_mtime\fP フィールドが現在時刻に設定される。
+.SS オープンファイル記述
+オープンファイル記述という用語は POSIX
+で使用されている用語で、オープンされているファイルのシステム共通のテーブルのエントリーを参照するものである。
+別の文脈では、このオブジェクトはいろいろな呼び方があり、
+「オープンファイルオブジェクト」、「ファイルハンドル」、「オープンファイルテーブルエントリー」、 カーネル開発者の用語では \fIstruct file\fP
+などと呼ばれる。
+
+ファイルディスクリプターが (\fBdup\fP(2) や同様のシステムコールを使って) 複製される際に、
+複製されたファイルディスクリプターは元のファイルディスクリプターと同じオープンファイル記述を参照する。 結果として 2
+つのファイルディスクリプターはファイルオフセットとファイル状態フラグを共有する。 このような共有はプロセス間でも起こり得る。 \fBfork\fP(2)
+で作成された子プロセスは親プロセスのファイルディスクリプターの複製を継承し、これらの複製は同じオープンファイル記述を参照する。
+
+.\"
+.\"
+1 つのファイルに対して \fBopen\fP(2) を行う毎に、新しいオープンファイル記述が作成される。 したがって、 1 つのファイル inode
+に対して複数のオープンファイル記述が存在することがありえる。
 .SS "同期 I/O"
 POSIX.1\-2008 の「同期 I/O」の選択肢として複数種類が規定されており、 動作を制御するために \fBopen\fP() フラグとして
 \fBO_SYNC\fP, \fBO_DSYNC\fP, \fBO_RSYNC\fP が規定されている。 この選択肢を実装がサポートしているかに関わらず、
@@ -646,14 +659,14 @@ Linux 2.6.33 より前では、 Linux は \fBopen\fP() では \fBO_SYNC\fP フ
 Linux 2.6.33 行こう では、 正しい \fBO_SYNC\fP のサポートが提供されている。 しかしながら、
 バイナリレベルの後方互換性を保証するため、 \fBO_DSYNC\fP は以前の \fBO_SYNC\fP と同じ値で定義されており、 \fBO_SYNC\fP は
 \fBO_DSYNC\fP フラグの値を含む新しい (2 ビットの) フラグ値として定義されている。 これにより、
-新しいヘッダを使ってコンパイルされたアプリケーションで、 2.6.33 より前のカーネルで少なくとも \fBO_DSYNC\fP
\96°ã\81\97ã\81\84ã\83\98ã\83\83ã\83\80ã\83¼ã\82\92使ã\81£ã\81¦ã\82³ã\83³ã\83\91ã\82¤ã\83«ã\81\95ã\82\8cã\81\9fã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³ã\81§ã\80\81 2.6.33 ã\82\88ã\82\8aå\89\8dã\81®ã\82«ã\83¼ã\83\8dã\83«ã\81§å°\91ã\81ªã\81\8fã\81¨ã\82\82 \fBO_DSYNC\fP
 の動作は同じになることが保証される。
 .SS NFS
 NFS を実現しているプロトコルには多くの不備があり、特に \fBO_SYNC\fP と \fBO_NDELAY\fP に影響する。
 
 .\"
 .\"
-UID マッピングを使用している NFS ファイルシステムでは、 \fBopen\fP()  がファイルディスクリプタを返した場合でも \fBread\fP(2)
+UID ã\83\9eã\83\83ã\83\94ã\83³ã\82°ã\82\92使ç\94¨ã\81\97ã\81¦ã\81\84ã\82\8b NFS ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81§ã\81¯ã\80\81 \fBopen\fP()  ã\81\8cã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\97ã\81\9få ´å\90\88ã\81§ã\82\82 \fBread\fP(2)
 が \fBEACCES\fP で拒否される場合がある。 これはクライアントがアクセス許可のチェックを行って \fBopen\fP()
 を実行するが、読み込みや書き込みの際には サーバーで UID マッピングが行われるためである。
 .SS ファイルアクセスモード
@@ -670,63 +683,64 @@ O_WRONLY\fP の組み合わせは論理的に間違いであり、確かに \fBO
 .\"
 .\"
 Linux では、特別な、非標準なアクセスモードとして 3 (バイナリでは 11) が 予約されており \fIflags\fP に指定できる。
-このアクセスモードを指定すると、ファイルの読み出し/書き込み許可をチェックし、 読み出しにも書き込みにも使用できないディスクリプタを返す。
\81\93ã\81®ã\82¢ã\82¯ã\82»ã\82¹ã\83¢ã\83¼ã\83\89ã\82\92æ\8c\87å®\9aã\81\99ã\82\8bã\81¨ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\81®èª­ã\81¿å\87ºã\81\97\9b¸ã\81\8dè¾¼ã\81¿è¨±å\8f¯ã\82\92ã\83\81ã\82§ã\83\83ã\82¯ã\81\97ã\80\81 èª­ã\81¿å\87ºã\81\97ã\81«ã\82\82æ\9b¸ã\81\8dè¾¼ã\81¿ã\81«ã\82\82使ç\94¨ã\81§ã\81\8dã\81ªã\81\84ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82
 この非標準のアクセスモードはいくつかの Linux ドライバで、デバイス固有の \fBioctl\fP(2)
-操作にのみ使用されるディスクリプタを返すために使われている。
-.SS "openat() や他のディレクトリファイルディスクリプタ API の基本原理"
-\fBopenat\fP() ã\82\84ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\82\92å¼\95ã\81\8dæ\95°ã\82\92å\8f\96ã\82\8bä»\96ã\81®ã\82·ã\82¹ã\83\86ã\83 ã\82³ã\83¼ã\83«ã\82\84ã\83©ã\82¤ã\83\96ã\83©ã\83ªé\96¢æ\95° (\fBfaccessat\fP(2),
-\fBfanotify_mark\fP(2), \fBfchmodat\fP(2), \fBfchownat\fP(2), \fBfstatat\fP(2),
-\fBfutimesat\fP(2), \fBlinkat\fP(2), \fBmkdirat\fP(2), \fBmknodat\fP(2),
\93\8dä½\9cã\81«ã\81®ã\81¿ä½¿ç\94¨ã\81\95ã\82\8cã\82\8bã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\81\9fã\82\81ã\81«ä½¿ã\82\8fã\82\8cã\81¦ã\81\84ã\82\8bã\80\82
+.SS "openat() や他のディレクトリファイルディスクリプタ API の基本原理"
+\fBopenat\fP() ã\82\84ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92å¼\95ã\81\8dæ\95°ã\82\92å\8f\96ã\82\8bä»\96ã\81®ã\82·ã\82¹ã\83\86ã\83 ã\82³ã\83¼ã\83«ã\82\84ã\83©ã\82¤ã\83\96ã\83©ã\83ªé\96¢æ\95° (\fBexecveat\fP(2),
+\fBfaccessat\fP(2), \fBfanotify_mark\fP(2), \fBfchmodat\fP(2), \fBfchownat\fP(2),
+\fBfstatat\fP(2), \fBfutimesat\fP(2), \fBlinkat\fP(2), \fBmkdirat\fP(2), \fBmknodat\fP(2),
 \fBname_to_handle_at\fP(2), \fBreadlinkat\fP(2), \fBrenameat\fP(2), \fBsymlinkat\fP(2),
 \fBunlinkat\fP(2), \fButimensat\fP(2) \fBmkfifoat\fP(3), \fBscandirat\fP(3))
 は二つの理由から用意されている。 ここでは、 \fBopenat\fP コールに関して説明するが、この基本原理は他のインターフェースでも同じである。
 
 最初の理由として、 \fBopenat\fP() を使うと、 アプリケーションは、 カレントワーキングディレクトリ以外のディレクトリで \fBopen\fP()
 を使ってファイルをオープンする際に起こり得る競合条件を避けることができる。 これらの競合条件は、 \fBopen\fP()
-に渡されたディレクトリプレフィックスの構成要素が \fBopen\fP() の呼び出しと並行して変化する可能性があるという点に由来している。
-このような競合条件は、 対象のディレクトリに対するファイルディスクリプタをオープンし、 それから \fBopenat\fP() の \fIdirfd\fP
-引き数としてそのファイルディスクリプタを指定することで、 避けることができる。
+に渡されたディレクトリプレフィックスの構成要素が \fBopen\fP() の呼び出しと並行して変化する可能性があるという点に由来している。 例えば、ファイル
+\fIpath/to/xxx\fP が存在する場合にファイル \fIpath/to/xxx.dep\fP を作成したいとする。
+問題は、存在確認とファイル作成の間に、 \fIpath\fP や \fIto\fP (シンボリックリンクでもよい)
+が別の場所を指すように変更されることがあるということだ。 このような競合条件は、 対象のディレクトリに対するファイルディスクリプターをオープンし、
+それから \fBfstatat\fP(2) や \fBopenat\fP() の \fIdirfd\fP 引き数としてそのファイルディスクリプターを指定することで、
+避けることができる。
 
 .\"
 .\"
-二つ目として、 \fBopenat\fP() を使うと、アプリケーションが管理するファイルディスクリプタにより、
+äº\8cã\81¤ç\9b®ã\81¨ã\81\97ã\81¦ã\80\81 \fBopenat\fP() ã\82\92使ã\81\86ã\81¨ã\80\81ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³ã\81\8c管ç\90\86ã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«ã\82\88ã\82\8aã\80\81
 スレッド単位の「カレントワーキングディレクトリ」を実装することができる (この機能は、 \fI/proc/self/fd/dirfd\fP
 を使った方法でも実現することができるが、 効率の面で落とる)。
 .SS O_DIRECT
 .LP
-\fBO_DIRECT\fP フラグを使用する場合、ユーザ空間バッファの長さやアドレス、 I/O
+\fBO_DIRECT\fP フラグを使用する場合、ユーザー空間バッファーの長さやアドレス、 I/O
 のファイルオフセットに関してアラインメントの制限が課されることがある。 Linux では、アラインメントの制限はファイルシステムやカーネルのバージョンに
 よって異なり、全く制限が存在しない場合もある。 しかしながら、現在のところ、指定されたファイルやファイルシステムに対して
-こうした制限があるかを見つけるための、アプリケーション向けのインタフェースで ファイルシステム非依存のものは存在しない。
-いくつかのファイルシステムでは、制限を確認するための独自のインタフェースが 提供されている。例えば、 \fBxfsctl\fP(3)  の
\81\93ã\81\86ã\81\97ã\81\9få\88¶é\99\90ã\81\8cã\81\82ã\82\8bã\81\8bã\82\92è¦\8bã\81¤ã\81\91ã\82\8bã\81\9fã\82\81ã\81®ã\80\81ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³å\90\91ã\81\91ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81§ ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 é\9d\9eä¾\9då­\98ã\81®ã\82\82ã\81®ã\81¯å­\98å\9c¨ã\81\97ã\81ªã\81\84ã\80\82
\81\84ã\81\8fã\81¤ã\81\8bã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81§ã\81¯ã\80\81å\88¶é\99\90ã\82\92確èª\8dã\81\99ã\82\8bã\81\9fã\82\81ã\81®ç\8b¬è\87ªã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81\8c æ\8f\90ä¾\9bã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\80\82ä¾\8bã\81\88ã\81°ã\80\81 \fBxfsctl\fP(3)  ã\81®
 \fBXFS_IOC_DIOINFO\fP 命令である。
 .LP
-Under Linux 2.4, transfer sizes, and the alignment of the user buffer and
-the file offset must all be multiples of the logical block size of the
-filesystem.  Since Linux 2.6.0, alignment to the logical block size of the
-underlying storage (typically 512 bytes) suffices.  The logical block size
-can be determined using the \fBioctl\fP(2)  \fBBLKSSZGET\fP operation or from the
-shell using the command:
+Linux 2.4 では、転送サイズ、 ユーザーバッファーのアライメント、ファイルオフセットは、
+ファイルシステムの論理ブロックサイズの倍数でなければならない。 Linux 2.6.0 以降では、
+内部で使われるストレージの論理ブロックサイズのアライメント (通常は 512 バイト) で十分である。 論理ブロックサイズは \fBioctl\fP(2)
+\fBBLKSSZGET\fP 操作や以下のシェルコマンドから知ることができる。
 
     blockdev \-\-getss
 .LP
\83¡ã\83¢ã\83ªã\83\90ã\83\83ã\83\95ã\82¡がプライベートマッピング (\fBmmap\fP(2) の \fBMAP_PRIVATE\fP
\83¡ã\83¢ã\83ªã\83¼ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼がプライベートマッピング (\fBmmap\fP(2) の \fBMAP_PRIVATE\fP
 フラグで作成されたマッピング) の場合には、\fBO_DIRECT\fP I/O は
 \fBfork\fP(2) システムコールと同時に決して実行すべきではない
-(プライベートマッピングには、ヒープ領域に割り当てられたメモリや静的に
-割り当てたバッファも含まれる)。非同期 I/O インターフェース (AIO) 経由
+(ã\83\97ã\83©ã\82¤ã\83\99ã\83¼ã\83\88ã\83\9eã\83\83ã\83\94ã\83³ã\82°ã\81«ã\81¯ã\80\81ã\83\92ã\83¼ã\83\97é \98å\9f\9fã\81«å\89²ã\82\8aå½\93ã\81¦ã\82\89ã\82\8cã\81\9fã\83¡ã\83¢ã\83ªã\83¼ã\82\84é\9d\99ç\9a\84ã\81«
\89²ã\82\8aå½\93ã\81¦ã\81\9fã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\82å\90«ã\81¾ã\82\8cã\82\8b\80\82é\9d\9eå\90\8cæ\9c\9f I/O ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ (AIO) çµ\8cç\94±
 やプロセス内の他のスレッドから発行された、このような I/O は、
 \fBfork\fP(2) が呼び出される前に完了されるべきである。
 そうしなかった場合、データ破壊や、親プロセスや子プロセスでの予期しない
 動作が起こる可能性がある。
-\fBO_DIRECT\fP I/O ç\94¨ã\81®ã\83¡ã\83¢ã\83ªã\83\90ã\83\83ã\83\95ã\82¡が \fBshmat\fP(2) や\fBMAP_SHARED\fP フラグ
+\fBO_DIRECT\fP I/O ç\94¨ã\81®ã\83¡ã\83¢ã\83ªã\83¼ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼が \fBshmat\fP(2) や\fBMAP_SHARED\fP フラグ
 付きの \fBmmap\fP(2) で作成された場合には、この制限はあてはまらない。
-\fBmadvise\fP(2) ã\81§ã\83¡ã\83¢ã\83ªã\83\90ã\83\83ã\83\95ã\82¡にアドバイス \fBMADV_DONTFORK\fP が設定され
-ている場合にも、この制限はあてはまらない(\fBMADV_DONTFORK\fP はそのメモリ
-バッファが \fBfork\fP(2) 後に子プロセスからは利用できないことを保証するも
+\fBmadvise\fP(2) ã\81§ã\83¡ã\83¢ã\83ªã\83¼ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼にアドバイス \fBMADV_DONTFORK\fP が設定され
+ている場合にも、この制限はあてはまらない(\fBMADV_DONTFORK\fP はそのメモリ
\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81\8c \fBfork\fP(2) å¾\8cã\81«å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81\8bã\82\89ã\81¯å\88©ç\94¨ã\81§ã\81\8dã\81ªã\81\84ã\81\93ã\81¨ã\82\92ä¿\9d証ã\81\99ã\82\8bã\82\82
 のである)。
 .LP
-\fBO_DIRECT\fP フラグは SGI IRIX で導入された。SGI IRIX にも Linux 2.4 と同様の (ユーザーバッファの)
+\fBO_DIRECT\fP ã\83\95ã\83©ã\82°ã\81¯ SGI IRIX ã\81§å°\8eå\85¥ã\81\95ã\82\8cã\81\9fã\80\82SGI IRIX ã\81«ã\82\82 Linux 2.4 ã\81¨å\90\8cæ§\98ã\81® (ã\83¦ã\83¼ã\82¶ã\83¼ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81®)
 アラインメントの制限がある。 また、IRIX には適切な配置とサイズを取得するための \fBfcntl\fP(2)  コールがある。 FreeBSD 4.x
 も同じ名前のフラグを導入したが、アラインメントの制限はない。
 .LP
@@ -753,7 +767,7 @@ NFS で \fBO_DIRECT\fP を使った場合の動作はローカルのファイル
 をデフォルトでは無効になっている性能向上のためのオプションと 考えておくのがよいであろう。
 .PP
 .RS
-「O_DIRECT でいつも困るのは、インタフェース全部が本当にお馬鹿な点だ。 たぶん危ないマインドコントロール剤で
\80\8cO_DIRECT ã\81§ã\81\84ã\81¤ã\82\82å\9b°ã\82\8bã\81®ã\81¯ã\80\81ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹å\85¨é\83¨ã\81\8cæ\9c¬å½\93ã\81«ã\81\8a馬鹿ã\81ªç\82¹ã\81 ã\80\82 ã\81\9fã\81¶ã\82\93å\8d±ã\81ªã\81\84ã\83\9eã\82¤ã\83³ã\83\89ã\82³ã\83³ã\83\88ã\83­ã\83¼ã\83«å\89¤ã\81§
 頭がおかしくなったサルが設計したんじゃないかな」 \(em Linus
 .RE
 .SH バグ
@@ -770,6 +784,6 @@ NFS で \fBO_DIRECT\fP を使った場合の動作はローカルのファイル
 \fBread\fP(2), \fBsocket\fP(2), \fBstat\fP(2), \fBumask\fP(2), \fBunlink\fP(2),
 \fBwrite\fP(2), \fBfopen\fP(3), \fBfifo\fP(7), \fBpath_resolution\fP(7), \fBsymlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。