OSDN Git Service

(split) LDP: Update release (3.64)
[linuxjm/LDP_man-pages.git] / release / man3 / stdarg.3
index 1f57c58..9808d46 100644 (file)
@@ -5,6 +5,7 @@
 .\" the American National Standards Committee X3, on Information
 .\" Processing Systems.
 .\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
 .\" are met:
 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
+.\" %%%LICENSE_END
 .\"
 .\"    @(#)stdarg.3    6.8 (Berkeley) 6/29/91
 .\"
 .\" Converted for Linux, Mon Nov 29 15:11:11 1993, faith@cs.unc.edu
 .\" Additions, 2001-10-14, aeb
 .\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
 .\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved.
 .\" Translated Fri Mar 22 1998 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
 .\" Updated Tue Oct 16 2001 by Kentaro Shirakata <argrath@ub32.org>
+.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
-.TH STDARG 3  2001-10-14 "" "Linux Programmer's Manual"
-.SH Ì¾Á°
-stdarg, va_start, va_arg, va_end, va_copy \- ¸Ä¿ô¡¦·¿¤¬²ÄÊѤʰú¿ô¥ê¥¹¥È
-.SH ½ñ¼°
-.B #include <stdarg.h>
+.TH STDARG 3 2013\-12\-10 "" "Linux Programmer's Manual"
+.SH 名前
+stdarg, va_start, va_arg, va_end, va_copy \- 個数、型が可変な引数リスト
+.SH 書式
+\fB#include <stdarg.h>\fP
 .sp
-.BI "void va_start(va_list " ap ", " last );
+\fBvoid va_start(va_list \fP\fIap\fP\fB, \fP\fIlast\fP\fB);\fP
 .br
-.IB type " va_arg(va_list " ap ", " type );
+\fItype\fP\fB va_arg(va_list \fP\fIap\fP\fB, \fP\fItype\fP\fB);\fP
 .br
-.BI "void va_end(va_list " ap );
+\fBvoid va_end(va_list \fP\fIap\fP\fB);\fP
 .br
-.BI "void va_copy(va_list " dest ", va_list " src );
-.SH ÀâÌÀ
-´Ø¿ô¤Ï¸Æ¤Ó½Ð¤·¤ËºÝ¤·¤Æ¡¢¸Ä¿ô¤ä·¿¤¬²ÄÊѤʰú¿ô¤ò¤È¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
-¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë
-.I <stdarg.h>
-¤Ç¤Ï
-.I va_list
-·¿¤¬Àë¸À¤µ¤ì¤Æ¤ª¤ê¡¢3 ¤Ä¤Î¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£¤³¤ì¤é¤òÍѤ¤¤ë¤È¡¢
-¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¦¤Ç¤Ï¸Ä¿ô¤ä·¿¤òÃΤé¤Ê¤¤°ú¤­¿ô¤Î¥ê¥¹¥È¤ò¡¢½ç¤Ë°ì
-¤Ä¤Å¤ÄÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤ë¡£
+\fBvoid va_copy(va_list \fP\fIdest\fP\fB, va_list \fP\fIsrc\fP\fB);\fP
+.SH 説明
+関数は呼び出しに際して、個数や型が可変な引数をとることができる。 インクルードファイル \fI<stdarg.h>\fP では
+\fIva_list\fP 型が宣言されており、3 つのマクロが定義されている。これらを用いると、
+呼び出された関数側では個数や型を知らない引き数のリストを、順に一 つづつ読み込むことができる。
 .PP
-¸Æ¤Ó½Ð¤µ¤ì¤ë´Ø¿ô¤Ç¤Ï¡¢
-.I va_list
-·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬Àë¸À¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬
-.BR va_start (),
-.BR va_arg (),
-.BR va_end ()
-¤Î³Æ¥Þ¥¯¥í¤Ë¤è¤Ã¤Æ°·¤ï¤ì¤ë¡£
+呼び出される関数では、 \fIva_list\fP 型のオブジェクトが宣言されていなければならない。このオブジェクトが \fBva_start\fP(),
+\fBva_arg\fP(), \fBva_end\fP()  の各マクロによって扱われる。
 .SS va_start()
-.BR va_start ()
-¥Þ¥¯¥í¤ÏºÇ½é¤Ë¸Æ¤Ó½Ð¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤ì¤Ï
-.I ap
-¤ò½é´ü²½¤·¡¢
-.BR va_arg ()
-¤È
-.BR va_end ()
-¤ÇÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¡£
+\fBva_start\fP()  マクロは最初に呼び出さなければならない。これは \fIap\fP を初期化し、 \fBva_arg\fP()  と
+\fBva_end\fP()  で用いることができるようにする。
 .PP
-°ú¤­¿ô
-.I last
-¤Ï°ú¤­¿ô¥ê¥¹¥È¤Î¤¦¤Á¡¢²ÄÊѤÊÉôʬ¤ÎľÁ°¤ËÃÖ¤«¤ì¤ë°ú¤­¿ô¤Î̾Á°¤Ç¤¢
-¤ë¡£¤Ä¤Þ¤ê¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤¬·¿¤òÃΤäƤ¤¤ëºÇ¸å¤Î°ú¤­¿ô¤Ç¤¢¤ë¡£
+引き数 \fIlast\fP は引き数リストのうち、可変な部分の直前に置かれる引き数の名前であ る。つまり呼び出された関数が型を知っている最後の引き数である。
 .PP
-¤³¤Î°ú¤­¿ô¤Ï¥ì¥¸¥¹¥¿ÊÑ¿ô¤ä´Ø¿ô¡¢ÇÛÎó¤È¤·¤Æ
-Àë¸À¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤³¤Î°ú¤­¿ô¤Î¥¢¥É¥ì¥¹¤¬
-.BR va_start ()
-¥Þ¥¯¥í¤ÇÍѤ¤¤é¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
+この引き数はレジスタ変数や関数、配列として 宣言してはならない。この引き数のアドレスが \fBva_start\fP()
+マクロで用いられるかもしれないからである。
 .SS va_arg()
-.BR va_arg ()
-¥Þ¥¯¥í¤Ï¡¢¸Æ¤Ó½Ð¤·»þ¤Ë»ØÄꤵ¤ì¤¿°ú¤­¿ô¤Î¤¦¤Á¡¢
-¼¡¤Î°ÌÃ֤ˤ¢¤ë¤â¤Î¤ò»ØÄꤷ¤¿·¿
-.I type
-¤ÎÃͤȤ·¤Æ¼èÆÀ¤¹¤ë¡£
-°ú¤­¿ô
-.I ap
-¤Ï
-.I va_list
-.I ap
-¤Ç¡¢
-.BR va_start ()
-¤Ë¤è¤Ã¤Æ½é´ü²½¤µ¤ì¤Æ¤¤¤ëɬÍפ¬¤¢¤ë¡£
-.BR va_arg ()
-¤ò¸Æ¤Ó½Ð¤¹¤´¤È¤Ë
-.I ap
-¤ÏÊѹ¹¤µ¤ì¡¢¼¡²ó¤Î¸Æ¤Ó½Ð¤·¤ÎºÝ¤Ë¡¢¤µ¤é¤Ë¼¡¤Î°ú¤­¿ô¤òÊÖ¤¹¤è¤¦¤Ë¤Ê¤ë¡£
-°ú¤­¿ô
-.I type
-¤Ï·¿¤Î̾Á°¤Ç¤¢¤ë¡£
-.I type
-¤ÎÁ°¤Ë * ¤òÉÕ¤±¤ì¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î·¿ÉÕ¤­¥Ý¥¤¥ó¥¿¤¬ÆÀ¤é¤ì¤ë¡£
+\fBva_arg\fP()  マクロは、呼び出し時に指定された引き数のうち、 次の位置にあるものを指定した型 \fItype\fP の値として取得する。 引き数
+\fIap\fP は \fIva_list\fP \fIap\fP で、 \fBva_start\fP()  によって初期化されている必要がある。 \fBva_arg\fP()
+を呼び出すごとに \fIap\fP は変更され、次回の呼び出しの際に、さらに次の引き数を返すようになる。 引き数 \fItype\fP は型の名前である。
+\fItype\fP の前に * を付ければ、オブジェクトへの型付きポインタが得られる。
 .PP
-.BR va_start ()
-¥Þ¥¯¥í¤Îľ¸å¤Ë
-.BR va_arg ()
-¤òºÇ½é¤Ë¼Â¹Ô¤¹¤ë¤È¡¢
-.I last
-¤Î¼¡¤Î°ú¤­¿ô¤¬Ê֤롣³¤±¤Æ¼Â¹Ô¤¹¤ë¤È¡¢»Ä¤ê¤Î°ú¤­¿ô¤¬¤½¤ì¤¾¤ìÊ֤롣
+\fBva_start\fP()  マクロの直後に \fBva_arg\fP()  を最初に実行すると、 \fIlast\fP
+の次の引き数が返る。続けて実行すると、残りの引き数がそれぞれ返る。
 .PP
-¼¡¤Î°ú¤­¿ô¤¬¤Ê¤«¤Ã¤¿¤ê¡¢
-.I type
-¤¬¼¡¤Î°ú¤­¿ô¤Î¼ÂºÝ¤Î·¿¤È¸ß´¹¤Ç¤Ê¤¤¾ì¹ç (¥Ç¥Õ¥©¥ë¥È¤Î°ú¤­¿ôÊÑ´¹¤Ç°·
-¤¨¤Ê¤«¤Ã¤¿¾ì¹ç) ¤Ë¤Ï¡¢Í½Â¬¤Ç¤­¤Ê¤¤¥¨¥é¡¼¤¬µ¯¤³¤ë¡£
+次の引き数がなかったり、 \fItype\fP が次の引き数の実際の型と互換でない場合 (デフォルトの引き数変換で扱 えなかった場合)
+には、予測できないエラーが起こる。
 .PP
-.I ap
-¤¬
-.BI va_arg( ap , type )
-¤Î·Á¤Ç´Ø¿ô¤ËÅϤµ¤ì¤ë¤È¡¢
-.I ap
-¤ÎÃͤϴؿô¤«¤éÊ֤äÆÍ褿¸å¤ÏÉÔÄê¤È¤Ê¤ë¡£
+\fIap\fP が \fBva_arg(\fP\fIap\fP\fB,\fP\fItype\fP\fB)\fP の形で関数に渡されると、 \fIap\fP
+の値は関数から返って来た後は不定となる。
 .SS va_end()
-.BR va_start ()
-¤¬¼Â¹Ô¤µ¤ì¤ëËè¤Ë¡¢Æ±¤¸´Ø¿ôÆâ¤ÇÂбþ¤¹¤ë
-.BR va_end ()
-¤¬¼Â¹Ô¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-.BI va_end( ap )
-¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¸å¡¢ÊÑ¿ô
-.I ap
-¤ÎÃͤÏÉÔÄê¤È¤Ê¤ë¡£
-.BR va_start ()
-¤È
-.BR va_end ()
-¤ÎÁȤò²¿²ó¤âʤ٤ƻȤ¦¤³¤È¤â²Äǽ¤Ç¤¢¤ë¡£
-.BR va_end ()
-¤Ï¥Þ¥¯¥í¤«¤â¤·¤ì¤Ê¤¤¤·´Ø¿ô¤«¤â¤·¤ì¤Ê¤¤¡£
+\fBva_start\fP()  が実行される毎に、同じ関数内で対応する \fBva_end\fP()  が実行されなければならない。
+\fBva_end(\fP\fIap\fP\fB)\fP が呼び出された後、変数 \fIap\fP の値は不定となる。 \fBva_start\fP()  と \fBva_end\fP()
+の組を何回も並べて使うことも可能である。 \fBva_end\fP()  はマクロかもしれないし関数かもしれない。
 .SS va_copy()
-¤¹¤°Ê¬¤«¤ë
-.I va_list
-¤Î¼ÂÁõ¤Ï¡¢variadic ¤Ê´Ø¿ô¤Î¥¹¥¿¥Ã¥¯¥Õ¥ì¡¼¥à¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
-.\"argrath: variadic?
-¤³¤Î¤è¤¦¤Ê¾ì¹ç(¤Û¤È¤ó¤É¤Ï¤½¤¦¤Ç¤¢¤ë)¡¢
-ñ¤Ë°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤¤¤¤¤è¤¦¤Ë»×¤¨¤ë¡£
+\fBva_copy\fP() マクロは (初期化済みの) 可変長引き数リスト \fIsrc\fP を \fIdest\fP にコピーする。動作は、 \fIlast\fP
+引き数に \fIdest\fP を渡して \fBva_start\fP() を \fIdest\fP に適用し、それから \fIsrc\fP
+が現在の状態に達するまでに呼び出したのと同じ回数だけ \fBva_arg\fP() を呼び出す、のと同じことを行う。
+
+.\" Proposal from clive@demon.net, 1997-02-28
+すぐ分かる \fIva_list\fP の実装は、variadic な関数のスタックフレームのポインタである。 このような場合(ほとんどはそうである)、
+単に以下のようにすればいいように思える。
 .in +4n
 .nf
 
@@ -162,8 +112,7 @@ va_list aq = ap;
 
 .fi
 .in
-»ÄÇ°¤Ê¤¬¤é¡¢(Ťµ 1¤Î)¥Ý¥¤¥ó¥¿¤ÎÇÛÎó¤È¤·¤Æ°·¤¦¥·¥¹¥Æ¥à¤â¤¢¤ë¡£
-¤½¤Î¤è¤¦¤Ê¾ì¹ç¡¢°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
+残念ながら、(長さ 1の)ポインタの配列として扱うシステムもある。 そのような場合、以下のようにする必要がある。
 .in +4n
 .nf
 
@@ -172,19 +121,10 @@ va_list aq;
 
 .fi
 .in
-ºÇ¸å¤Ë¡¢°ú¤­¿ô¤ò¥ì¥¸¥¹¥¿¤ÇÅϤ¹¥·¥¹¥Æ¥à¤Î¾ì¹ç¡¢
-.BR va_start ()
-¤Ç¥á¥â¥ê¤ò³ä¤êÅö¤Æ¡¢°ú¤­¿ô¤ò³ÊǼ¤·¡¢
-¼¡¤Î°ú¤­¿ô¤¬¤É¤ì¤«¤ò»Ø¤·¼¨¤¹¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¡£
-¤½¤·¤Æ
-.BR va_arg ()
-¤Ç¥ê¥¹¥È¤ò½çÈ֤ˤ¿¤É¤ê¡¢
-.BR va_end ()
-¤Ç³ä¤êÅö¤Æ¤¿¥á¥â¥ê¤ò³«Êü¤¹¤ë¡£
-¤³¤Î¤è¤¦¤Ê¾õ¶·¤ËÂбþ¤¹¤ë¤¿¤á¡¢C99 ¤Ç¤Ï
-.BR va_copy ()
-¥Þ¥¯¥í¤òÄɲä·¡¢
-Á°½Ò¤Î¤è¤¦¤Ê³ä¤êÅö¤Æ¤Ï°Ê²¼¤Î¤è¤¦¤ËÃÖ¤­´¹¤¨¤é¤ì¤ë¤è¤¦¤Ë¤·¤¿¡£
+最後に、引き数をレジスタで渡すシステムの場合、 \fBva_start\fP()  でメモリを割り当て、引き数を格納し、
+次の引き数がどれかを指し示すようにする必要がある。 そして \fBva_arg\fP()  でリストを順番にたどり、 \fBva_end\fP()
+で割り当てたメモリを開放する。 このような状況に対応するため、C99 では \fBva_copy\fP()  マクロを追加し、
+前述のような割り当ては以下のように置き換えられるようにした。
 .in +4n
 .nf
 
@@ -195,32 +135,19 @@ va_end(aq);
 
 .fi
 .in
-.RE
-.BR va_copy ()
-¤¬¼Â¹Ô¤µ¤ì¤ë¤´¤È¤Ë¡¢
-Âбþ¤¹¤ë
-.BR va_end ()
-¤òƱ¤¸´Ø¿ôÆâ¤Ç¼Â¹Ô¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-¤³¤Î̾Á°¤Ï¤Þ¤À draft proposal ¤Ê¤Î¤Ç¡¢
-.BR va_copy ()
-¤ÎÂå¤ï¤ê¤Ë
-.B __va_copy
-¤òÍѤ¤¤ë¥·¥¹¥Æ¥à¤â¤¢¤ë¡£
-.SH ½àµò
-.BR va_start (),
-.BR va_arg (),
-.BR va_end ()
-¥Þ¥¯¥í¤Ï C89 ½àµò¤Ç¤¢¤ë¡£
-.BR va_copy ()
-¤Ï C99 ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-.SH Ãí°Õ
-¤³¤ì¤é¤Î¥Þ¥¯¥í¤Ï¡¢°ÊÁ°¤«¤éÍѤ¤¤é¤ì¤Æ¤­¤¿Æ±Åù¤Î¥Þ¥¯¥í·²¤È
-¸ß´¹¤Ç¤Ï\fI¤Ê¤¤\fP¡£²áµî¤Î¤â¤Î¤È¸ß´¹¤Ê¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢
-¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë
-.I <varargs.h>
-¤Ë¸ºß¤¹¤ë¡£
+\fBva_copy\fP()  が実行されるごとに、 対応する \fBva_end\fP()  を同じ関数内で実行しなければならない。 この名前はまだ draft
+proposal なので、 \fBva_copy\fP()  の代わりに \fB__va_copy\fP を用いるシステムもある。
+.SH 属性
+.SS "マルチスレッディング (pthreads(7) 参照)"
+マクロ \fBva_start\fP(), \fBva_arg\fP(), \fBva_end\fP(), \fBva_copy\fP() はスレッドセーフである。
+.SH 準拠
+\fBva_start\fP(), \fBva_arg\fP(), \fBva_end\fP()  マクロは C89 準拠である。 \fBva_copy\fP()  は C99
+で定義されている。
+.SH 注意
+これらのマクロは、以前から用いられてきた同等のマクロ群と 互換では\fIない\fP。過去のものと互換なバージョンは、 インクルードファイル
+\fI<varargs.h>\fP に存在する。
 .PP
-Îò»ËŪ¤Ê¥»¥Ã¥È¥¢¥Ã¥×¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¢¤ë¡£
+歴史的なセットアップは以下のとおりである。
 .in +4n
 .nf
 
@@ -243,31 +170,14 @@ foo(va_alist)
 
 .fi
 .in
-.I va_start
-¥Þ¥¯¥í¤Ë \(aq}\(aq ¤ò´Þ¤ß¡¢
-.I va_end
-¥Þ¥¯¥í¤ËÂбþ¤¹¤ë \(aq{\(aq ¤ò´Þ¤à¥·¥¹¥Æ¥à¤â¤¢¤ë¤Î¤Ç¡¢
-¤³¤ÎÆó¤Ä¤Î¥Þ¥¯¥í¤ÏƱ¤¸´Ø¿ô¤Ë¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-.SH ¥Ð¥°
-.B varargs
-¥Þ¥¯¥í¤È¤Ï°Û¤Ê¤ê¡¢
-.B stdarg
-¥Þ¥¯¥í¤Ç¤Ï¸ÇÄê°ú¤­¿ô¤Ê¤·¤Ç´Ø¿ô¤ò»ØÄꤹ¤ë¤³¤È¤¬µö¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
-¤³¤ì¤Ï
-.B varargs
-¥Ù¡¼¥¹¤Î¥³¡¼¥É¤ò
-.B stdarg
-¤Î¥³¡¼¥É¤Ë½ñ¤­´¹¤¨¤ë¤È¤­¤Ë¡¢ÌÌÅݤʺî¶È¤Î¤â¤È¤Ë¤Ê¤ë¡£
-¤Þ¤¿¡¢¤¹¤Ù¤Æ¤Î°ú¤­¿ô¤ò
-.I va_list
-¤È¤·¤Æ²ÄÊѸĻØÄꤷ¤¿¤¤¤è¤¦¤Ê¾ì¹ç
-.RB ( vfprintf (3)
-¤Ê¤É) ¤Ë¤â¾ã³²¤È¤Ê¤ë¡£
-.SH Îã
-´Ø¿ô
-.I foo
-¤Ï½ñ¼°Ê¸»ú¤«¤é¤Ê¤ëʸ»úÎó¤ò¼õ¤±Æþ¤ì¡¢¤½¤Î½ñ¼°Ê¸»ú¤ËÂбþ¤¹¤ë·¿¤Ç²ÄÊѸĤÎ
-°ú¤­¿ô¤òÆɤ߹þ¤ß¡¢°õ»ú¤¹¤ë¡£
+\fIva_start\fP マクロに \(aq}\(aq を含み、 \fIva_end\fP マクロに対応する \(aq{\(aq を含むシステムもあるので、
+この二つのマクロは同じ関数になければならない。
+.SH バグ
+\fBvarargs\fP マクロとは異なり、 \fBstdarg\fP マクロでは固定引き数なしで関数を指定することが許されていない。 これは
+\fBvarargs\fP ベースのコードを \fBstdarg\fP のコードに書き換えるときに、面倒な作業のもとになる。 また、すべての引き数を
+\fIva_list\fP として可変個指定したいような場合 (\fBvfprintf\fP(3)  など) にも障害となる。
+.SH 例
+関数 \fIfoo\fP は書式文字からなる文字列を受け入れ、その書式文字に対応する型で可変個の 引き数を読み込み、印字する。
 .nf
 
 #include <stdio.h>
@@ -301,3 +211,7 @@ foo(char *fmt, ...)
     va_end(ap);
 }
 .fi
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.64 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。