OSDN Git Service

(split) LDP: draft snapshot generated from latest ja.po files.
authorAkihiro MOTOKI <amotoki@gmail.com>
Mon, 30 Apr 2012 13:09:18 +0000 (22:09 +0900)
committerAkihiro MOTOKI <amotoki@gmail.com>
Mon, 30 Apr 2012 13:09:18 +0000 (22:09 +0900)
116 files changed:
draft/man2/access.2 [new file with mode: 0644]
draft/man2/chown.2 [new file with mode: 0644]
draft/man2/epoll_create.2 [new file with mode: 0644]
draft/man2/epoll_wait.2 [new file with mode: 0644]
draft/man2/fstatat.2 [deleted file]
draft/man2/fsync.2 [new file with mode: 0644]
draft/man2/getdents.2 [new file with mode: 0644]
draft/man2/getgid.2 [new file with mode: 0644]
draft/man2/getgroups.2 [new file with mode: 0644]
draft/man2/getpagesize.2 [new file with mode: 0644]
draft/man2/getpriority.2
draft/man2/getresuid.2 [new file with mode: 0644]
draft/man2/gettimeofday.2 [new file with mode: 0644]
draft/man2/getuid.2 [new file with mode: 0644]
draft/man2/ioprio_set.2
draft/man2/ipc.2
draft/man2/link.2
draft/man2/llseek.2
draft/man2/mount.2 [new file with mode: 0644]
draft/man2/nfsservctl.2 [new file with mode: 0644]
draft/man2/pipe.2 [new file with mode: 0644]
draft/man2/poll.2 [new file with mode: 0644]
draft/man2/pread.2 [new file with mode: 0644]
draft/man2/read.2
draft/man2/recvmmsg.2 [deleted file]
draft/man2/rename.2
draft/man2/rmdir.2
draft/man2/sendfile.2 [new file with mode: 0644]
draft/man2/setfsgid.2 [new file with mode: 0644]
draft/man2/setfsuid.2 [new file with mode: 0644]
draft/man2/setgid.2 [new file with mode: 0644]
draft/man2/setresuid.2 [new file with mode: 0644]
draft/man2/setreuid.2 [new file with mode: 0644]
draft/man2/setsid.2
draft/man2/setuid.2 [new file with mode: 0644]
draft/man2/stat.2 [new file with mode: 0644]
draft/man2/statfs.2 [new file with mode: 0644]
draft/man2/swapon.2 [new file with mode: 0644]
draft/man2/symlink.2
draft/man2/syscalls.2 [new file with mode: 0644]
draft/man2/syslog.2 [new file with mode: 0644]
draft/man2/truncate.2 [new file with mode: 0644]
draft/man2/umount.2 [new file with mode: 0644]
draft/man2/vfork.2 [new file with mode: 0644]
draft/man2/write.2
draft/man3/aio_cancel.3 [new file with mode: 0644]
draft/man3/aio_error.3 [new file with mode: 0644]
draft/man3/aio_fsync.3 [new file with mode: 0644]
draft/man3/aio_init.3 [new file with mode: 0644]
draft/man3/aio_read.3 [new file with mode: 0644]
draft/man3/aio_return.3 [new file with mode: 0644]
draft/man3/aio_suspend.3 [new file with mode: 0644]
draft/man3/aio_write.3 [new file with mode: 0644]
draft/man3/dprintf.3
draft/man3/euidaccess.3 [new file with mode: 0644]
draft/man3/ferror.3
draft/man3/fread.3 [new file with mode: 0644]
draft/man3/getaddrinfo.3 [new file with mode: 0644]
draft/man3/getifaddrs.3 [deleted file]
draft/man3/gets.3 [new file with mode: 0644]
draft/man3/insque.3 [new file with mode: 0644]
draft/man3/perror.3 [new file with mode: 0644]
draft/man3/popen.3
draft/man3/qsort.3 [new file with mode: 0644]
draft/man3/rcmd.3 [new file with mode: 0644]
draft/man3/scandirat.3 [new file with mode: 0644]
draft/man3/scanf.3 [new file with mode: 0644]
draft/man3/stdio_ext.3
draft/man3/tempnam.3
draft/man3/wprintf.3
draft/man5/core.5 [new file with mode: 0644]
draft/man5/elf.5 [new file with mode: 0644]
draft/man5/filesystems.5 [new file with mode: 0644]
draft/man5/resolv.conf.5 [new file with mode: 0644]
draft/man5/tzfile.5 [new file with mode: 0644]
draft/man7/arp.7
draft/man7/capabilities.7 [deleted file]
draft/man7/credentials.7
draft/man7/ddp.7
draft/man7/environ.7
draft/man7/feature_test_macros.7 [new file with mode: 0644]
draft/man7/fifo.7
draft/man7/glob.7
draft/man7/icmp.7
draft/man7/inotify.7 [new file with mode: 0644]
draft/man7/ip.7
draft/man7/ipv6.7
draft/man7/man.7 [new file with mode: 0644]
draft/man7/math_error.7
draft/man7/mq_overview.7
draft/man7/netdevice.7
draft/man7/netlink.7
draft/man7/operator.7 [new file with mode: 0644]
draft/man7/packet.7
draft/man7/pipe.7
draft/man7/posixoptions.7 [new file with mode: 0644]
draft/man7/pthreads.7
draft/man7/pty.7
draft/man7/raw.7
draft/man7/regex.7
draft/man7/rtnetlink.7
draft/man7/sem_overview.7
draft/man7/shm_overview.7
draft/man7/signal.7
draft/man7/socket.7
draft/man7/suffixes.7 [new file with mode: 0644]
draft/man7/svipc.7
draft/man7/tcp.7
draft/man7/termio.7
draft/man7/time.7
draft/man7/udp.7
draft/man7/udplite.7
draft/man7/unix.7
draft/man7/uri.7
draft/man7/x25.7
draft/man8/ld.so.8 [new file with mode: 0644]

diff --git a/draft/man2/access.2 b/draft/man2/access.2
new file mode 100644 (file)
index 0000000..ee7c6f6
--- /dev/null
@@ -0,0 +1,161 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
+.\"                               1993 Michael Haardt, Ian Jackson.
+.\" and Copyright (C) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified 1993-07-21 Rik Faith (faith@cs.unc.edu)
+.\" Modified 1994-08-21 by Michael Chastain (mec@shell.portal.com):
+.\"   Removed note about old kernel (pre-1.1.44) using wrong id on path.
+.\" Modified 1996-03-18 by Martin Schulze (joey@infodrom.north.de):
+.\"   Stated more clearly how it behaves with symbolic links.
+.\" Added correction due to Nick Duffek (nsd@bbc.com), aeb, 960426
+.\" Modified 1996-09-07 by Michael Haardt:
+.\"   Restrictions for NFS
+.\" Modified 1997-09-09 by Joseph S. Myers <jsm28@cam.ac.uk>
+.\" Modified 1998-01-13 by Michael Haardt:
+.\"   Using access is often insecure
+.\" Modified 2001-10-16 by aeb
+.\" Modified 2002-04-23 by Roger Luethi <rl@hellgate.ch>
+.\" Modified 2004-06-23 by Michael Kerrisk
+.\" 2007-06-10, mtk, various parts rewritten, and added BUGS section.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH ACCESS 2 2010\-10\-24 Linux "Linux Programmer's Manual"
+.SH 名前
+access \- ファイルに対する実ユーザーでのアクセス権をチェックする
+.SH 書式
+.nf
+\fB#include <unistd.h>\fP
+.sp
+\fBint access(const char *\fP\fIpathname\fP\fB, int \fP\fImode\fP\fB);\fP
+.fi
+.SH 説明
+\fBaccess\fP()  は、呼び出し元プロセスがファイル \fIpathname\fP にアクセスできるかどうかをチェックする。 \fIpathname\fP
+がシンボリック・リンクの場合、シンボリック・リンクは展開される。
+
+.\" F_OK is defined as 0 on every system that I know of.
+\fImode\fP はチェックを行うアクセス権を指定するもので、その値は \fBF_OK\fP、 もしくは \fBR_OK\fP, \fBW_OK\fP, \fBX_OK\fP の
+1個以上のビット単位の論理和から構成されるマスクである。 \fBF_OK\fP はファイルが存在するかどうかのみを検査する。 \fBR_OK\fP,
+\fBW_OK\fP, \fBX_OK\fP は、ファイルが存在して、それぞれ読み込み、書き込み、実行の許可があるか を検査する。
+
+チェックは、実際に操作が行われる際に使用される実効 (effective) ID でなく、 呼び出し元プロセスの \fI実 (real)\fP UID と
+\fI実 (real)\fP GID を使って行われる。 これにより、set\-user\-ID プログラムで、プログラムを起動するユーザの権限を
+簡単に決定することができる。
+
+呼び出し元プロセスが特権プロセス (つまり、プロセスの実 UID が 0) の場合、 通常のファイルに対する \fBX_OK\fP
+のチェックは、そのファイルの所有者、グループ、他人のいずれかの 実行許可が有効になっていれば成功する。
+.SH 返り値
+成功した場合 (要求した全てについて許可が得られたら)、ゼロが返される。 エラーの場合 (\fImode\fP
+の少なくとも一つのビットで要求した許可がなかった場合や、 他のエラーが起こった場合)、\-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+\fBaccess\fP()  は以下の場合に失敗する。
+.TP 
+\fBEACCES\fP
+要求されたアクセスは そのファイル自身に拒否されたか \fIpathname\fP へ至るまでディレクトリのいずれかに対する検索許可 (search
+permission) が得られなかった。 (\fBpath_resolution\fP(7)  も参照のこと)
+.TP 
+\fBELOOP\fP
+\fIpathname\fP を解決するときに、解決すべきシンボリックリンクが多すぎた。
+.TP 
+\fBENAMETOOLONG\fP
+\fIpathname\fP が長過ぎる。
+.TP 
+\fBENOENT\fP
+\fIpathname\fP を構成するパスのいずれかが、存在しないか、 参照先のない (dangling) シンボリックリンクになっている。
+.TP 
+\fBENOTDIR\fP
+\fIpathname\fP のディレクトリ部分が実際にはディレクトリでない。
+.TP 
+\fBEROFS\fP
+読み込み専用 (read\-only) のファイル・システムに対して書き込み許可を 要求した。
+.PP
+\fBaccess\fP()  は以下の理由により失敗することがある。
+.TP 
+\fBEFAULT\fP
+\fIpathname\fP がアクセス可能なアドレス空間の外を指している。
+.TP 
+\fBEINVAL\fP
+\fImode\fP に不正な値が指定された。
+.TP 
+\fBEIO\fP
+I/O エラーが発生した。
+.TP 
+\fBENOMEM\fP
+カーネルに十分なメモリがない。
+.TP 
+\fBETXTBSY\fP
+実行中のファイルに対して書き込みを要求した。
+.SH 準拠
+SVr4, 4.3BSD, POSIX.1\-2001.
+.SH 注意
+.PP
+\fB警告\fP: あるユーザが、例えば \fBopen\fP(2) によるアクセスが可能かどうかを、
+(実際に行う前に) \fBaccess\fP() を使ってチェックするのは、セキュリティホール
+の原因になる。なぜならチェックをしてから 実際にファイルのオープン操作を
+する間の短い間隔を悪用できるからである。 \fBこの理由があるので、この
+システムコールを使うのは避けるべきである。\fP
+(ここで説明した例の場合には、より安全な方法としては、
+そのプロセスの実効ユーザ ID を実ユーザ ID に一時的に切り替えてから
+\fBopen\fP(2) を呼び出す方法がある。)
+.PP
+\fBaccess\fP() は常にシンボリックリンクの展開を行う。
+シンボリックリンクのアクセス許可を確認する必要がある場合は、
+\fBAT_SYMLINK_NOFOLLOW\fP フラグ付きで \fBfaccessat(2)\fP を使うこと。
+.PP
+\fImode\fP で指定されたアクセス種別のいずれか一つでも拒否されると、 たとえ \fImode\fP で指定された他のアクセス種別が許可されたとしても、
+\fBaccess\fP()  はエラーを返す。
+.PP
+.\" HPU-UX 11 and Tru64 5.1 do this.
+POSIX.1\-2001 では、 呼び出し元プロセスが適切な特権を持っている場合 (つまり、スーパーユーザの場合)、
+たとえファイルの実行許可ビットが全くセットされていなくても \fBX_OK\fP のチェックとして成功を返す実装が認められている。 Linux
+はこのようにはなっていない。
+.PP
+\fIpathname\fP のプレフィックスを構成するディレクトリの全てに対して 検索アクセス (すなわち、実行アクセス) が許可された場合にのみ、
+ファイルはアクセス可能となる。 いずれかのディレクトリがアクセス不可の場合、 ファイル自身のアクセス許可に関わらず、 \fBaccess\fP()
+は失敗する。
+.PP
+アクセス・ビットのみがチェックされ、ファイルの種類や内容はチェックされない。 従って、ディレクトリが書き込み可能となった場合は、ディレクトリに
+ファイルを作成することが可能なことを意味するのであり、ディレクトリに ファイルとして書き込むことができるわけではない。 同様に DOS
+のファイルは「実行可能」と判断されるが、 \fBexecve\fP(2)  コールは失敗するだろう。
+.PP
+\fBaccess\fP()  は、 UID マッピングを使用した NFS ファイル・システムでは正常に 機能しないかもしれない。なぜならば UID
+のマッピングはサーバーで 行なわれ、権利のチェックをするクライアントには見えないからである。
+.SH バグ
+.\" This behavior appears to have been an implementation accident.
+バージョン 2.4 (とそれ以前) のカーネルには、スーパーユーザでの \fBX_OK\fP のチェックの扱いに奇妙な点がある。 ディレクトリ以外のファイルで
+(ユーザ、グループ、他人の) 全てのカテゴリについて 実行許可がない場合、 \fBaccess\fP()  のチェックで \-1 が返るのは \fImode\fP に
+\fBX_OK\fP だけが指定されたときだけであり \fImode\fP に \fBR_OK\fP や \fBW_OK\fP が一緒に指定された場合には
+\fBaccess\fP()  は 0 を返す。 (バージョン 2.6.3 以前の) 初期の 2.6 系のカーネルも 2.4 系のカーネルと同様の動作をする。
+
+2.6.20 より前のカーネルでは、 ファイルが存在するファイルシステムを \fBmount\fP(2)  する際に指定された \fBMS_NOEXEC\fP
+フラグの効果を、 \fBaccess\fP()  は無視していた。 カーネル 2.6.20 以降では、 \fBaccess\fP()
+はこのフラグを考慮するようになっている。
+.SH 関連項目
+\fBchmod\fP(2), \fBchown\fP(2), \fBfaccessat\fP(2), \fBopen\fP(2), \fBsetgid\fP(2),
+\fBsetuid\fP(2), \fBstat\fP(2), \fBeauidaccess\fP(3), \fBcredentials\fP(7),
+\fBpath_resolution\fP(7)
diff --git a/draft/man2/chown.2 b/draft/man2/chown.2
new file mode 100644 (file)
index 0000000..de7f294
--- /dev/null
@@ -0,0 +1,232 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
+.\" and Copyright (c) 1998 Andries Brouwer (aeb@cwi.nl)
+.\" and Copyright (c) 2007, 2008 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified by Michael Haardt <michael@moria.de>
+.\" Modified 1993-07-21 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1996-07-09 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified 1996-11-06 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 1997-05-18 by Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
+.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" 2007-07-08, mtk, added an example program; updated SYNOPSIS
+.\" 2008-05-08, mtk, Describe rules governing ownership of new files
+.\"     (bsdgroups versus sysvgroups, and the effect of the parent
+.\"     directory's set-group-ID permission bit).
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH CHOWN 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+chown, fchown, lchown \- ファイルの所有者を変更する
+.SH 書式
+\fB#include <unistd.h>\fP
+.sp
+\fBint chown(const char *\fP\fIpath\fP\fB, uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP
+.br
+\fBint fchown(int \fP\fIfd\fP\fB, uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP
+.br
+\fBint lchown(const char *\fP\fIpath\fP\fB, uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBfchown\fP(), \fBlchown\fP():
+.PD 0
+.ad l
+.RS 4
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+.br
+|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L
+.RE
+.ad
+.PD
+.SH 説明
+これらのシステムコールは、ファイルの所有者 (owner) とグループを変更する。 システムコール間の違いは、ファイルの指定の仕方だけである。
+.IP * 2
+\fBchown\fP()  は \fIpath\fP で指定されたファイルの所有権を変更する。 \fIpath\fP
+がシンボリック・リンクの場合は、リンクの展開が行われる。
+.IP *
+\fBfchown\fP()  はオープンされたファイルディスクリプタ \fIfd\fP により参照されるファイルの所有権を変更する。
+.IP *
+\fBlchown\fP()  は \fBchown\fP()  と同じだが、シンボリック・リンクを展開しない点が異なる。
+.PP
+特権を持つプロセス (Linux では \fBCAP_CHOWN\fP ケーパビリティ (capability) を持つプロセス) だけが
+ファイルの所有者を変更できる。 ファイルの所有者は、その所有者が属しているグループのいずれかに ファイルのグループを変更することができる。 特権
+(Linux では \fBCAP_CHOWN\fP)  を持つプロセスは、任意のグループに変更できる。
+
+\fIowner\fP または \fIgroup\fP に \-1 が指定された場合、それらの ID は変更されない。
+
+.\" In Linux 2.0 kernels, superuser was like everyone else
+.\" In 2.2, up to 2.2.12, these bits were not cleared for superuser.
+.\" Since 2.2.13, superuser is once more like everyone else.
+非特権ユーザーにより実行ファイルの所有者またはグループが 変更された場合は \fBS_ISUID\fP と \fBISGID\fP モードビットはクリアされる。
+POSIX はこの動作やルートが \fBchown\fP()  を行なった場合については特に指定されていない。 Linux
+における動作はカーネルのバージョンに依存する。 非グループ実行ファイル (\fBS_IXGRP\fP ビットが設定されていないファイル) の場合には
+\fBS_ISGID\fP ビットは強制ロック (mandatory locking) を意味している。 そしてそれは \fBchown\fP()
+ではクリアできない。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+ファイルシステムによっては他のエラーが返される事がある。 \fBchmod\fP で一般的なエラーを以下に挙げる。
+.TP 
+\fBEACCES\fP
+パス名の構成要素に検索許可がない (\fBpath_resolution\fP(7)  も見よ)。
+.TP 
+\fBEFAULT\fP
+\fIpath\fP がアクセスできるアドレス空間外を指している。
+.TP 
+\fBELOOP\fP
+\fIpath\fP を解決する際に遭遇したシンボリック・リンクが多過ぎる。
+.TP 
+\fBENAMETOOLONG\fP
+\fIpath\fP が長過ぎる。
+.TP 
+\fBENOENT\fP
+ファイルが存在しない。
+.TP 
+\fBENOMEM\fP
+カーネルに十分なメモリがない。
+.TP 
+\fBENOTDIR\fP
+パス名の構成要素がディレクトリではない。
+.TP 
+\fBEPERM\fP
+呼び出したプロセスに所有者またはグループ (もしくはその両方) を変更するために 要求される許可 (上記を参照) がない。
+.TP 
+\fBEROFS\fP
+ファイルが読み込み専用 (read only) のファイル・システム上にある。
+.PP
+\fBfchown\fP()  で一般的なエラーを以下に挙げる:
+.TP 
+\fBEBADF\fP
+ディスクリプターが有効でない。
+.TP 
+\fBEIO\fP
+i ノード (inode) を変更する際に低レベル I/O エラーが発生した。
+.TP 
+\fBENOENT\fP
+上記を参照。
+.TP 
+\fBEPERM\fP
+上記を参照。
+.TP 
+\fBEROFS\fP
+上記を参照。
+.SH 準拠
+4.4BSD, SVr4, POSIX.1\-2001.
+
+.\" chown():
+.\" SVr4 documents EINVAL, EINTR, ENOLINK and EMULTIHOP returns, but no
+.\" ENOMEM.  POSIX.1 does not document ENOMEM or ELOOP error conditions.
+.\" fchown():
+.\" SVr4 documents additional EINVAL, EIO, EINTR, and ENOLINK
+.\" error conditions.
+4.4BSD 版ではスーパー・ユーザーのみが使用できる (つまり、普通のユーザーはファイルを手放すことはできない)。
+.SH 注意
+元々の Linux の \fBchown\fP(), \fBfchown\fP(), \fBlchown\fP() システムコールは、
+16 ビットのユーザ ID とグループ ID だけに対応していた。
+その後、 32 ビットの ID に対応した \fBchown32\fP(), \fBfchown32\fP(), \fBlchown32\fP()
+が Linux 2.4 で追加された。
+\fBchown\fP(), \fBfchown\fP(), and \fBlchown\fP() の glibc のラッパー関数は、
+カーネルのバージョンによる違いを吸収している。
+
+(\fBopen\fP(2)  や \fBmkdir\fP(2)  などにより) 新しいファイルが作成されるとき、
+その所有者は呼び出したプロセスのファイルシステム・ユーザ ID と 同じに設定される。 そのファイルのグループはいくつかの要因により決定される。
+その要因としては、 ファイルシステムの種類、そのファイルシステムのマウント時に 使用されたオプション、親ディレクトリで set\-group\-ID
+許可ビットが 有効になっているどうか、がある。 ファイルシステムが \fBmount\fP(8)  オプションの \fI\-o\ grpid\fP (\fI\-o\ bsdgroups\fP も同義語) と \fI\-o\ nogrpid\fP (\fI\-o sysvgroups\fP も同義語)
+に対応している場合、ルールは以下の通りとなる。
+.IP * 2
+ファイルシステムが \fI\-o\ grpid\fP 付きでマウントされている場合、新しいファイルのグループは 親ディレクトリのグループと同じになる。
+.IP *
+ファイルシステムが \fI\-o\ nogrpid\fP 付きでマウントされており、親ディレクトリでは set\-group\-ID ビットが
+無効になっている場合、新しいファイルのグループは プロセスのファイルシステム GID と同じになる。
+.IP *
+ファイルシステムが \fI\-o\ nogrpid\fP 付きでマウントされており、親ディレクトリでは set\-group\-ID ビットが
+有効になっている場合、新しいファイルのグループは 親ディレクトリのグループと同じになる。
+.PP
+Linux 2.6.25 では、マウントオプション \fI\-o\ grpid\fP と \fI\-o\ nogrpid\fP に対応しているファイルシステムは
+ext2, ext3, ext4, XFS である。 これらのマウントオプションに対応していないファイルシステムでは、 \fI\-o\ nogrpid\fP
+に関するルールが適用される。
+.PP
+\fBchown\fP()  方式は UID マッピングを使用した NFS ファイル・システムを侵害する。
+さらにファイルの内容にアクセスする全てのシステム・コールを侵害する。 これは \fBchown\fP()  が既にオープンされたファイルに対する
+アクセスをただちに取り消すことによる。 クライアント側のキャッシュにより所有権が変更されて
+ユーザーのアクセスが許した時点と、実際に他のクライアントでユーザーによって ファイルにアクセスできる時点との間に時間差があるかもしれない。
+
+Linux の 2.1.81 より前のバージョン (特に 2.1.46 以前) では、 \fBchown\fP()  はシンボリック・リンクを追跡しない。
+Linux 2.1.81 以降では \fBchown\fP()  はシンボリック・リンクを追跡し、新たなシステム・コール \fBlchown\fP()
+はシンボリック・リンクを追跡しない。 Linux 2.1.86 以降ではこの新しいコール (古い \fBchown\fP()  と全く同じ動作を行なう)
+は同じシステムコール番号を持ち \fBchown\fP()  は新しく導入された番号を持つ。
+.SH 例
+.PP
+以下のプログラムは、 二つ目のコマンドライン引き数で指定された名前のファイルの所有者を、 一つ目のコマンドライン引き数で指定された値に変更する。
+新しい所有者は、数字のユーザ ID かユーザ名のいずれかで指定できる (ユーザ名で指定した場合には、 \fBgetpwnam\fP(3)
+を使ってシステムのパスワードファイルの検索が行われ、 ユーザ ID への変換が行われる)。
+.nf
+
+#include <pwd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int argc, char *argv[])
+{
+    uid_t uid;
+    struct passwd *pwd;
+    char *endptr;
+
+    if (argc != 3 || argv[1][0] == \(aq\e0\(aq) {
+        fprintf(stderr, "%s <owner> <file>\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    uid = strtol(argv[1], &endptr, 10);  /* Allow a numeric string */
+
+    if (*endptr != \(aq\e0\(aq) {         /* Was not pure numeric string */
+        pwd = getpwnam(argv[1]);   /* Try getting UID for username */
+        if (pwd == NULL) {
+            perror("getpwnam");
+            exit(EXIT_FAILURE);
+        }
+
+        uid = pwd\->pw_uid;
+    }
+
+    if (chown(argv[2], uid, \-1) == \-1) {
+        perror("chown");
+        exit(EXIT_FAILURE);
+    }
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBchmod\fP(2), \fBfchownat\fP(2), \fBflock\fP(2), \fBpath_resolution\fP(7),
+\fBsymlink\fP(7)
diff --git a/draft/man2/epoll_create.2 b/draft/man2/epoll_create.2
new file mode 100644 (file)
index 0000000..f710b7d
--- /dev/null
@@ -0,0 +1,101 @@
+.\"
+.\"  epoll by Davide Libenzi ( efficient event notification retrieval )
+.\"  Copyright (C) 2003  Davide Libenzi
+.\"
+.\"  This program is free software; you can redistribute it and/or modify
+.\"  it under the terms of the GNU General Public License as published by
+.\"  the Free Software Foundation; either version 2 of the License, or
+.\"  (at your option) any later version.
+.\"
+.\"  This program is distributed in the hope that it will be useful,
+.\"  but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\"  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\"  GNU General Public License for more details.
+.\"
+.\"  You should have received a copy of the GNU General Public License
+.\"  along with this program; if not, write to the Free Software
+.\"  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+.\"
+.\"  Davide Libenzi <davidel@xmailserver.org>
+.\"
+.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified 2005-04-04 by Marko Kohtala <marko.kohtala@gmail.com>
+.\" 2008-10-10, mtk: add description of epoll_create1()
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH EPOLL_CREATE 2 2012\-04\-15 Linux "Linux Programmer's Manual"
+.SH 名前
+epoll_create, epoll_create1 \- epoll ファイルディスクリプタをオープンする
+.SH 書式
+.nf
+\fB#include <sys/epoll.h>\fP
+.sp
+\fBint epoll_create(int \fP\fIsize\fP\fB);\fP
+\fBint epoll_create1(int \fP\fIflags\fP\fB);\fP
+.fi
+.SH 説明
+\fBepoll_create\fP()は \fBepoll\fP(7) インスタンスを作成する。
+Linux 2.6.8 以降では、\fIsize\fP 引き数は無視されるが、 0 より大きな値で
+なければならない。下記の「注意」を参照。
+
+\fBepoll_create\fP()  は、新しい epoll インスタンスを参照するファイルディスクリプタを返す。
+このファイルディスクリプタは、その後の \fBepoll\fP インタフェースの呼び出しに使われる。 もう必要でなくなった場合は、
+\fBepoll_create\fP()  で返されたファイルディスクリプタは \fBclose\fP(2)  を使ってクローズされるべきである。 ある epoll
+インスタンスを参照する全てのファイルディスクリプタがクローズされると、 カーネルはそのインスタンスを破壊して、対応するリソースを解放し、
+再使用できるようにする。
+
+.SS epoll_create1()
+\fBepoll_create1\fP()  は、 \fIflags\fP が 0 の場合、現在では使われていない \fIsize\fP 引き数がなくなっている点を除けば
+\fBepoll_create\fP()  と同じである。 \fIflags\fP に以下の値をビット毎の論理和 (OR) で指定することで、
+異なる動作をさせることができる。
+.TP 
+\fBEPOLL_CLOEXEC\fP
+新しいファイルディスクリプタに対して close\-on\-exec (\fBFD_CLOEXEC\fP)  フラグをセットする。
+このフラグが役に立つ理由については、 \fBopen\fP(2)  の \fBO_CLOEXEC\fP フラグの説明を参照のこと。
+.SH 返り値
+成功すると、これらのシステムコールは 非負のファイルディスクリプタを返す。 エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+\fIsize\fP が正でない。
+.TP 
+\fBEINVAL\fP
+(\fBepoll_create1\fP())  \fIflags\fP に無効な値が指定された。
+.TP 
+\fBEMFILE\fP
+\fI/proc/sys/fs/epoll/max_user_instances\fP によって指定されている、epoll
+インスタンスのユーザー単位の制限に達した。 更なる詳細については \fBepoll\fP(7)  を参照のこと。
+.TP 
+\fBENFILE\fP
+オープンされたファイルの総数がシステム制限に達した。
+.TP 
+\fBENOMEM\fP
+カーネルオブジェクトを作成するのに十分なメモリがなかった。
+.SH バージョン
+\fBepoll_create\fP() はカーネル 2.6 で追加された。
+ライブラリによるサポートは glibc バージョン 2.3.2 以降で提供されている。
+
+.\" To be precise: kernel 2.5.44.
+.\" The interface should be finalized by Linux kernel 2.5.66.
+\fBepoll_create1\fP() はカーネル 2.6.27 で追加された。
+ライブラリによるサポートは glibc バージョン 2.9 以降で提供されている。
+.SH 準拠
+\fBepoll_create\fP() は Linux 独自である。
+.SH 注意
+初期の \fBepoll_create\fP() の実装では、\fIsize\fP 引き数は、呼び出し元が \fBepoll\fP
+インスタンスに追加しようとするファイルディスクリプタ数をカーネルに教えるのに
+使われていた。カーネルはこの情報をイベントの情報を格納する内部データ構造に最
+初に割り当てる大きさを決める際のヒントとして使用していた (\fIsize\fP で渡された
+ヒントよりも使用量が大きくなった場合には、必要に応じてカーネルは追加で領域を
+割り当てる)。
+
+現在では、このヒントはもはや必要なくなっている (カーネルはヒントなしで必要な
+データ構造のサイズを動的に変更する) が、今も \fIsize\fP には 0 より大きい値を
+指定しなければならない。これは、\fBepoll\fP を使うアプリケーションが古いカーネル
+で実行される際の後方互換性を保証するためである。
+.SH 関連項目
+\fBclose\fP(2), \fBepoll_ctl\fP(2), \fBepoll_wait\fP(2), \fBepoll\fP(7)
diff --git a/draft/man2/epoll_wait.2 b/draft/man2/epoll_wait.2
new file mode 100644 (file)
index 0000000..51c2b6d
--- /dev/null
@@ -0,0 +1,131 @@
+.\"
+.\"  epoll by Davide Libenzi ( efficient event notification retrieval )
+.\"  Copyright (C) 2003  Davide Libenzi
+.\"
+.\"  This program is free software; you can redistribute it and/or modify
+.\"  it under the terms of the GNU General Public License as published by
+.\"  the Free Software Foundation; either version 2 of the License, or
+.\"  (at your option) any later version.
+.\"
+.\"  This program is distributed in the hope that it will be useful,
+.\"  but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\"  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\"  GNU General Public License for more details.
+.\"
+.\"  You should have received a copy of the GNU General Public License
+.\"  along with this program; if not, write to the Free Software
+.\"  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+.\"
+.\"  Davide Libenzi <davidel@xmailserver.org>
+.\"
+.\" 2007-04-30: mtk, Added description of epoll_pwait()
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH EPOLL_WAIT 2 2012\-04\-17 Linux "Linux Programmer's Manual"
+.SH 名前
+epoll_wait, epoll_pwait \- epoll ファイルディスクリプタの I/O イベントを待つ
+.SH 書式
+.nf
+\fB#include <sys/epoll.h>\fP
+.sp
+\fBint epoll_wait(int \fP\fIepfd\fP\fB, struct epoll_event *\fP\fIevents\fP\fB,\fP
+\fB               int \fP\fImaxevents\fP\fB, int \fP\fItimeout\fP\fB);\fP
+\fBint epoll_pwait(int \fP\fIepfd\fP\fB, struct epoll_event *\fP\fIevents\fP\fB,\fP
+\fB               int \fP\fImaxevents\fP\fB, int \fP\fItimeout\fP\fB,\fP
+\fB               const sigset_t *\fP\fIsigmask\fP\fB);\fP
+.fi
+.SH 説明
+\fBepoll_wait\fP() システムコールは、ファイルディスクリプタ \fIepfd\fP で参照される
+\fBepoll\fP(7) インスタンスに対するイベントを待つ。 \fIevents\fP が指すメモリ領域には、
+呼び出し側が利用可能なイベントが格納される。最大 \fImaxevents\fP 個のイベントが
+\fBepoll_wait\fP() によって返される。
+\fImaxevents\fP 引き数は 0 より大きくなければならない。
+
+最大で \fItimeout\fP ミリ秒間、呼び出したスレッドを停止させる。
+\fItimeout\fP を \-1 に指定すると、 \fBepoll_wait\fP() は無限に停止する。
+\fItimeout\fP を 0 に指定すると、 \fBepoll_wait\fP() は利用可能なイベントが
+なくても、すぐに返る。
+
+\fIstruct epoll_event\fP は以下のように定義される:
+.sp
+.in +4n
+.nf
+typedef union epoll_data {
+    void    *ptr;
+    int      fd;
+    uint32_t u32;
+    uint64_t u64;
+} epoll_data_t;
+
+struct epoll_event {
+    uint32_t     events;    /* epoll イベント */
+    epoll_data_t data;      /* ユーザデータ変数 */
+};
+.fi
+.in
+
+返される構造体の \fIdata\fP メンバには、ユーザが \fBepoll_ctl\fP(2)  (\fBEPOLL_CTL_ADD\fP,
+\fBEPOLL_CTL_MOD\fP)  で指定したデータが格納される。 一方、 \fIevents\fP
+メンバには返された利用可能なイベントのビットフィールドが格納される。
+.SS epoll_pwait()
+\fBepoll_wait\fP()  と \fBepoll_pwait\fP()  の関係は、 \fBselect\fP(2)  と \fBpselect\fP(2)
+の関係と同様である。 \fBpselect\fP(2)  同様、 \fBepoll_pwait\fP()
+を使うと、アプリケーションは、ファイルディスクリプタが準備できた状態になるか、 シグナルが捕捉されるまで、安全に待つことができる。
+
+以下の \fBepoll_pwait\fP()  の呼び出しは、
+.nf
+
+    ready = epoll_pwait(epfd, &events, maxevents, timeout, &sigmask);
+
+.fi
+次の呼び出しを \fIatomic\fP に実行するのと等価である。
+.nf
+
+    sigset_t origmask;
+
+    sigprocmask(SIG_SETMASK, &sigmask, &origmask);
+    ready = epoll_wait(epfd, &events, maxevents, timeout);
+    sigprocmask(SIG_SETMASK, &origmask, NULL);
+.fi
+.PP
+\fIsigmask\fP 引き数には NULL を指定してもよい。 その場合には、 \fBepoll_pwait\fP()  は \fBepoll_wait\fP()
+と等価となる。
+.SH 返り値
+成功した場合、 \fBepoll_wait\fP()  は要求された I/O に対して準備ができているファイルディスクリプタの数を返す。 また要求された
+\fItimeout\fP ミリ秒の間にファイルディスクリプタが準備できない場合は、0 を返す。 エラーが起こった場合、 \fBepoll_wait\fP()  は
+\-1 を返し、 \fIerrno\fP を適切に設定する。
+.SH エラー
+.TP 
+\fBEBADF\fP
+\fIepfd\fP が有効なファイルディスクリプタでない。
+.TP 
+\fBEFAULT\fP
+\fIevents\fP で指されるメモリ領域に書き込み権限でアクセスできない。
+.TP 
+\fBEINTR\fP
+要求されたどのイベントも発生せず、かつ \fItimeout\fP の期限が切れる前に、システムコールがシグナルハンドラによって割り込まれた。
+\fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
+\fIepfd\fP が \fBepoll\fP ファイルディスクリプタでない。 または \fImaxevents\fP が 0 以下である。
+.SH バージョン
+.\" To be precise: kernel 2.5.44.
+.\" The interface should be finalized by Linux kernel 2.5.66.
+\fBepoll_wait\fP() はカーネル 2.6 で追加された。
+ライブラリによるサポートは glibc バージョン 2.3.2 以降で提供されている。
+
+\fBepoll_pwait\fP() はカーネル 2.6.19 で Linux に追加された。
+ライブラリによるサポートは glibc バージョン 2.6 以降で提供されている。
+.SH 準拠
+\fBepoll_wait\fP() は Linux 独自である。
+.SH 注意
+あるスレッドが \fBepoll_pwait\fP() を呼び出して停止されている間に、
+別のスレッドが wait 中の \fBepoll\fP インストールにファイルディスクリプタを
+追加することがある。新しいファイルディスクリプタでイベントが発生すると、
+\fBepoll_wait\fP() の呼び出しによる停止が解除されることになる。
+.SH 関連項目
+\fBepoll_create\fP(2), \fBepoll_ctl\fP(2), \fBepoll\fP(7)
diff --git a/draft/man2/fstatat.2 b/draft/man2/fstatat.2
deleted file mode 100644 (file)
index 1852268..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-.\" Hey Emacs! This file is -*- nroff -*- source.
-.\"
-.\" This manpage is Copyright (C) 2006, Michael Kerrisk
-.\"
-.\" Permission is granted to make and distribute verbatim copies of this
-.\" manual provided the copyright notice and this permission notice are
-.\" preserved on all copies.
-.\"
-.\" Permission is granted to copy and distribute modified versions of this
-.\" manual under the conditions for verbatim copying, provided that the
-.\" entire resulting derived work is distributed under the terms of a
-.\" permission notice identical to this one.
-.\"
-.\" Since the Linux kernel and libraries are constantly changing, this
-.\" manual page may be incorrect or out-of-date.  The author(s) assume no
-.\" responsibility for errors or omissions, or for damages resulting from
-.\" the use of the information contained herein.  The author(s) may not
-.\" have taken the same level of care in the production of this manual,
-.\" which is licensed free of charge, as they might when working
-.\" professionally.
-.\"
-.\" Formatted or processed versions of this manual, if unaccompanied by
-.\" the source, must acknowledge the copyright and authors of this work.
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.TH FSTATAT 2 2011\-09\-19 Linux "Linux Programmer's Manual"
-.SH 名前
-fstatat \- ディレクトリファイルディスクリプタから相対的な位置にあるファイルの状態を取得する
-.SH 書式
-.nf
-\fB#include <fcntl.h> /* AT_* 定数の定義 */\fP
-\fB#include <sys/stat.h>\fP
-.sp
-\fBint fstatat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, struct stat *\fP\fIbuf\fP\fB,\fP
-\fB            int \fP\fIflags\fP\fB);\fP
-.fi
-.sp
-.in -4n
-glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
-.in
-.sp
-\fBfstatat\fP():
-.PD 0
-.ad l
-.RS 4
-.TP  4
-glibc 2.10 以降:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
-.TP 
-glibc 2.10 より前:
-_ATFILE_SOURCE
-.RE
-.ad
-.PD
-.SH 説明
-\fBfstatat\fP()  システムコールは、この man ページで説明している違いがある以外は、 \fBstat\fP(2)  と全く同じように動作する。
-
-\fIpathname\fP で指定されるパス名が相対パスである場合、 ファイルディスクリプタ \fIdirfd\fP
-で参照されるディレクトリからの相対パス名として解釈される (\fBstat\fP(2)
-では、相対パスは呼び出し元プロセスのカレントワーキングディレクトリからの 相対パスとなる)。
-
-\fIpathname\fP が相対パスであり、かつ \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP である場合、 \fIpathname\fP は
-(\fBstat\fP(2)  と同じように) 呼び出し元プロセスの カレントワーキングディレクトリからの相対パス名として解釈される。
-
-\fIpathname\fP が絶対パスである場合、 \fIdirfd\fP は無視される。
-
-\fIflags\fP には 0 または以下のフラグの 1 つ以上を論理和 (OR) で指定する。
-.TP 
-\fBAT_NO_AUTOMOUNT\fP (Linux 2.6.38 以降)
-Don't automount the terminal ("basename") component of \fIpathname\fP if it is
-a directory that is an automount point.  This allows the caller to gather
-attributes of an automount point (rather than the location it would mount).
-This flag can be used in tools that scan directories to prevent
-mass\-automounting of a directory of automount points.  The
-\fBAT_NO_AUTOMOUNT\fP flag has no effect if the mount point has already been
-mounted over.
-.TP 
-\fBAT_SYMLINK_NOFOLLOW\fP
-\fIpathname\fP がシンボリックリンクの場合は、それを辿るのではなく、 \fBlstat\fP(2)  と同様にリンク自身についての情報を返す
-(デフォルトでは、 \fBfstatat\fP()  は \fBstat\fP(2)  と同様にシンボリックリンクを辿る)。
-.SH 返り値
-成功した場合、 \fBfstatat\fP()  は 0 を返す。 エラーの場合、\-1 が返されて、 \fIerrno\fP にはエラーを示す値が設定される。
-.SH エラー
-\fBstat\fP(2)  と同じエラーが \fBfstatat\fP()  でも起こる。 \fBfstatat\fP()  では、その他に以下のエラーが起こる:
-.TP 
-\fBEBADF\fP
-\fIdirfd\fP が有効なファイルディスクリプタでない。
-.TP 
-\fBEINVAL\fP
-\fIflags\fP に不正なフラグ値が指定された。
-.TP 
-\fBENOTDIR\fP
-\fIpathname\fP が相対パスで、かつ \fIdirfd\fP がディレクトリ以外のファイルを参照するファイルディスクリプタである。
-.SH バージョン
-\fBfstatat\fP()  は Linux カーネル 2.6.16 で追加された。
-.SH 準拠
-POSIX.1\-2008.  Solaris には、これと同じようなシステムコールが存在する。
-.SH 注意
-\fBfstatat\fP()  が必要な理由については、 \fBopenat\fP(2)  を参照すること。
-
-glibc の \fBfstatat\fP() のラッパー関数が利用するシステムコールとしては、
-実際には \fBfstatat64\fP() が呼び出される。
-.SH 関連項目
-\fBopenat\fP(2), \fBstat\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7),
diff --git a/draft/man2/fsync.2 b/draft/man2/fsync.2
new file mode 100644 (file)
index 0000000..c611a55
--- /dev/null
@@ -0,0 +1,116 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) and
+.\" and Copyright 2006 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified 21 Aug 1994 by Michael Chastain <mec@shell.portal.com>:
+.\"   Removed note about old libc (pre-4.5.26) translating to 'sync'.
+.\" Modified 15 Apr 1995 by Michael Chastain <mec@shell.portal.com>:
+.\"   Added `see also' section.
+.\" Modified 13 Apr 1996 by Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
+.\"   Added remarks about fdatasync.
+.\" Modified 31 Jan 1997 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 18 Apr 2001 by Andi Kleen
+.\"   Fix description to describe what it really does; add a few caveats.
+.\" 2006-04-28, mtk, substantial rewrite of various parts.
+.\" 2012-02-27 Various changes by Christoph Hellwig <hch@lst.de>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH FSYNC 2 2012\-02\-27 Linux "Linux Programmer's Manual"
+.SH 名前
+fsync \- メモリ上にあるファイルの内容をストレージデバイス上のものと同期させる
+.SH 書式
+\fB#include <unistd.h>\fP
+.sp
+\fBint fsync(int \fP\fIfd\fP\fB);\fP
+.sp
+\fBint fdatasync(int \fP\fIfd\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBfsync\fP(): _BSD_SOURCE || _XOPEN_SOURCE
+.br
+.\" _POSIX_C_SOURCE\ >=\ 200112L only since glibc 2.8
+         || /* glibc 2.8 以降では: */ _POSIX_C_SOURCE\ >=\ 200112L
+.br
+\fBfdatasync\fP(): _POSIX_C_SOURCE\ >=\ 199309L || _XOPEN_SOURCE\ >=\ 500
+.SH 説明
+\fBfsync\fP() は、ファイル記述子 \fIfd\fP で参照されるファイルの、メモリ内で存在す
+る修正されたデータ (つまり修正されたバッファキャッシュページ) を、ディスクデ
+バイス(またはその他の永続ストレージデバイス) に転送 (「フラッシュ」) し、これ
+により、システムがクラッシュしたり、再起動された後も、変更された全ての情報が
+取り出せるようになる。「フラッシュ」には、ライトスルー (write through) や
+(存在する場合には) ディスクキャッシュのフラッシュも含まれる。この呼び出しは
+転送が終わったとデバイスが報告するまでブロックする。またファイルに結びついた
+メタデータ情報 (\fBstat\fP(2) 参照) もフラッシュする。
+
+
+\fBfsync\fP()  の呼び出しは、ファイルが存在しているディレクトリのエントリがディスクへ 書き込まれたことを保証するわけではない。
+保証するためには明示的にそのディレクトリのファイル記述子に対しても \fBfsync\fP()  する必要がある。
+
+\fBfdatasync\fP()  は \fBfsync\fP()  と同様であるが、メタデータの扱いが異なる。 \fBfdatasync\fP()
+は、それ以降のデータ読み込みを正しく扱うためにそのメタデータが必要に ならない限り、変更されたメタデータをフラッシュしない。 例えば、 st_atime
+や st_mtime (それぞれ最終アクセス時刻、最終修正時刻; \fBstat\fP(2)  参照) の変更はフラッシュを必要としない。
+なぜならこれらはそれ以降のデータ読み込みを正しく扱うために 必要ではないからである。 一方、ファイルサイズ (\fBftruncate\fP(2)  では
+\fIst_size\fP)  の変更はメタデータのフラッシュが必要である。
+
+\fBfdatasync\fP()  の狙いは、全てのメタデータをディスクと同期する必要のない アプリケーションに対して、ディスクアクセスを減らすことである。
+.SH 返り値
+成功した場合、これらのシステムコールはゼロを返す。 エラーの場合、\-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEBADF\fP
+\fIfd\fP が有効なオープンされたディスクリプタでない。
+.TP 
+\fBEIO\fP
+同期操作の間にエラーが発生した。
+.TP 
+\fBEROFS\fP, \fBEINVAL\fP
+\fIfd\fP が同期操作をサポートしてない特殊なファイルを参照している。
+.SH 準拠
+4.3BSD, POSIX.1\-2001.
+.SH 可用性
+.\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
+.\" -1: unavailable, 0: ask using sysconf().
+.\" glibc defines them to 1.
+\fBfdatasync\fP()  が利用可能な POSIX システムでは、 \fB_POSIX_SYNCHRONIZED_IO\fP が
+\fI<unistd.h>\fP で 0 より大きな値に定義される (\fBsysconf\fP(3)  参照)。
+.SH 注意
+(Linux はそうではないが) いくつかの UNIX システムでは
+\fIfd\fP が\fI書き込み可能な\fPファイルディスクリプタでなければならない。
+
+Linux 2.2 以前では、 \fBfdatasync\fP()  は \fBfsync\fP()  と等価であり、性能面でのメリットはない。
+
+古いカーネルやあまり使われていないファイルシステムの \fBfsync\fP() の実装では、
+ディスクキャッシュをフラッシュする方法が分からない場合がある。そのような場合
+には、安全に操作が行われることを保証するため、\fBhdparm\fP(8) や \fBsdparm\fP(8) を
+使ってディスクキャッシュを無効にする必要がある。
+.SH 関連項目
+\fBbdflush\fP(2), \fBopen\fP(2), \fBsync\fP(2), \fBsync_file_range\fP(2), \fBhdparm\fP(8),
+\fBmount\fP(8), \fBsync\fP(8), \fBupdate\fP(8)
diff --git a/draft/man2/getdents.2 b/draft/man2/getdents.2
new file mode 100644 (file)
index 0000000..38feb7c
--- /dev/null
@@ -0,0 +1,230 @@
+.\" Copyright (C) 1995 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Written 11 June 1995 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified 22 July 1995 by Michael Chastain <mec@duracef.shout.net>:
+.\"   Derived from 'readdir.2'.
+.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETDENTS 2 2010\-11\-21 Linux "Linux Programmer's Manual"
+.SH 名前
+getdents \- ディレクトリ・エントリを取得する
+.SH 書式
+.nf
+\fBint getdents(unsigned int \fP\fIfd\fP\fB, struct linux_dirent *\fP\fIdirp\fP\fB,\fP
+\fB             unsigned int \fP\fIcount\fP\fB);\fP
+.fi
+.SH 説明
+これはあなたの関心を引くような関数ではない。 POSIX 準拠の C ライブラリインターフェースについては \fBreaddir\fP(3)  を見ること。
+このページは、カーネルシステムコールの生のインターフェースについて 記載したものである。
+.PP
+\fBgetdents\fP()  システムコールは、オープン済みのファイルディスクリプタ \fIfd\fP で参照されるディレクトリから
+\fIlinux_dirent\fP 構造体をいくつか読み出し、 \fIdirp\fP が指しているバッファに格納する。 \fIcount\fP
+引き数はそのバッファのサイズを示す。
+.PP
+\fIlinux_dirent\fP 構造体は以下のように宣言されている:
+.PP
+.in +4n
+.nf
+struct linux_dirent {
+    unsigned long  d_ino;     /* Inode number */
+    unsigned long  d_off;     /* Offset to next \fIlinux_dirent\fP */
+    unsigned short d_reclen;  /* Length of this \fIlinux_dirent\fP */
+    char           d_name[];  /* Filename (null\-terminated) */
+                        /* length is actually (d_reclen \- 2 \-
+                           offsetof(struct linux_dirent, d_name) */
+    /*
+    char           pad;       // Zero padding byte
+    char           d_type;    // File type (only since Linux 2.6.4;
+                              // offset is (d_reclen \- 1))
+    */
+
+}
+.fi
+.in
+.PP
+\fId_ino\fP は inode 番号である。 \fId_off\fP はディレクトリの先頭から次の \fIlinux_dirent\fP の先頭までの距離である。
+\fId_reclen\fP はこの \fIlinux_dirent\fP 全体のサイズである。 \fId_name\fP
+はヌル(null)文字で終わるファイル名である。
+
+\fId_type\fP は、構造体の最後のバイトであり、ファイルタイプを示す。 \fId_type\fP は以下の値の一つを取る
+(\fI<dirent.h>\fP で定義されている)。
+.TP  12
+\fBDT_BLK\fP
+ブロックデバイスである。
+.TP 
+\fBDT_CHR\fP
+キャラクタデバイスである。
+.TP 
+\fBDT_DIR\fP
+ディレクトリである。
+.TP 
+\fBDT_FIFO\fP
+名前付きパイプ (FIFO) である。
+.TP 
+\fBDT_LNK\fP
+シンボリックリンクである。
+.TP 
+\fBDT_REG\fP
+通常のファイルである。
+.TP 
+\fBDT_SOCK\fP
+UNIX ドメインソケットである。
+.TP 
+\fBDT_UNKNOWN\fP
+ファイルタイプが不明である。
+.PP
+\fId_type\fP フィールドは Linux 2.6.4 から実装されている。 これは \fIlinux_dirent\fP
+構造体のうち、以前はゼロで埋められていた空間に配置されている。 従って、2.6.3 以前のカーネルでは、このフィールドにアクセスしようとすると 常に値
+0 (\fBDT_UNKNOWN\fP)  が返される。
+.PP
+.\" kernel 2.6.27
+.\" The same sentence is in readdir.2
+現在のところ、 \fId_type\fP でファイルタイプを返す機能が完全にサポートされているのは、 いくつかのファイルシステムにおいてのみである
+(Btrfs, ext2, ext3, ext4 はサポートしている)。 どのアプリケーションも、 \fBDT_UNKNOWN\fP
+が返された際に適切に処理できなければならない。
+.SH 返り値
+成功した場合は、読み込んだバイト数が返される。 ディレクトリの終わりならば 0 が返される。 エラーの場合は \-1 を返され、 \fIerrno\fP
+に適切な値が設定される。
+.SH エラー
+.TP 
+\fBEBADF\fP
+ファイルディスクリプタ \fIfd\fP が不正である。
+.TP 
+\fBEFAULT\fP
+引き数が呼び出したプロセスのアドレス空間外を指している。
+.TP 
+\fBEINVAL\fP
+結果用のバッファーが小さすぎる。
+.TP 
+\fBENOENT\fP
+そのようなディレクトリは存在しない。
+.TP 
+\fBENOTDIR\fP
+ファイルディスクリプタがディレクトリを参照していない。
+.SH 準拠
+.\" SVr4 documents additional ENOLINK, EIO error conditions.
+SVr4.
+.SH 注意
+glibc はこのシステムコールに対するラッパー関数を提供していないので、 \fBsyscall\fP(2)  を使って呼び出すこと。
+\fIlinux_dirent\fP 構造体は自分で定義する必要がある。
+
+このシステムコールは \fBreaddir\fP(2)  を置き換えるものである。
+
+元々の Linux の \fBgetdents\fP() システムコールは、大きなファイルシステムと
+大きなファイルオフセットを扱うことができなかった。
+その結果、Linux 2.4 で \fBgetdents64\fP() が追加された。
+\fBgetdents64\fP() では、\fIlinux_dirent\fP 構造体のフィールド \fId_ino\fP と
+\fId_off\fP でビット幅の大きなデータ型が使われている。
+.SH 例
+.\" FIXME: This program uses the older getdents(0 system call
+.\" and the structure with smaller field widths.
+下記のプログラムは \fBgetdents\fP()  の使用例を示したものである。 以下は、このプログラムを ext2 ディレクトリで実行した際に得られる
+出力の例である。
+
+.in +4n
+.nf
+$\fB ./a.out /testfs/\fP
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- nread=120 \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+i\-node#  file type  d_reclen  d_off   d_name
+       2  directory    16         12  .
+       2  directory    16         24  ..
+      11  directory    24         44  lost+found
+      12  regular      16         56  a
+  228929  directory    16         68  sub
+   16353  directory    16         80  sub2
+  130817  directory    16       4096  sub3
+.fi
+.in
+.SS プログラムのソース
+\&
+.nf
+#define _GNU_SOURCE
+#include <dirent.h>     /* Defines DT_* constants */
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <sys/syscall.h>
+
+#define handle_error(msg) \e
+        do { perror(msg); exit(EXIT_FAILURE); } while (0)
+
+struct linux_dirent {
+    long           d_ino;
+    off_t          d_off;
+    unsigned short d_reclen;
+    char           d_name[];
+};
+
+#define BUF_SIZE 1024
+
+int
+main(int argc, char *argv[])
+{
+    int fd, nread;
+    char buf[BUF_SIZE];
+    struct linux_dirent *d;
+    int bpos;
+    char d_type;
+
+    fd = open(argc > 1 ? argv[1] : ".", O_RDONLY | O_DIRECTORY);
+    if (fd == \-1)
+        handle_error("open");
+
+    for ( ; ; ) {
+        nread = syscall(SYS_getdents, fd, buf, BUF_SIZE);
+        if (nread == \-1)
+            handle_error("getdents");
+
+        if (nread == 0)
+            break;
+
+        printf("\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- nread=%d \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\en", nread);
+        printf("i\-node#  file type  d_reclen  d_off   d_name\en");
+        for (bpos = 0; bpos < nread;) {
+            d = (struct linux_dirent *) (buf + bpos);
+            printf("%8ld  ", d\->d_ino);
+            d_type = *(buf + bpos + d\->d_reclen \- 1);
+            printf("%\-10s ", (d_type == DT_REG) ?  "regular" :
+                             (d_type == DT_DIR) ?  "directory" :
+                             (d_type == DT_FIFO) ? "FIFO" :
+                             (d_type == DT_SOCK) ? "socket" :
+                             (d_type == DT_LNK) ?  "symlink" :
+                             (d_type == DT_BLK) ?  "block dev" :
+                             (d_type == DT_CHR) ?  "char dev" : "???");
+            printf("%4d %10lld  %s\en", d\->d_reclen,
+                    (long long) d\->d_off, (char *) d\->d_name);
+            bpos += d\->d_reclen;
+        }
+    }
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBreaddir\fP(2), \fBreaddir\fP(3)
diff --git a/draft/man2/getgid.2 b/draft/man2/getgid.2
new file mode 100644 (file)
index 0000000..a04a648
--- /dev/null
@@ -0,0 +1,57 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETGID 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+getgid, getegid \- グループ ID を得る
+.SH 書式
+\fB#include <unistd.h>\fP
+.br
+\fB#include <sys/types.h>\fP
+.sp
+\fBgid_t getgid(void);\fP
+.br
+\fBgid_t getegid(void);\fP
+.SH 説明
+\fBgetgid\fP()  は呼び出し元のプロセスの実グループ ID を返す。
+
+\fBgetegid\fP()  は呼び出し元のプロセスの実効グループ ID を返す。
+.SH エラー
+これらの関数は常に成功する。
+.SH 準拠
+POSIX.1\-2001, 4.3BSD.
+.SH 注意
+元々の Linux の \fBgetgid\fP() と \fBgetegid\fP() システムコールは
+16 ビットのグループ ID だけに対応していた。
+その後、Linux 2.4 で、32 ビットの ID に対応した
+\fBgetgid32\fP() と \fBgetegid32\fP() が追加された。
+glibc の \fBgetgid\fP() と \fBgetegid\fP() のラッパー関数は
+カーネルバージョンによるこの違いを吸収している。
+.SH 関連項目
+\fBgetresgid\fP(2), \fBsetgid\fP(2), \fBsetregid\fP(2), \fBcredentials\fP(7)
diff --git a/draft/man2/getgroups.2 b/draft/man2/getgroups.2
new file mode 100644 (file)
index 0000000..ff2b9b4
--- /dev/null
@@ -0,0 +1,116 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified Thu Oct 31 12:04:29 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\" 2008-05-03, mtk, expanded and rewrote parts of DESCRIPTION and RETURN
+.\"     VALUE, made style of page more consistent with man-pages style.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETGROUPS 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+getgroups, setgroups \- 補助グループ ID のリストを取得/設定する
+.SH 書式
+\fB#include <sys/types.h>\fP
+.br
+\fB#include <unistd.h>\fP
+.sp
+\fBint getgroups(int \fP\fIsize\fP\fB, gid_t \fP\fIlist\fP\fB[]);\fP
+.sp
+\fB#include <grp.h>\fP
+.sp
+\fBint setgroups(size_t \fP\fIsize\fP\fB, const gid_t *\fP\fIlist\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBsetgroups\fP(): _BSD_SOURCE
+.SH 説明
+.PP
+\fBgetgroups\fP()  は呼び出し元プロセスの補助グループ (supplementary group) ID を \fIlist\fP に返す。
+\fIsize\fP 引き数には、 \fIlist\fP により参照されるバッファに格納できる要素の最大数を設定すべきである。 呼び出し元プロセスが \fIsize\fP
+個より多くの補助グループのメンバの場合には、エラーとなる。 この関数を呼び出したプロセスの実効グループ ID が、
+返されるリストに含まれるかどうかは規定されていない (したがって、アプリケーションは \fBgetegid\fP(2)
+を呼び出し、その結果の値を追加・削除すべきである)。
+
+\fIsize\fP が 0 ならば、 \fIlist\fP は修正されないが、そのプロセスの補助グループ ID の合計数が返される。 これを使うことで、それ以降の
+\fBgetgroups\fP()  の呼び出しで必要となる動的割り当てバッファ \fIlist\fP のサイズを、呼び出し元が決定することができる。
+.PP
+\fBsetgroups\fP()  は、呼び出し元プロセスの補助グループ ID を設定する。 適切な特権 (Linux では \fBCAP_SETGID\fP
+ケーパビリティ (capability)) が必要である。 \fIsize\fP 引き数には、 \fIlist\fP
+により参照されるバッファに格納された補助グループ ID の数を指定する。
+.SH 返り値
+\fBgetgroups\fP()  は、成功すると補助グループ ID の数を返す。 エラーの場合 \-1 を返し、 \fIerrno\fP を適切に設定する。
+
+\fBsetgroups\fP()  は、成功すると 0 を返す。 エラーの場合 \-1 を返し、 \fIerrno\fP を適切に設定する。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+\fIlist\fP が不正なアドレスである。
+.PP
+\fBgetgroups\fP()  は、上記に加えて以下のエラーで失敗する可能性がある。
+.TP 
+\fBEINVAL\fP
+\fIsize\fP が補助グループ ID の数より小さいが 0 でない。
+.PP
+\fBsetgroups\fP()  は、上記に加えて以下のエラーで失敗する可能性がある。
+.TP 
+\fBEINVAL\fP
+\fIsize\fP が \fBNGROUPS_MAX\fP より大きい (\fBNGROUPS_MAX\fP は Linux 2.6.4 より前では 32、Linux
+2.6.4 以降では 65536)。
+.TP 
+\fBENOMEM\fP
+メモリ不足。
+.TP 
+\fBEPERM\fP
+呼び出し元プロセスが十分な特権を持っていない。
+.SH 準拠
+SVr4, 4.3BSD.  \fBgetgroups\fP()  関数は POSIX.1\-2001 に準拠している。 \fBsetgroups\fP()
+は特権を必要とするため、POSIX.1\-2001 に従っていない。
+.SH 注意
+プロセスは、実効グループ ID に加え、最大 \fBNGROUPS_MAX\fP までの補助グループ ID を持つことができる。 補助グループ ID
+の集合は親プロセスから継承され、 \fBexecve\fP(2)  の前後で保持される。
+
+補助グループ ID の最大数は \fBsysconf\fP(3)  を使って以下のようにして調べることができる:
+.nf
+
+    long ngroups_max;
+    ngroups_max = sysconf(_SC_NGROUPS_MAX);
+
+.fi
+\fBgetgroups\fP()  の返り値の最大値は、この値より 1 大きい値より大きくなることはない。
+
+元々の Linux の \fBgetgroups\fP() システムコールは 16 ビットのグループ ID だけ
+に対応していた。その後、Linux 2.4 で、32 ビットの ID に対応した
+\fBgetgroups\fP() が追加された。glibc の \fBgetgroups\fP のラッパー関数はカーネル
+バージョンによるこの違いを吸収している。
+.SH 関連項目
+\fBgetgid\fP(2), \fBsetgid\fP(2), \fBgetgrouplist\fP(3), \fBinitgroups\fP(3),
+\fBcapabilities\fP(7), \fBcredentials\fP(7)
diff --git a/draft/man2/getpagesize.2 b/draft/man2/getpagesize.2
new file mode 100644 (file)
index 0000000..3c02c39
--- /dev/null
@@ -0,0 +1,87 @@
+.\" Copyright (C) 2001 Andries Brouwer <aeb@cwi.nl>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETPAGESIZE 2 2010\-11\-16 Linux "Linux Programmer's Manual"
+.SH 名前
+getpagesize \- メモリのページ・サイズを取得する
+.SH 書式
+\fB#include <unistd.h>\fP
+.sp
+\fBint getpagesize(void);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBgetpagesize\fP():
+.ad l
+.RS 4
+.PD 0
+.TP  4
+glibc 2.12 以降:
+.nf
+_BSD_SOURCE ||
+    !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600)
+.TP  4
+.fi
+glibc 2.12 より前: _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+.PD
+.RE
+.ad b
+.SH 説明
+.\" .SH HISTORY
+.\" This call first appeared in 4.2BSD.
+\fBgetpagesize\fP() 関数はメモリページの大きさをバイト数で返す。
+ここでいう「ページ」は固定長のブロックであり、
+\fBmmap\fP(2) で実行されるメモリ割り当てとファイルマッピングの単位である。
+.SH 準拠
+SVr4, 4.4BSD, SUSv2.
+SUSv2 では \fBgetpagesize\fP() システムコールは「過去の遺物 (LEGACY)」とされており、
+POSIX.1\-2001 からは外されている。 HP\-UX にはこのシステムコールは存在しない。
+.SH 注意
+移植性が必要なアプリケーションでは、
+\fBgetpagesize\fP() ではなく \fIsysconf(_SC_PAGESIZE)\fP を利用すべきである。
+.PP
+.in +4n
+.nf
+#include <unistd.h>
+long sz = sysconf(_SC_PAGESIZE);
+.fi
+.in
+
+(ほとんどのシステムでは \fB_SC_PAGESIZE\fP の同義語として
+\fB_SC_PAGE_SIZE\fP を使用することができる。)
+
+\fBgetpagesize\fP()  が Linux のシステムコールとして存在するかどうかは、そのアーキテクチャに 依存している。
+システムコールとして存在する場合には、カーネルシンボルの \fBPAGE_SIZE\fP を返す。 \fBPAGE_SIZE\fP
+の値は、アーキテクチャとマシンモデルに依存する。 一般に、バイナリは、アーキテクチャごとに1つのバイナリ配布で済ませるために、
+アーキテクチャには依存しているがマシンモデルには依存していない。 つまり、ユーザプログラムはコンパイル時にヘッダーファイルから \fBPAGE_SIZE\fP
+を見つけて使用すべきではない。 少なくとも、マシンモデルについても依存性が存在する (sun4 のような)
+アーキテクチャにおいては本物のシステムコールを使用する必要がある。 尚、 libc4, libc5, glibc 2.0 では、
+\fBgetpagesize\fP()  がシステム・コールを使用せず、固定の値を返すために、この方法は 失敗する。glibc 2.1 では大丈夫である。
+.SH 関連項目
+\fBmmap\fP(2), \fBsysconf\fP(3)
index 7e0a0f1..9d4d4a2 100644 (file)
@@ -61,16 +61,16 @@ getpriority, setpriority \- プログラムのスケジューリングの優先
 \fBint setpriority(int \fP\fIwhich\fP\fB, int \fP\fIwho\fP\fB, int \fP\fIprio\fP\fB);\fP
 .SH 説明
 システムコール \fBgetpriority\fP()  や \fBsetpriority\fP()  は、 \fIwhich\fP と \fIwho\fP
\81§æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\83\97ã\83­ã\82»ã\82¹ã\80\81ã\83\97ã\83­ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\80\81ã\83¦ã\83¼ã\82¶ã\83¼ã\81® ã\82¹ã\82±ã\82¸ã\83¥ã\83¼ã\83ªã\83³ã\82°å\84ªå\85\88度 (scheduling priority) ã\81® å\8f\96å¾\97ã\82\84設å®\9aã\82\92ã\81\9dã\82\8cã\81\9eã\82\8cè¡\8cã\81\86ã\80\82
+で指定されたプロセス、プロセスグループ、ユーザーの スケジューリング優先度 (scheduling priority) の 取得や設定をそれぞれ行う。
 
 \fIwhich\fP の値は \fBPRIO_PROCESS\fP, \fBPRIO_PGRP\fP, \fBPRIO_USER\fP, のどれか一つで、 \fIwho\fP は
-\fIwhich\fP ã\81«å¿\9cã\81\98ã\81¦è§£é\87\88ã\81\95ã\82\8cã\82\8b (\fBPRIO_PROCESS\fP ã\81 ã\81¨ã\83\97ã\83­ã\82»ã\82¹è­\98å\88¥å­\90ã\80\81 \fBPRIO_PGRP\fP ã\81 ã\81¨ã\83\97ã\83­ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97è­\98å\88¥å­\90ã\80\81
+\fIwhich\fP に応じて解釈される (\fBPRIO_PROCESS\fP だとプロセス識別子、 \fBPRIO_PGRP\fP だとプロセスグループ識別子、
 \fBPRIO_USER\fP だと UID (ユーザID) と解釈される)。 \fIwho\fP がゼロならば、(それぞれ)呼び出したプロセス、
\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83­ã\82»ã\82¹ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\80\81 å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83­ã\82»ã\82¹ã\81®å®\9fUID ã\82\92æ\84\8få\91³ã\81\99ã\82\8bã\80\82 \fIprio\fP ã\81¯ \-20 ã\81\8bã\82\89 19 ã\81®ç¯\84å\9b²ã\81®å\80¤ã\81§
+呼び出したプロセスのプロセスグループ、 呼び出したプロセスの実UID を意味する。 \fIprio\fP は \-20 から 19 の範囲の値で
 (但し以下の注意の項を参照のこと)、 デフォルトの優先度は 0 である; 小さな数字ほど、有利なスケジューリングとなる。
 
 \fBgetpriority\fP()  コールは指定したプロセスの中の最も高い優先度 (数値的には最小の値) を返す。 \fBsetpriority\fP()
\82³ã\83¼ã\83«ã\81¯æ\8c\87å®\9aã\81\97ã\81\9fã\83\97ã\83­ã\82»ã\82¹å\85¨ã\81¦ã\81®å\84ªå\85\88度ã\82\92æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81«è¨­å®\9aã\81\99ã\82\8bã\80\82 å\84ªå\85\88度ã\82\92ä»\8aã\82\88ã\82\8aå°\8fã\81\95ã\81\84å\80¤ã\81«è¨­å®\9aã\81§ã\81\8dã\82\8bã\81®ã\81¯ã\82¹ã\83¼ã\83\91ã\83¼ã\83»ã\83¦ã\83¼ã\82¶ã\83¼ã\81 ã\81\91ã\81§ã\81\82ã\82\8bã\80\82
+コールは指定したプロセス全ての優先度を指定した値に設定する。 優先度を今より小さい値に設定できるのはスーパーユーザーだけである。
 .SH 返り値
 \fBgetpriority\fP()  は成功した場合にも \-1 の値を返す可能性があるので、 呼び出しの前に外部変数の \fIerrno\fP
 をクリアし、呼び出しの後に返り値の \-1 が正当な値か エラーかを判別する必要がある。 \fBsetpriority\fP()  コールはエラーがなければ 0
@@ -88,7 +88,7 @@ getpriority, setpriority \- プログラムのスケジューリングの優先
 \fBEACCES\fP
 呼び出し元がプロセスの優先度を下げようとしたが、必要な特権を 持っていなかった (Linux の場合、 \fBCAP_SYS_NICE\fP
 ケーパビリティがなかった)。 Linux 2.6.12 以降では、呼び出し元が、あるプロセスの優先度を、 変更対象のプロセスのリソース
-\fBRLIMIT_NICE\fP ã\81®ã\82½ã\83\95ã\83\88ã\83»ã\83ªã\83\9fã\83\83ã\83\88ã\81®ç¯\84å\9b²å¤\96ã\81«è¨­å®\9aã\81\97ã\82\88ã\81\86ã\81¨ã\81\97ã\81\9få ´å\90\88ã\81«ã\81®ã\81¿ã\80\81 ã\81\93ã\81®ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\99ã\82\8bã\80\82詳細ã\81¯ \fBgetrlimit\fP(2)
+\fBRLIMIT_NICE\fP のソフトリミットの範囲外に設定しようとした場合にのみ、 このエラーが発生する。詳細は \fBgetrlimit\fP(2)
 を参照。
 .TP 
 \fBEPERM\fP
@@ -104,7 +104,7 @@ SVr4, 4.4BSD (これらの関数は 4.2BSD で最初に登場した), POSIX.1\-2
 ではカーネルバージョンにより異なる。 Linux は、カーネル 2.6.23 以降で、nice 値の相対的な違いが、非常に強い影響を
 与えるアルゴリズムを採用した。このアルゴリズムでは、 他に優先度の高いものがシステムに存在する時には、 非常に低い nice 値 (+19)
 ではプロセスに本当にほとんど CPU が割り当てられない。 また、高い nice 値 (\-20) では CPU を必要とするアプリケーション (例えば
\82ªã\83¼ã\83\87ã\82£ã\82ªã\83»ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³) ã\81« CPU ã\81®ã\81»ã\81¨ã\82\93ã\81©ã\81\8cå\89²ã\82\8aå½\93ã\81¦ã\82\89ã\82\8cã\82\8bã\80\82
+オーディオアプリケーション) に CPU のほとんどが割り当てられる。
 
 \fBEPERM\fP が発生する条件の詳細はシステムに依存する。 上記の説明は POSIX.1\-2001 のものであり、全ての System V
 風システムは これに従っているようである。 2.6.12 より前の Linux カーネルでは、呼び出し元の実 UID または 実効 UID がプロセス
diff --git a/draft/man2/getresuid.2 b/draft/man2/getresuid.2
new file mode 100644 (file)
index 0000000..576673c
--- /dev/null
@@ -0,0 +1,68 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) 1997 Andries Brouwer (aeb@cwi.nl)
+.\" and Copyright (c) 2007, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified, 2003-05-26, Michael Kerrisk, <mtk.manpages@gmail.com>
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETRESUID 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+getresuid, getresgid \- 実、実効、保存、ユーザー ID / グループ ID を取得する
+.SH 書式
+\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */
+.br
+\fB#include <unistd.h>\fP
+.sp
+\fBint getresuid(uid_t *\fP\fIruid\fP\fB, uid_t *\fP\fIeuid\fP\fB, uid_t *\fP\fIsuid\fP\fB);\fP
+.br
+\fBint getresgid(gid_t *\fP\fIrgid\fP\fB, gid_t *\fP\fIegid\fP\fB, gid_t *\fP\fIsgid\fP\fB);\fP
+.SH 説明
+\fBgetresuid\fP()  は、呼び出したプロセスの実 (real) UID、実効 (effective) UID、 保存 (saved)
+set\-user\-ID (\fBgetresgid\fP の場合はグループ ID) を、 それぞれ引き数 \fIruid\fP, \fIeuid\fP, \fIsuid\fP
+に格納して返す。 \fBgetresgid\fP()  は、呼び出したプロセスのグループ ID について同様の処理を行う。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+指定した引き数のどれかが、呼び出したプログラムのアドレス空間の外の アドレスである。
+.SH バージョン
+これらのシステムコールはカーネル 2.1.44 から Linux に登場した。
+
+プロトタイプ宣言は 2.3.2 以降の glibc では \fB_GNU_SOURCE\fP を定義していると得られる。
+.SH 準拠
+これらのコールは非標準である。 HP\-UX や BSD 系のいくつかにも存在する。
+.SH 注意
+元々の Linux の \fBgetresuid\fP() と \fBgetresgid\fP() システムコールは
+16 ビットのグループ ID だけに対応していた。
+その後、Linux 2.4 で、32 ビットの ID に対応した
+\fBgetresuid32\fP() と \fBgetresgid32\fP() が追加された。
+glibc の \fBgetresuid\fP() と \fBgetresgid\fP() のラッパー関数は
+カーネルバージョンによるこの違いを吸収している。
+.SH 関連項目
+\fBgetuid\fP(2), \fBsetresuid\fP(2), \fBsetreuid\fP(2), \fBsetuid\fP(2),
+\fBcredentials\fP(7)
diff --git a/draft/man2/gettimeofday.2 b/draft/man2/gettimeofday.2
new file mode 100644 (file)
index 0000000..7f74171
--- /dev/null
@@ -0,0 +1,172 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified by Michael Haardt (michael@moria.de)
+.\" Modified 1993-07-23 by Rik Faith (faith@cs.unc.edu)
+.\" Modified 1994-08-21 by Michael Chastain (mec@shell.portal.com):
+.\"   Fixed necessary '#include' lines.
+.\" Modified 1995-04-15 by Michael Chastain (mec@shell.portal.com):
+.\"   Added reference to adjtimex.
+.\" Removed some nonsense lines pointed out by Urs Thuermann,
+.\"   (urs@isnogud.escape.de), aeb, 950722.
+.\" Modified 1997-01-14 by Austin Donnelly (and1000@debian.org):
+.\"   Added return values section, and bit on EFAULT
+.\" Added clarification on timezone, aeb, 971210.
+.\" Removed "#include <unistd.h>", aeb, 010316.
+.\" Modified, 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"   Added notes on capability requirement.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETTIMEOFDAY 2 2012\-04\-12 Linux "Linux Programmer's Manual"
+.SH 名前
+gettimeofday, settimeofday \- 時刻を取得/設定する
+.SH 書式
+.nf
+\fB#include <sys/time.h>\fP
+
+\fBint gettimeofday(struct timeval *\fP\fItv\fP\fB, struct timezone *\fP\fItz\fP\fB);\fP
+
+\fBint settimeofday(const struct timeval *\fP\fItv\fP\fB, const struct timezone *\fP\fItz\fP\fB);\fP
+
+.fi
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBsettimeofday\fP(): _BSD_SOURCE
+.SH 説明
+関数 \fBgettimeofday\fP()  と \fBsettimeofday\fP()  は時刻とタイムゾーンを取得または設定する。 \fItv\fP 引き数は
+\fIstruct timeval\fP である (\fI<sys/time.h>\fP で定義されている):
+.sp
+.in +4n
+.nf
+struct timeval {
+    time_t      tv_sec;     /* 秒 */
+    suseconds_t tv_usec;    /* マイクロ秒 */
+};
+.fi
+.in
+.sp
+これにより紀元 (the Epoch: \fBtime\fP(2)  を参照) からの秒とマイクロ秒が取得できる。 \fItz\fP 引き数は \fIstruct
+timezone\fP である:
+.sp
+.in +4n
+.nf
+struct timezone {
+    int tz_minuteswest;     /* グリニッジ標準時との差 (西方に分単位) */
+    int tz_dsttime;         /* 夏時間調整の型 */
+};
+.fi
+.in
+.PP
+.\" The following is covered under EPERM below:
+.\" .PP
+.\" Only the superuser may use
+.\" .BR settimeofday ().
+\fItv\fP や \fItz\fP が NULL の場合、対応する構造体の設定/取得は行われない
+(ただし、\fItv\fP が NULL の場合には、コンパイル時の警告が発生する)。
+.PP
+\fItimezone\fP 構造体の利用は廃止予定とされている;
+通常は \fItz\fP 引き数に NULL を指定すべきである (下記の「注意」を参照)。
+
+Linux では、 \fBsettimeofday\fP() システムコールに関連して、独特の「クロックのズレ
+(warp clock)」が存在する場合がある。 これは (ブート後の) 最初の呼び出しで
+\fItz\fP 引き数が NULL でなく、 \fItv\fP 引き数が NULL で \fItz_minuteswest\fP フィールド
+が 0 でない場合に起こる (この場合 \fItz_dsttime\fP フィールドは 0 にすべきである)。
+このような場合、 \fBsettimeofday\fP() は CMOS クロックが地方時 (local time) であり、
+UTC システム時間を得るためには、\fItz_minuteswest\fP の分だけ増加させなくてはなら
+ないとみなしてしまう。 疑いもなく、この機構を使うことは良い考えではない。
+.SH 返り値
+\fBgettimeofday\fP()  と \fBsettimeofday\fP()  は成功すると 0 を返し、失敗した場合は \-1 を返す (この場合は
+\fIerrno\fP が適切に設定される)。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+\fItv\fP か \fItz\fP のどちらかがアクセス可能なアドレス空間外を指している。
+.TP 
+\fBEINVAL\fP
+タイムゾーン (または他の何か) が不正である。
+.TP 
+\fBEPERM\fP
+呼び出し元プロセスに \fBsettimeofday\fP()  を呼び出すための十分な特権がない。 Linux では \fBCAP_SYS_TIME\fP
+ケーパビリティ (capability) が必要である。
+.SH 準拠
+SVr4, 4.3BSD に準拠する。 POSIX.1\-2001 は \fBgettimeofday\fP()  については記述しているが、
+\fBsettimeofday\fP()  については記述していない。 POSIX.1\-2008 では \fBgettimeofday\fP()
+は廃止予定とされており、 代わりに \fBclock_gettime\fP(2)  の使用が推奨されている。
+.SH 注意
+\fItimeval\fP 構造体を操作するためのマクロの説明は \fBtimeradd\fP(3)  にある。
+
+昔は \fIstruct timeval\fP のフィールドは \fIlong\fP 型であった。
+
+.\" it has not
+.\" been and will not be supported by libc or glibc.
+.\" Each and every occurrence of this field in the kernel source
+.\" (other than the declaration) is a bug.
+\fItz_dsttime\fP は Linux でこれまで使われたことはない。
+したがって、以下は純粋に歴史的な興味から書かれたものである。
+
+\fItz_dsttime\fP フィールドには (下記に示す) シンボル定数が格納される。
+これは一年のうちでいつ夏時間 (Daylight Savings Time) を実施するかを示している
+(注意: その値は年間を通した定数である: 夏時間が実施中であることを示すわけではなく、
+アルゴリズムを選択しているだけである)。 夏時間は以下のように定義される:
+.in +4n
+.nf
+
+\fBDST_NONE\fP     /* 夏時間を採用していない */
+.br
+\fBDST_USA\fP      /* アメリカ合衆国式夏時間 */
+.br
+\fBDST_AUST\fP     /* オーストラリア式夏時間 */
+.br
+\fBDST_WET\fP      /* 西ヨーロッパ式夏時間 */
+.br
+\fBDST_MET\fP      /* 中央ヨーロッパ式夏時間 */
+.br
+\fBDST_EET\fP      /* 東ヨーロッパ式夏時間 */
+.br
+\fBDST_CAN\fP      /* カナダ */
+.br
+\fBDST_GB\fP       /* グレートブリテンおよびアイルランド */
+.br
+\fBDST_RUM\fP      /* ルーマニア */
+.br
+\fBDST_TUR\fP      /* トルコ */
+.br
+\fBDST_AUSTALT\fP  /* 1986年に移行されたオーストラリア式 */
+.fi
+.in
+.PP
+当然のことながら、夏時間がどの期間に実施されるかを国ごとの簡単なアルゴリズムで
+導くことができないことが判明した。 実際、夏時間の期間は予測不可能な政治的決定で
+決定される。そのため、この方法でタイム・ゾーンを表すことは断念された。
+Linux において \fBsettimeofday\fP() を呼び出すときは、
+\fItz_dsttime\fP フィールドを 0 にするべきである。
+.SH 関連項目
+\fBdate\fP(1), \fBadjtimex\fP(2), \fBtime\fP(2), \fBctime\fP(3), \fBftime\fP(3),
+\fBtimeradd\fP(3), \fBcapabilities\fP(7), \fBtime\fP(7)
diff --git a/draft/man2/getuid.2 b/draft/man2/getuid.2
new file mode 100644 (file)
index 0000000..3216f1a
--- /dev/null
@@ -0,0 +1,62 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Historical remark, aeb, 2004-06-05
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETUID 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+getuid, geteuid \- ユーザー ID を得る
+.SH 書式
+\fB#include <unistd.h>\fP
+.br
+\fB#include <sys/types.h>\fP
+.sp
+\fBuid_t getuid(void);\fP
+.br
+\fBuid_t geteuid(void);\fP
+.SH 説明
+\fBgetuid\fP()  は呼び出し元のプロセスの実ユーザー ID を返す。
+
+\fBgeteuid\fP()  は呼び出し元のプロセスの実効ユーザー ID を返す。
+.SH エラー
+これらの関数は常に成功する。
+.SH 準拠
+POSIX.1\-2001, 4.3BSD.
+.SH 注意
+.SS 歴史
+UNIX V6 では \fBgetuid\fP()  コールは \fI(euid << 8) + uid\fP を返していた。 UNIX V7 では
+\fBgetuid\fP()  と \fBgeteuid\fP()  という別々のコールが導入された。
+.SH 注意
+元々の Linux の \fBgetuid\fP() と \fBgeteuid\fP() システムコールは
+16 ビットのグループ ID だけに対応していた。
+その後、Linux 2.4 で、32 ビットの ID に対応した
+\fBgetuid32\fP() と \fBgeteuid32\fP() が追加された。
+glibc の \fBgetuid\fP() と \fBgeteuid\fP() のラッパー関数は
+カーネルバージョンによるこの違いを吸収している。
+.SH 関連項目
+\fBgetresuid\fP(2), \fBsetreuid\fP(2), \fBsetuid\fP(2), \fBcredentials\fP(7)
index 552406e..01307fc 100644 (file)
@@ -177,4 +177,4 @@ glibc は、このページに記載された関数プロトタイプやマク
 .SH 関連項目
 \fBgetpriority\fP(2), \fBopen\fP(2), \fBcapabilities\fP(7)
 .sp
\82«ã\83¼ã\83\8dã\83«ã\83»ã\82½ã\83¼ã\82¹å\86\85ã\81® Documentation/block/ioprio.txt
+カーネルソース内の Documentation/block/ioprio.txt
index 655b018..6c242cc 100644 (file)
 .\"*******************************************************************
 .TH IPC 2 2007\-06\-28 Linux "Linux Programmer's Manual"
 .SH 名前
-ipc \- System V IPC ã\82·ã\82¹ã\83\86ã\83 ã\83»ã\82³ã\83¼ã\83«
+ipc \- System V IPC システムコール
 .SH 書式
 .nf
 \fBint ipc(unsigned int \fP\fIcall\fP\fB, int \fP\fIfirst\fP\fB, int \fP\fIsecond\fP\fB, int \fP\fIthird\fP\fB,\fP
 \fB        void *\fP\fIptr\fP\fB, long \fP\fIfifth\fP\fB);\fP
 .fi
 .SH 説明
-\fBipc\fP()  ã\81¯ ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\80\81ã\82»ã\83\9eã\83\95ã\82©ã\83¼ã\80\81å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\81«é\96¢ã\81\99ã\82\8b System V IPC ã\82³ã\83¼ã\83«ã\81® å\85±é\80\9aã\81®ã\82«ã\83¼ã\83\8dã\83«ã\81¸ã\81®ã\82¨ã\83³ã\83\88ã\83ªã\83»ã\83\9dã\82¤ã\83³ã\83\88ã\81§ã\81\82ã\82\8bã\80\82
+\fBipc\fP()  は メッセージ、セマフォー、共有メモリに関する System V IPC コールの 共通のカーネルへのエントリポイントである。
 \fIcall\fP はどの IPC 関数を呼び出すかを決め; 他の引き数は適切なコールへと渡される。
 .PP
\83¦ã\83¼ã\82¶ã\83¼ã\83»ã\83\97ã\83­ã\82°ã\83©ã\83 ã\81¯é\80\9a常ã\81®å\90\8då\89\8dã\81§é\81©å\88\87ã\81ªé\96¢æ\95°ã\82\92å\91¼ã\81³å\87ºã\81\99ã\81¹ã\81\8dã\81§ã\81\82ã\82\8bã\80\82 æ¨\99æº\96ã\83©ã\82¤ã\83\96ã\83©ã\83ªã\81®å®\9fè£\85è\80\85ã\82\84ã\82«ã\83¼ã\83\8dã\83«ã\83»ハッカーのみが \fBipc\fP()
\83¦ã\83¼ã\82¶ã\83¼ã\83\97ã\83­ã\82°ã\83©ã\83 ã\81¯é\80\9a常ã\81®å\90\8då\89\8dã\81§é\81©å\88\87ã\81ªé\96¢æ\95°ã\82\92å\91¼ã\81³å\87ºã\81\99ã\81¹ã\81\8dã\81§ã\81\82ã\82\8bã\80\82 æ¨\99æº\96ã\83©ã\82¤ã\83\96ã\83©ã\83ªã\81®å®\9fè£\85è\80\85ã\82\84ã\82«ã\83¼ã\83\8dã\83«ハッカーのみが \fBipc\fP()
 について知る必要がある。
 .SH 準拠
 \fBipc\fP()  は Linux 特有であり、 移植を意図したプログラムでは 使用してはいけない。
index 4b28425..11a4865 100644 (file)
@@ -41,7 +41,7 @@ link \- ファイルの新しい名前を作成する
 .sp
 \fBint link(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP
 .SH 説明
-\fBlink\fP()  ã\81¯å­\98å\9c¨ã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\81¸ã\81®æ\96°ã\81\97ã\81\84ã\83ªã\83³ã\82¯ (link)  (ã\83\8fã\83¼ã\83\89ã\83»ã\83ªã\83³ã\82¯ (hard link) ã\81¨ã\82\82ã\81\84ã\81\86) ã\82\92ä½\9cæ\88\90ã\81\99ã\82\8bã\80\82
+\fBlink\fP()  は存在するファイルへの新しいリンク (link)  (ハードリンク (hard link) ともいう) を作成する。
 
 \fInewpath\fP が存在する場合には上書きは\fIされない\fP。
 
@@ -65,7 +65,7 @@ link \- ファイルの新しい名前を作成する
 I/O エラーが発生した。
 .TP 
 \fBELOOP\fP
-\fIoldpath\fP ã\81¾ã\81\9fã\81¯ \fInewpath\fP ã\82\92解決ã\81\99ã\82\8bé\9a\9bã\81«é\81­é\81\87ã\81\97ã\81\9fã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81\8cå¤\9aé\81\8eã\81\8eã\82\8bã\80\82
+\fIoldpath\fP または \fInewpath\fP を解決する際に遭遇したシンボリックリンクが多過ぎる。
 .TP 
 \fBEMLINK\fP
 \fIoldpath\fP によって参照されるファイルは 既に最大数までのリンクを持っている。
@@ -74,13 +74,13 @@ I/O エラーが発生した。
 \fIoldpath\fP または \fInewpath\fP が長過ぎる。
 .TP 
 \fBENOENT\fP
-\fIoldpath\fP ã\81¾ã\81\9fã\81¯ \fInewpath\fP ã\81®ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªé\83¨å\88\86ã\81\8cå­\98å\9c¨ã\81\97ã\81ªã\81\84ã\81\8bã\80\81 å£\8aã\82\8cã\81\9f(dangling)ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81§ã\81\82ã\82\8bã\80\82
+\fIoldpath\fP または \fInewpath\fP のディレクトリ部分が存在しないか、 壊れた(dangling)シンボリックリンクである。
 .TP 
 \fBENOMEM\fP
 十分なカーネルメモリーがない。
 .TP 
 \fBENOSPC\fP
\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bã\83\87ã\83\90ã\82¤ã\82¹ã\81«æ\96°ã\81\97ã\81\84ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83»ã\82¨ã\83³ã\83\88ã\83ªã\82\92 ä½\9cæ\88\90ã\81\99ã\82\8bã\81\9fã\82\81ã\81®ç©ºã\81\8dã\81\8cã\81ªã\81\84ã\80\82
+そのファイルを含んでいるデバイスに新しいディレクトリエントリを 作成するための空きがない。
 .TP 
 \fBENOTDIR\fP
 \fIoldpath\fP または \fInewpath\fP のディレクトリ部分が、実際には、ディレクトリでない。
@@ -89,38 +89,37 @@ I/O エラーが発生した。
 \fIoldpath\fP がディレクトリである。
 .TP 
 \fBEPERM\fP
-\fIoldpath\fP ã\81¨ \fInewpath\fP ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81\8cã\83\8fã\83¼ã\83\89ã\83»リンクをサポートしていない。
+\fIoldpath\fP ã\81¨ \fInewpath\fP ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81\8cã\83\8fã\83¼ã\83\89リンクをサポートしていない。
 .TP 
 \fBEROFS\fP
\83\95ã\82¡ã\82¤ã\83«ã\81\8c読ã\81¿è¾¼ã\81¿å°\82ç\94¨ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81«å­\98å\9c¨ã\81\99ã\82\8bã\80\82
+ファイルが読み込み専用のファイルシステムに存在する。
 .TP 
 \fBEXDEV\fP
-\fIoldpath\fP ã\81¨ \fInewpath\fP ã\81\8cå\90\8cã\81\98ã\83\9eã\82¦ã\83³ã\83\88ã\81\95ã\82\8cã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81«å­\98å\9c¨ã\81\97ã\81ªã\81\84ã\80\82 (Linux ã\81¯ 1
\81¤ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\82\92è¤\87æ\95°ã\81®ã\83\9eã\82¦ã\83³ã\83\88ä½\8dç½®ã\81« ã\83\9eã\82¦ã\83³ã\83\88ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92許å\8f¯ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82 ã\81\97ã\81\8bã\81\97 \fBlink\fP()
-は、たとえ同じファイル・システムであっても、 別々のマウント位置を跨いでは動作しない。)
+\fIoldpath\fP と \fInewpath\fP が同じマウントされたファイルシステムに存在しない。 (Linux は 1
\81¤ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\82\92è¤\87æ\95°ã\81®ã\83\9eã\82¦ã\83³ã\83\88ä½\8dç½®ã\81« ã\83\9eã\82¦ã\83³ã\83\88ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92許å\8f¯ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82 ã\81\97ã\81\8bã\81\97 \fBlink\fP()  ã\81¯ã\80\81ã\81\9fã\81¨ã\81\88å\90\8cã\81\98ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81§ã\81\82ã\81£ã\81¦ã\82\82ã\80\81
+別々のマウント位置を跨いでは動作しない。)
 .SH 準拠
 .\" SVr4 documents additional ENOLINK and
 .\" EMULTIHOP error conditions; POSIX.1 does not document ELOOP.
 .\" X/OPEN does not document EFAULT, ENOMEM or EIO.
 SVr4, 4.3BSD, POSIX.1\-2001 (但し「注意」を参照)。
 .SH 注意
-\fBlink\fP()  でファイル・システムを超えてハード・リンクを作成することはできない。 このような場合は \fBsymlink\fP(2)
-を使用すること。
+\fBlink\fP()  でファイルシステムを超えてハードリンクを作成することはできない。 このような場合は \fBsymlink\fP(2)  を使用すること。
 
 .\" more precisely: since kernel 1.3.56
 .\" For example, the default Solaris compilation environment
 .\" behaves like Linux, and contributors to a March 2005
 .\" thread in the Austin mailing list reported that some
 .\" other (System V) implementations did/do the same -- MTK, Apr 05
-POSIX.1\-2001 ã\81§ã\81¯ã\80\81 \fIoldpath\fP ã\81\8cã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81§ã\81\82ã\82\8bå ´å\90\88ã\80\81 \fBlink\fP()  ã\81¯ \fIoldpath\fP
+POSIX.1\-2001 では、 \fIoldpath\fP がシンボリックリンクである場合、 \fBlink\fP()  は \fIoldpath\fP
 の参照を解決すべきであると記述されている。 しかし、カーネル 2.0 以降の Linux ではそのようになっていない。 \fIoldpath\fP
\81\8cã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81§ã\81\82ã\82\8bå ´å\90\88ã\80\81 \fInewpath\fP ã\81¯å\90\8cã\81\98ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»リンクファイルへの (ハード) リンクとして作成される (つまり
\81\8cã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83ªã\83³ã\82¯ã\81§ã\81\82ã\82\8bå ´å\90\88ã\80\81 \fInewpath\fP ã\81¯å\90\8cã\81\98ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯リンクファイルへの (ハード) リンクとして作成される (つまり
 \fInewpath\fP は \fIoldpath\fP が参照していた同じファイルへのシンボリックリンクになる)。 他のいくつかの実装でも Linux
 と同じように動作する。 POSIX.1\-2008 では \fBlink\fP()  の仕様が変更され、 \fIoldpath\fP
\81\8cã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81®å ´å\90\88ã\81«ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»リンクの参照を 解決するかどうかは実装依存となった。
\83ªã\83³ã\82¯ä½\9cæ\88\90æ\99\82ã\81®ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81®æ\89±ã\81\84ã\81«ã\81¤ã\81\84ã\81¦ã\81®è©³ç´°ã\81ªå\88¶å¾¡ã\81« é\96¢ã\81\97ã\81¦ã\81¯ \fBlinkat\fP(2)  ã\82\92å\8f\82ç\85§ã\81®ã\81\93ã\81¨ã\80\82
\81\8cã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83ªã\83³ã\82¯ã\81®å ´å\90\88ã\81«ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯リンクの参照を 解決するかどうかは実装依存となった。
+リンク作成時のシンボリックリンクの扱いについての詳細な制御に 関しては \fBlinkat\fP(2)  を参照のこと。
 .SH バグ
-NFS ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81§ã\81¯ã\80\81NFS ã\82µã\83¼ã\83\90ã\83¼ã\81\8cã\83ªã\83³ã\82¯ã\82\92ä½\9cæ\88\90ã\81\97ã\81\9få¾\8cã\81«ã\80\81 ã\81\9dã\82\8cã\82\92ä¼\9dã\81\88ã\82\8bå\89\8dã\81«æ­»ã\82\93ã\81 å ´å\90\88ã\81«ã\81¯è¿\94ã\82\8aå\80¤ã\81\8cä¸\8dæ­£ã\81ªå ´å\90\88ã\81\8cã\81\82ã\82\8bã\80\82
+NFS ファイルシステムでは、NFS サーバーがリンクを作成した後に、 それを伝える前に死んだ場合には返り値が不正な場合がある。
 リンクが作成できたかどうか見つけるためには \fBstat\fP(2)  を使用すること。
 .SH 関連項目
 \fBln\fP(1), \fBlinkat\fP(2), \fBopen\fP(2), \fBrename\fP(2), \fBstat\fP(2), \fBsymlink\fP(2),
index 8886fca..b14cb94 100644 (file)
@@ -41,7 +41,7 @@ _llseek \- ファイルの読み書きオフセットの位置を変える
 \fB            unsigned int \fP\fIwhence\fP\fB);\fP
 .fi
 .SH 説明
-\fB_llseek\fP()  é\96¢æ\95°ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ (descriptor)  \fIfd\fP
+\fB_llseek\fP()  é\96¢æ\95°ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ (descriptor)  \fIfd\fP
 に関連づけられたオープンされたファイルのオフセットの位置を、相対的に \fI(offset_high<<32) | offset_low\fP
 バイトだけ変更する。 基準となる位置を表す \fIwhence\fP には \fBSEEK_SET\fP, \fBSEEK_CUR\fP, \fBSEEK_END\fP
 のいずれかを指定し、それぞれ ファイルの先頭、ファイルの現在位置、 ファイルの最後を表す。 結果のファイル位置を \fIresult\fP 引き数に返す。
diff --git a/draft/man2/mount.2 b/draft/man2/mount.2
new file mode 100644 (file)
index 0000000..ac6fa0f
--- /dev/null
@@ -0,0 +1,278 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) 1993 Rickard E. Faith <faith@cs.unc.edu>
+.\" and Copyright (C) 1994 Andries E. Brouwer <aeb@cwi.nl>
+.\" and Copyright (C) 2002, 2005 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified 1996-11-04 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 2001-10-13 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Added note on historical behavior of MS_NOSUID
+.\" Modified 2002-05-16 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Extensive changes and additions
+.\" Modified 2002-05-27 by aeb
+.\" Modified 2002-06-11 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"    Enhanced descriptions of MS_MOVE, MS_BIND, and MS_REMOUNT
+.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" 2005-05-18, mtk, Added MNT_EXPIRE, plus a few other tidy-ups.
+.\" 2008-10-06, mtk: move umount*() material into separate umount.2 page.
+.\" 2008-10-06, mtk: Add discussion of namespaces.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MOUNT 2 2012\-01\-18 Linux "Linux Programmer's Manual"
+.SH 名前
+mount \- ファイルシステムをマウント/アンマウントする
+.SH 書式
+.nf
+\fB#include <sys/mount.h>\fP
+.sp
+\fBint mount(const char *\fP\fIsource\fP\fB, const char *\fP\fItarget\fP\fB,\fP
+\fB          const char *\fP\fIfilesystemtype\fP\fB, unsigned long \fP\fImountflags\fP\fB,\fP
+\fB          const void *\fP\fIdata\fP\fB);\fP
+.fi
+.SH 説明
+\fBmount\fP()  は \fIsource\fP で指定されたファイルシステム (デバイス名であることが多いが、 ディレクトリ名やダミーの場合もある) を
+\fItarget\fP で指定されたディレクトリに結びつける。
+
+ファイルシステムのマウントを行うには、 適切な権限 (Linux では \fBCAP_SYS_ADMIN\fP ケーパビリティ) が必要である。
+
+.\" Multiple mounts on same mount point: since 2.3.99pre7.
+Linux 2.4 以降、ひとつのファイルシステムを複数のマウントポイントに 結びつけることができ、同じマウントポイントに複数のマウントをスタック
+させることもできる。
+
+引き数 \fIfilesystemtype\fP としてカーネルが対応している値は、 \fI/proc/filesystems\fP で参照できる (例えば
+"minix", "ext2", "ext3", "jfs", "xfs", "reiserfs", "msdos", "proc", "nfs",
+"iso9660" 等)。 適切なモジュールが読み込まれると、さらに別の値が利用可能になるかもしれない。
+
+.\" FIXME 2.6.15 added flags for "shared subtree" functionality:
+.\" MS_UNBINDABLE, MS_PRIVATE, MS_SHARED, MS_SLAVE
+.\" These need to be documented on this page.
+.\" See:
+.\" Documentation/filesystems/sharedsubtree.txt
+.\"
+.\" http://lwn.net/Articles/159077/
+.\"
+.\" http://myweb.sudhaa.com:2022/~ram/sharedsubtree/paper/sharedsubtree.1.pdf
+.\" Shared-Subtree Concept, Implementation, and Applications in Linux
+.\" Al Viro viro@ftp.linux.org.uk
+.\" Ram Pai linuxram@us.ibm.com
+.\"
+.\" http://foss.in/2005/slides/sharedsubtree1.pdf
+.\" Shared Subtree Concept and Implementation in the Linux Kernel
+.\" Ram Pai
+.\"
+.\" 2.6.25 Added MS_I_VERSION, which needs to be documented.
+.\"
+引き数 \fImountflags\fP は、先頭 16 ビットはマジックナンバー 0xC0ED (\fBMS_MGC_VAL\fP) で、 残りの 16
+ビットがマウントフラグである。 マジックナンバーは、カーネルバージョン 2.4 より前では必須であったが、 現在は必要なく、指定されても無視される。
+マウントフラグは libc4 と libc5 では \fI<linux/fs.h>\fP 、 glibc2 では
+\fI<sys/mount.h>\fP で定義されており、以下の通りである:
+.TP 
+\fBMS_BIND\fP (Linux 2.4 以降)
+.\" since 2.4.0-test9
+.\" with the exception of the "hidden" MS_REC mountflags bit
+バインドマウントを行う。これはファイルやディレクトリの部分木を ファイルシス
+テム内部の別の場所で見えるようにするものである。 バインドマウントを使うと、
+ファイルシステムをまたいで \fBchroot\fP(2) jail を構成することが可能になる。
+引き数 \fIfilesystemtype\fP と \fIdata\fP は無視される。 Linux 2.6.26 より前では
+\fImountflags\fP も無視されていた (バインドマウントでは、マウントポイントとなる
+ファイルシステムと同じマウントオプションが使用される)。
+.TP 
+\fBMS_DIRSYNC\fP (Linux 2.5.19 以降)
+このファイルシステムへのディレクトリ変更を同期的に行う。 (この特性は個々のディレクトリ、または \fBchattr\fP(1)
+を使った部分木毎に設定できる。)
+.TP 
+\fBMS_MANDLOCK\fP
+.\" FIXME Say more about MS_MOVE
+このファイルシステムのファイルに対して強制ロックを認める。 (強制ロックを有効にするには、 \fBfcntl\fP(2)
+で述べられている方法でファイル単位で許可をしなければならない)
+.TP 
+\fBMS_MOVE\fP
+部分木を移動する。 \fIsource\fP にはすでに存在するマウントポイントを指定し、 \fItarget\fP には新しい場所を指定する。
+移動はアトミックである。 操作の実行中、部分ツリーがアンマウントされることはない。 \fIfilesystemtype\fP, \fImountflags\fP,
+\fIdata\fP 引き数は無視される。
+.TP 
+\fBMS_NOATIME\fP
+このファイルシステムの (全ての種類の) ファイルのアクセス時刻を更新しない。
+.TP 
+\fBMS_NODEV\fP
+このファイルシステムのデバイス (スペシャルファイル) へのアクセスを許可しない。
+.TP 
+\fBMS_NODIRATIME\fP
+このファイルシステムのディレクトリのアクセス時刻を更新しない。 このフラグは \fBMS_NOATIME\fP
+で提供される機能のサブセットを提供する。つまり、 \fBMS_NOATIME\fP では \fBMS_NODIRATIME\fP が暗黙のうち設定される。
+.TP 
+\fBMS_NOEXEC\fP
+.\" (Possibly useful for a file system that contains non-Linux executables.
+.\" Often used as a security feature, e.g., to make sure that restricted
+.\" users cannot execute files uploaded using ftp or so.)
+このファイルシステムにあるプログラムの実行を許可しない。
+.TP 
+\fBMS_NOSUID\fP
+.\" (This is a security feature to prevent users executing set-user-ID and
+.\" set-group-ID programs from removable disk devices.)
+このファイルシステムのプログラムを実行するときに、 set\-user\-ID ビットと set\-group\-ID ビットを無視する。
+.TP 
+\fBMS_RDONLY\fP
+.\"
+.\" FIXME Document MS_REC, available since 2.4.11.
+.\" This flag has meaning in conjunction with MS_BIND and
+.\" also with the shared subtree flags.
+ファイルシステムを読み込み専用でマウントする。
+.TP 
+\fBMS_RELATIME\fP (Linux 2.6.20 以降)
+.\" Matthew Garrett notes in the patch that added this behavior
+.\" that this lets utilities such as tmpreaper (which deletes
+.\" files based on last acces time) work correctly.
+このファイルシステム上のファイルがアクセスされた際、 そのファイルの最終アクセス時刻 (atime) の現在値が 最終修正時刻 (mtime)
+や最終状態変更時刻 (ctime) と 等しいか小さい場合にのみ、atime を更新する。 このオプションは、 \fBmutt\fP(1)
+のように、最後の内容修正以降にファイルがいつ読み出されたかを知る 必要があるプログラムで有用である。 Linux 2.6.30 以降では、
+\fBMS_NOATIME\fP が指定されていない場合には、このフラグの動作が カーネルのデフォルト動作となっており、 Linux 2.6.30
+より前の動作をさせるためには \fBMS_STRICTATIME\fP フラグを指定する必要がある。 これに加えて、Linux 2.6.30 以降では、
+ファイルの最終アクセス時刻が 1 日以上前の場合、 ファイルの最終アクセス時刻は常に更新される。
+.TP 
+\fBMS_REMOUNT\fP
+すでに存在するマウントを再マウントする。 これにより、すでに存在するマウントの \fImountflags\fP と \fIdata\fP
+を、一度アンマウントしてから再マウントするという作業をせずに 変更できる。 \fIsource\fP と \fItarget\fP は最初の \fBmount\fP()
+呼び出しと同じ値を指定する必要がある。 \fIfilesystemtype\fP は無視される。
+
+\fImountflags\fP のうち \fBMS_RDONLY\fP, \fBMS_SYNCHRONOUS\fP, \fBMS_MANDLOCK\fP は変更可能である。
+カーネル 2.6.16 より前では、 \fBMS_NOATIME\fP, \fBMS_NODIRATIME\fP も変更可能であった。 カーネル 2.4.10
+より前では、上記に加えて、 \fBMS_NOSUID\fP, \fBMS_NODEV\fP, \fBMS_NOEXEC\fP も変更可能であった。
+.TP 
+\fBMS_SILENT\fP (Linux 2.6.17 以降)
+カーネルのログ内のある種の (\fIprintk\fP())  警告メッセージの表示を抑制する。 このフラグは、名前が不適切で廃止された
+\fBMS_VERBOSE\fP フラグ (Linux 2.4.12 以降で利用可能) を置き換えるもので、同じ意味を持つ。
+.TP 
+\fBMS_STRICTATIME\fP (Linux 2.6.30 以降)
+このファイルシステムがアクセスされた際に最終アクセス時刻 (atime)  を常に更新する (Linux 2.6.30
+より前では、これがデフォルトの動作 であった)。 このフラグを指定することで、 \fBMS_NOATIME\fP と \fBMS_RELATIME\fP
+の両フラグを設定した際の影響を上書きすることができる。
+.TP 
+\fBMS_SYNCHRONOUS\fP
+ファイルシステムに対して同期的に書き込みを行う。 (このファイルシステムの全てのオープンされたファイルに対して、 \fBopen\fP(2)  のフラグに
+\fBO_SYNC\fP を指定したような動作となる)
+.PP
+Linux 2.4 以降では、 \fBMS_NODEV\fP, \fBMS_NOEXEC\fP, \fBMS_NOSUID\fP はマウントポイント単位で指定できる。
+カーネル 2.6.16 以降では、 \fBMS_NOATIME\fP と \fBMS_NODIRATIME\fP もマウントポイント単位で指定できる。 また、
+\fBMS_RELATIME\fP フラグもマウントポイント単位で設定できる。
+.PP
+引き数 \fIdata\fP がどのように解釈されるかは、ファイルシステムによって異なる。 たいていは、指定されたファイルシステムで利用可能なオプションが
+コンマ区切りで並べられた文字列である。 各ファイルシステムに対して指定可能なオプションの詳細については \fBmount\fP(8)  を参照のこと。
+.SH 返り値
+成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。
+.SH エラー
+以下に示すエラーは、ファイルシステムに依存しないものである。 それぞれのファイルシステムタイプには固有のエラーが存在する場合があり、
+独自の動作をすることもある。詳しくはカーネルのソースを見て欲しい。
+.TP 
+\fBEACCES\fP
+.\" mtk: Probably: write permission is required for MS_BIND, with
+.\" the error EPERM if not present; CAP_DAC_OVERRIDE is required.
+パスに含まれるディレクトリに検索 (実行) 許可がない (\fBpath_resolution\fP(7)  も参照)。 または、 \fBMS_RONLY\fP
+フラグを指定せずに読み込み専用のファイルシステムを マウントしようとした。 または、ブロックデバイス \fIsource\fP が \fBMS_NODEV\fP
+オプションでマウントされたファイルシステム上にある。
+.TP 
+\fBEBUSY\fP
+\fIsource\fP は既にマウントされている。 または、書き込み用にオープンされたファイルがあり、 読み込み専用で再マウントすることができない。
+または、 \fItarget\fP が使用中 (busy) のため、 \fItarget\fP にマウントできない。 \fItarget\fP
+が使用中の例としては、あるスレッドの動作ディレクトリ (working directory) であるとか、別のデバイスのマウントポイントであるとか、
+オープンされたファイルが存在する、などがある。
+.TP 
+\fBEFAULT\fP
+場所を示す引き数のひとつがユーザーのアドレス空間の外を指している。
+.TP 
+\fBEINVAL\fP
+\fIsource\fP に不正なスーパーブロックがある。 または、 \fIsource\fP が \fItarget\fP にマウントされていないのに、再マウント
+(\fBMS_REMOUNT\fP)  が要求された。 または、 \fIsource\fP がマウントポイントではないか、\(aq/\(aq なのに、移動
+(\fBMS_MOVE\fP)  が要求された。
+.TP 
+\fBELOOP\fP
+パス名の解決中に登場したリンクが多すぎた。 または、 \fItarget\fP が \fIsource\fP の子孫なのに移動が要求された。
+.TP 
+\fBEMFILE\fP
+(ブロックデバイスが必要でない場合)  ダミーデバイスのテーブルが一杯になった。
+.TP 
+\fBENAMETOOLONG\fP
+パス名の長さが \fBMAXPATHLEN\fP より長かった。
+.TP 
+\fBENODEV\fP
+\fIfilesystemtype\fP がカーネル中で定義 (config) されていない。
+.TP 
+\fBENOENT\fP
+パス名が空である。もしくは指定されたパスが存在しない。
+.TP 
+\fBENOMEM\fP
+カーネルがファイル名やデータをコピーするための空きページを確保できなかった。
+.TP 
+\fBENOTBLK\fP
+(ブロックデバイスが必要だが)  \fIsource\fP がブロックデバイスではない。
+.TP 
+\fBENOTDIR\fP
+\fItarget\fP か、 \fIsource\fP のプレフィックスがディレクトリではない。
+.TP 
+\fBENXIO\fP
+ブロックデバイス \fIsource\fP のメジャー番号が範囲外である。
+.TP 
+\fBEPERM\fP
+呼び出し元が必要な権限を持っていない。
+.SH バージョン
+.\" FIXME: Definitions of the so-far-undocumented MS_UNBINDABLE, MS_PRIVATE,
+.\"  MS_SHARED, and MS_SLAVE were (also) only added to glibc headers in 2.12.
+\fBMS_DIRSYNC\fP, \fBMS_MOVE\fP, \fBMS_REC\fP, \fBMS_RELATIME\fP, \fBMS_STRICTATIME\fP の定義が
+glibc のヘッダに追加されたのは バージョン 2.12 においてのみである。
+.SH 準拠
+この関数は Linux 固有の関数であり、移植を考慮したプログラムでは 使用すべきでない。
+.SH 注意
+元の \fBMS_SYNC\fP フラグは、別の \fBMS_SYNC\fP が \fI<mman.h>\fP に追加されたので 1.1.69 から
+\fBMS_SYNCHRONOUS\fP に名前が変わった。
+.LP
+.\" The change is in patch-2.4.0-prerelease.
+Linux 2.4 より前のバージョンでは、 \fBMS_NOSUID\fP オプション付きでマウントされたファイルシステム上の set\-UID や
+set\-GID のプログラムを実行しようとすると、 \fBEPERM\fP エラーとなった。 Linux 2.4 以降では、このような場合は set\-UID
+ビットや set\-GID ビットが 無視されるだけである。
+.SS プロセス単位の名前空間
+カーネル 2.4.19 以降の Linux では、プロセス単位のマウント名前空間 (mount namespace)
+が提供されている。マウント名前空間とは、 あるプロセスに見えているファイルシステムのマウントの集合である。
+マウントポイントの名前空間は複数のプロセスで共有することができ、 普通は共有されている。 一つのプロセスによる名前空間の変更
+(すなわち、マウントやアンマウント) は 同じ名前空間を共有する他の全てのプロセスにも見える。 (2.4.19 より前の Linux
+は、一つの名前空間がシステム上の全プロセスで 共有される状況とみなすことができる。)
+
+\fBfork\fP(2)  経由で作成された子プロセスは親プロセスのマウント名前空間を共有する。 \fBexecve\fP(2)
+の前後でマウント名前空間は保持される。
+
+プロセスは自分用 (private) のマウント名前空間を持つことができる。 自分用の名前空間を持つことができるのは、 そのプロセスが
+\fBclone\fP(2)  \fBCLONE_NEWNS\fP フラグを使って作成された場合と、 そのプロセスが \fBCLONE_NEWNS\fP フラグ付きで
+\fBunshare\fP(2)  を呼び出した場合である。 前者の場合、作成されたプロセスの新しい名前空間は \fBclone\fP(2)
+を呼び出したプロセスの名前空間の「コピー」で初期化される。 後者の場合、 \fBunshare\fP(2)
+を呼び出すと、呼び出し元のプロセスのマウント名前空間が、 それまでは他のプロセスと共有していた名前空間の自分用のコピーとなる。
+これにより、呼び出し元のプロセスがこれ以後に行うマウント/アンマウントは 他のプロセスから見えなくなる (ただし、呼び出し元のプロセスが
+\fBunshare\fP(2)  の呼び出し以降に作成した子プロセスには見える)。
+また、その逆の、他のプロセスが行ったマウント/アンマウントも呼び出し元のプロセスには 見えなくなる。
+
+Linux 独自のファイル \fI/proc/PID/mounts\fP では、指定された ID を持つプロセスのマウント名前空間における
+マウントポイントのリストが公開されている。詳細は \fBproc\fP(5)  を参照のこと。
+.SH 関連項目
+\fBumount\fP(2), \fBpath_resolution\fP(7), \fBmount\fP(8), \fBumount\fP(8)
diff --git a/draft/man2/nfsservctl.2 b/draft/man2/nfsservctl.2
new file mode 100644 (file)
index 0000000..556a600
--- /dev/null
@@ -0,0 +1,58 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" This text is in the public domain.
+.\"
+.\" FIXME The description of nfsservctl() on this page
+.\" is woefully thin.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH NFSSERVCTL 2 2012\-03\-05 Linux "Linux Programmer's Manual"
+.SH 名前
+nfsservctl \- カーネル nfs デーモンのためのインターフェース
+.SH 書式
+.nf
+\fB#include <linux/nfsd/syscall.h>\fP
+.sp
+\fBlong nfsservctl(int \fP\fIcmd\fP\fB, struct nfsctl_arg *\fP\fIargp\fP\fB,\fP
+\fB                union nfsctl_res *\fP\fIresp\fP\fB);\fP
+.fi
+.SH 説明
+\fI注意\fP: Linux 3.1 以降では、このシステムコールはもはや存在しない。
+
+.nf
+/*
+ * nfsctl() によって理解されるコマンド
+ */
+#define NFSCTL_SVC          0    /* サーバープロセス */
+#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */
+#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */
+#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */
+#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */
+#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新 */
+#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得 */
+
+struct nfsctl_arg {
+    int                       ca_version;     /* safeguard */
+    union {
+        struct nfsctl_svc     u_svc;
+        struct nfsctl_client  u_client;
+        struct nfsctl_export  u_export;
+        struct nfsctl_uidmap  u_umap;
+        struct nfsctl_fhparm  u_getfh;
+        unsigned int          u_debug;
+    } u;
+}
+
+union nfsctl_res {
+        struct knfs_fh          cr_getfh;
+        unsigned int            cr_debug;
+};
+.fi
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH 準拠
+このコールは Linux 特有である。
diff --git a/draft/man2/pipe.2 b/draft/man2/pipe.2
new file mode 100644 (file)
index 0000000..2dd6f75
--- /dev/null
@@ -0,0 +1,152 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) 2005, 2008, Michael Kerrisk <mtk.manpages@gmail.com>
+.\" (A few fragments remain from an earlier (1992) version by
+.\" Drew Eckhardt <drew@cs.colorado.edu>.)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified by Michael Haardt <michael@moria.de>
+.\" Modified 1993-07-23 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified 2005, mtk: added an example program
+.\" Modified 2008-01-09, mtk: rewrote DESCRIPTION; minor additions
+.\"     to EXAMPLE text.
+.\" 2008-10-10, mtk: add description of pipe2()
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PIPE 2 2012\-02\-14 Linux "Linux Programmer's Manual"
+.SH 名前
+pipe, pipe2 \- パイプを生成する
+.SH 書式
+.nf
+\fB#include <unistd.h>\fP
+.sp
+\fBint pipe(int \fP\fIpipefd\fP\fB[2]);\fP
+.sp
+\fB#define _GNU_SOURCE\fP             /* feature_test_macros(7) 参照 */
+\fB#include <fcntl.h>\fP              /* O_* 定数の定義の取得 */
+\fB#include <unistd.h>\fP
+.sp
+\fBint pipe2(int \fP\fIpipefd\fP\fB[2], int \fP\fIflags\fP\fB);\fP
+.fi
+.SH 説明
+\fBpipe\fP(2)  はパイプを生成する。 パイプは、プロセス間通信に使用できる単方向のデータチャネルである。 配列 \fIpipefd\fP
+は、パイプの両端を参照する二つのファイルディスクリプタを 返すのに使用される。 \fIpipefd[0]\fP がパイプの読み出し側、
+\fIpipefd[1]\fP がパイプの書き込み側である。 パイプの書き込み側に書き込まれたデータは、
+パイプの読み出し側から読み出されるまでカーネルでバッファリングされる。 さらなる詳細は \fBpipe\fP(7)  を参照のこと。
+
+\fBpipe2\fP()  は \fIflags\fP が 0 の場合には \fBpipe\fP()  と同じである。 \fIflags\fP に以下の値をビット毎の論理和
+(OR) で指定することで、 異なる動作をさせることができる。
+.TP  12
+\fBO_NONBLOCK\fP
+新しく生成される二つのオープンファイル記述 (open file description) の \fBO_NONBLOCK\fP
+ファイルステータスフラグをセットする。 このフラグを使うことで、 \fBO_NONBLOCK\fP をセットするために \fBfcntl\fP(2)
+を追加で呼び出す必要がなくなる。
+.TP 
+\fBO_CLOEXEC\fP
+新しく生成される二つのファイルディスクリプタの close\-on\-exec (\fBFD_CLOEXEC\fP)  フラグをセットする。
+このフラグが役に立つ理由については、 \fBopen\fP(2)  の \fBO_CLOEXEC\fP フラグの説明を参照のこと。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+\fIpipefd\fP が無効な値である。
+.TP 
+\fBEINVAL\fP
+(\fBpipe2\fP())  \fIflags\fP に無効な値が入っている。
+.TP 
+\fBEMFILE\fP
+このプロセスで使われているファイルディスクリプタが多すぎる。
+.TP 
+\fBENFILE\fP
+オープンされているファイルの総数がシステムの制限に達している。
+.SH バージョン
+\fBpipe2\fP()  はバージョン 2.6.27 で Linux に追加された。 glibc によるサポートはバージョン 2.9 以降で利用できる。
+.SH 準拠
+\fBpipe\fP(): POSIX.1\-2001.
+
+\fBpipe2\fP()  は Linux 固有である。
+.SH 例
+.\" fork.2 refers to this example program.
+以下のプログラムではパイプを生成し、その後 \fBfork\fP(2)  で子プロセスを生成する。
+子プロセスは同じパイプを参照するファイルディスクリプタ集合のコピーを 継承する。 \fBfork\fP(2)  の後、各プロセスはパイプ
+(\fBpipe\fP(7)  を参照) に必要がなくなったディスクリプタをクローズする。 親プロセスはプログラムのコマンドライン引き数に含まれる
+文字列をパイプへ書き込み、 子プロセスはこの文字列をパイプから 1 バイトずつ読み込んで標準出力にエコーする。
+.nf
+
+#include <sys/wait.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+    int pipefd[2];
+    pid_t cpid;
+    char buf;
+
+    if (argc != 2) {
+       fprintf(stderr, "Usage: %s <string>\en", argv[0]);
+       exit(EXIT_FAILURE);
+    }
+
+    if (pipe(pipefd) == \-1) {
+        perror("pipe");
+        exit(EXIT_FAILURE);
+    }
+
+    cpid = fork();
+    if (cpid == \-1) {
+        perror("fork");
+        exit(EXIT_FAILURE);
+    }
+
+    if (cpid == 0) {    /* 子プロセスがパイプから読み込む */
+        close(pipefd[1]);  /* 使用しない write 側はクローズする */
+
+        while (read(pipefd[0], &buf, 1) > 0)
+            write(STDOUT_FILENO, &buf, 1);
+
+        write(STDOUT_FILENO, "\en", 1);
+        close(pipefd[0]);
+        _exit(EXIT_SUCCESS);
+
+    } else {            /* 親プロセスは argv[1] をパイプへ書き込む */
+        close(pipefd[0]);          /* 使用しない read 側はクローズする */
+        write(pipefd[1], argv[1], strlen(argv[1]));
+        close(pipefd[1]);          /* 読み込み側が EOF に出会う */
+        wait(NULL);                /* 子プロセスを待つ */
+        exit(EXIT_SUCCESS);
+    }
+}
+.fi
+.SH 関連項目
+\fBfork\fP(2), \fBread\fP(2), \fBsocketpair\fP(2), \fBwrite\fP(2), \fBpopen\fP(3),
+\fBpipe\fP(7)
diff --git a/draft/man2/poll.2 b/draft/man2/poll.2
new file mode 100644 (file)
index 0000000..29aaee2
--- /dev/null
@@ -0,0 +1,218 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) 1997 Andries Brouwer (aeb@cwi.nl)
+.\" and Copyright (C) 2006, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Additions from Richard Gooch <rgooch@atnf.CSIRO.AU> and aeb, 971207
+.\" 2006-03-13, mtk, Added ppoll() + various other rewordings
+.\" 2006-07-01, mtk, Added POLLRDHUP + various other wording and
+.\"    formatting changes.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH POLL 2 2012\-04\-15 Linux "Linux Programmer's Manual"
+.SH 名前
+poll, ppoll \- ファイルディスクリプタにおけるイベントを待つ
+.SH 書式
+.nf
+\fB#include <poll.h>\fP
+.sp
+\fBint poll(struct pollfd *\fP\fIfds\fP\fB, nfds_t \fP\fInfds\fP\fB, int \fP\fItimeout\fP\fB);\fP
+.sp
+\fB#define _GNU_SOURCE\fP         /* feature_test_macros(7) 参照 */
+\fB#include <poll.h>\fP
+.sp
+\fBint ppoll(struct pollfd *\fP\fIfds\fP\fB, nfds_t \fP\fInfds\fP\fB, \fP
+\fB        const struct timespec *\fP\fItimeout_ts\fP\fB, const sigset_t *\fP\fIsigmask\fP\fB);\fP
+.fi
+.SH 説明
+\fBpoll\fP()  は \fBselect\fP(2)  と同様の仕事を行う、つまり、ファイルディスクリプタ集合のいずれか一つが I/O
+を実行可能な状態になるのを待つ。
+
+監視するファイルディスクリプタ集合は、 \fIfds\fP 引き数で指定する。 \fIfds\fP は、以下の型の構造体の配列である。
+.in +4n
+.nf
+
+struct pollfd {
+    int   fd;         /* file descriptor */
+    short events;     /* requested events */
+    short revents;    /* returned events */
+};
+.in
+.fi
+.PP
+\fInfds\fP には、 \fIfds\fP 配列の要素数を指定する。
+
+\fIfd\fP フィールドには、オープンされたファイルのファイルディスクリプタが入る。
+このフィールドが負の場合、対応する \fIevents\fP フィールドは無視され、
+\fIrevents\fP には 0 が返される。(この機能により、一つの \fBpoll\fP() の呼び出しで
+簡単にあるファイルディスクリプタを無視することができる。
+単に \fIfd\fP フィールドの符号を反転するだけでよい。)
+
+構造体の \fIevents\fP 要素は入力パラメータで、
+ファイルディスクリプタ \fIfd\fP に関して、
+アプリケーションが興味を持っているイベントのビットマスクを指定する。
+このフィールドに 0 が指定された場合は、\fIfd\fP の全てのイベントが無視され、
+\fIrevents\fP には 0 が返される。
+
+\fIrevents\fP 要素は出力パラメータで、実際に起こったイベントがカーネルにより設定される。 \fIrevents\fP で返されるビット列には、
+\fIevents\fP で指定したもののどれか、もしくは \fBPOLLERR\fP, \fBPOLLHUP\fP, \fBPOLLNVAL\fP のうちの一つが含まれる
+(\fBPOLLERR\fP, \fBPOLLHUP\fP, \fBPOLLNVAL\fP の 3つのビットは \fIevents\fP
+に指定しても意味がなく、対応した状態が真の場合に \fIrevents\fP に設定される)。
+
+どのファイルディスクリプタにも要求したイベントが発生しておらず、 エラーも起こらない場合、 \fBpoll\fP()
+はイベントのうちいずれか一つが発生するまで停止 (block) する。
+
+\fItimeout\fP 引き数は \fBpoll\fP()  が停止する時間の上限を設定するもので、ミリ秒単位で指定する。 \fItimeout\fP
+に負の値を指定すると、タイムアウト時間が無限となる。
+
+\fIevents\fP に指定したり、 \fIrevents\fP で返されるビットは \fI<poll.h>\fP で定義されている:
+.RS
+.TP 
+\fBPOLLIN\fP
+読み出し可能なデータがある。
+.TP 
+\fBPOLLPRI\fP
+読み出し可能な緊急データ (urgent data) がある (例えば、TCP ソケットの帯域外 (out\-of\-band data)
+データを受信した場合や、 パケットモードの擬似端末のマスタがスレーブ側の変化を見つけたとき)。
+.TP 
+\fBPOLLOUT\fP
+書き込みが停止 (block) しない状態である。
+.TP 
+\fBPOLLRDHUP\fP (Linux 2.6.17 以降)
+ストリームソケットの他端が、コネクションを close したか、 コネクションの書き込み側を shutdown した。 この定義を有効にするには、
+(「どの」ヘッダファイルをインクルードするよりも前に)  \fB_GNU_SOURCE\fP 機能検査マクロを定義しなければならない。
+.TP 
+\fBPOLLERR\fP
+エラー状態 (出力の場合のみ)。
+.TP 
+\fBPOLLHUP\fP
+ハングアップした (出力の場合のみ)。
+.TP 
+\fBPOLLNVAL\fP
+不正な要求: \fIfd\fP がオープンされていない (出力の場合のみ)。
+.RE
+.PP
+\fB_XOPEN_SOURCE\fP を定義してコンパイルした場合には、以下の定義も行われる。
+ただし、上記のリストにあるビット以上の情報が得られる訳ではない。
+.RS
+.TP 
+\fBPOLLRDNORM\fP
+\fBPOLLIN\fP と同じ。
+.TP 
+\fBPOLLRDBAND\fP
+.\" POLLRDBAND is used in the DECnet protocol.
+優先帯域データ (priority band data) が読み出し可能である (普通は Linux では使用されない)。
+.TP 
+\fBPOLLWRNORM\fP
+\fBPOLLOUT\fP と同じ。
+.TP 
+\fBPOLLWRBAND\fP
+優先帯域データ (priority data) が書き込み可能である。
+.RE
+.PP
+Linux では \fBPOLLMSG\fP も定義されているが、使用されていない。
+.SS ppoll()
+\fBpoll\fP()  と \fBppoll\fP()  の関係は \fBselect\fP(2)  と \fBpselect\fP(2)  の関係と同じようなものである:
+\fBpselect\fP(2)  と同様に、 \fBppoll\fP()  を使うと、アプリケーションはファイルディスクリプタの状態変化
+もしくはシグナルの捕捉を安全に待つことができる。
+.PP
+\fItimeout\fP 引き数の精度の違いを除くと、以下の \fBppoll\fP()  の呼び出しは、
+.nf
+
+    ready = ppoll(&fds, nfds, timeout_ts, &sigmask);
+
+.fi
+次の呼び出しを \fIatomic\fP に実行するのと等価である。
+.nf
+
+    sigset_t origmask;
+    int timeout;
+
+    timeout = (timeout_ts == NULL) ? \-1 :
+              (timeout_ts.tv_sec * 1000 + timeout_ts.tv_nsec / 1000000);
+    sigprocmask(SIG_SETMASK, &sigmask, &origmask);
+    ready = poll(&fds, nfds, timeout);
+    sigprocmask(SIG_SETMASK, &origmask, NULL);
+.fi
+.PP
+なぜ \fBppoll\fP()  が必要なのかについての説明は \fBpselect\fP(2)  の説明を参照のこと。
+
+\fIsigmask\fP 引き数に NULL が指定された場合、シグナルマスクの操作は行われない (したがって、 \fBppoll\fP()  の
+\fBpoll\fP()  との違いは \fItimeout\fP 引き数の精度だけとなる)。
+
+\fItimeout\fP 引き数は \fBppoll\fP()  が停止する時間の上限を指定するものである。
+この引き数には以下の型の構造体へのポインタを指定する。
+.in +4n
+.nf
+
+struct timespec {
+    long    tv_sec;         /* seconds */
+    long    tv_nsec;        /* nanoseconds */
+};
+.fi
+.in
+
+\fItimeout_ts\fP に NULL が指定された場合、 \fBppoll\fP は無限に停止することがあり得る。
+.SH 返り値
+成功した場合は正の数を返す。この数は 0 以外の \fIrevents\fP 要素を持つ構造体の数である (別の言い方をすると、これらのディスクリプタ
+にはイベントかエラー報告がある)。 値 0 は、タイムアウトとなり、どのファイルディスクリプタでもイベントが 発生しなかったことを示す。エラーの場合は
+\-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEFAULT\fP
+引き数として指定した配列が、呼び出したプロセスのアドレス空間に 含まれていない。
+.TP 
+\fBEINTR\fP
+要求されたイベントのどれかが起こる前にシグナルが発生した。 \fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
+\fInfds\fP の値が \fBRLIMIT_NOFILE\fP を超えた。
+.TP 
+\fBENOMEM\fP
+ファイルディスクリプタ・テーブルを確保するためのメモリがない。
+.SH バージョン
+\fBpoll\fP()  システムコールは Linux 2.1.23 で導入された。 \fBpoll\fP()  ライブラリ・コールは libc 5.4.28
+から導入された (これはカーネルが \fBpoll\fP()  システムコールをサポートしていない場合に \fBselect\fP(2)
+を使用してエミュレートを行う)。
+
+\fBppoll\fP()  システムコールは カーネル 2.6.16 で Linux に追加された。 \fBppoll\fP()  ライブラリコールは glibc
+2.4 に追加された。
+.SH 準拠
+.\" NetBSD 3.0 has a pollts() which is like Linux ppoll().
+\fBpoll\fP()  は POSIX.1\-2001 に準拠している。 \fBppoll\fP()  は Linux 固有である。
+.SH 注意
+いくつかの実装では、値 \-1 を持った非標準の定数 \fBINFTIM\fP が定義されており、 \fBpoll\fP()  の \fItimeout\fP
+の指定に使用できる。 この定数は glibc では定義されていない。
+.SS "Linux での注意"
+Linux の \fBppoll\fP()  システムコールは \fItimeout_ts\fP 引き数を変更する。 しかし、glibc
+のラッパー関数は、システムコールに渡す timeout 引き数 としてローカル変数を使うことでこの動作を隠蔽している。 このため、glibc の
+\fBppoll\fP()  関数では \fItimeout_ts\fP 引き数は変更されない。
+.SH バグ
+\fBselect\fP(2)  の「バグ」の節に書かれている、誤った準備完了通知 (spurious readiness notifications)
+についての議論を参照のこと。
+.SH 関連項目
+\fBselect\fP(2), \fBselect_tut\fP(2), \fBtime\fP(7)
diff --git a/draft/man2/pread.2 b/draft/man2/pread.2
new file mode 100644 (file)
index 0000000..69b1798
--- /dev/null
@@ -0,0 +1,81 @@
+.\" Copyright (C) 1999 Joseph Samuel Myers.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PREAD 2 2010\-11\-21 Linux "Linux Programmer's Manual"
+.SH 名前
+pread, pwrite \- 指定したオフセットでファイルディスクリプタを読み書きする
+.SH 書式
+\fB#include <unistd.h>\fP
+.sp
+\fBssize_t pread(int \fP\fIfd\fP\fB, void *\fP\fIbuf\fP\fB, size_t \fP\fIcount\fP\fB, off_t
+\fP\fIoffset\fP\fB);\fP
+.sp
+\fBssize_t pwrite(int \fP\fIfd\fP\fB, const void *\fP\fIbuf\fP\fB, size_t \fP\fIcount\fP\fB,
+off_t \fP\fIoffset\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.PD 0
+.ad l
+.sp
+\fBpread\fP(), \fBpwrite\fP():
+.RS 4
+_XOPEN_SOURCE\ >=\ 500
+.br
+|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L
+.RE
+.ad
+.PD
+.SH 説明
+\fBpread\fP()  は、ファイルディスクリプタ \fIfd\fP の (ファイルの先頭からの) オフセット \fIoffset\fP から最大 \fIcount\fP
+バイトをバッファ \fIbuf\fP へ読み込む。ファイル・オフセットは変化しない。
+.PP
+\fBpwrite\fP()  は、バッファ \fIbuf\fP から最大 \fIcount\fP バイトをファイルディスクリプタ \fIfd\fP のオフセット
+\fIoffset\fP に書き込む。ファイル・オフセットは変化しない。
+.PP
+\fIfd\fP で参照されるファイルはシーク (seek) 可能でなければならない。
+.SH 返り値
+成功した場合、読み書きを行ったバイト数が返される (ゼロは、 \fBpwrite\fP()  の場合には何も書かれなかったことを意味し、 \fBpread\fP()
+の場合にはファイル の末尾に達したことを意味する)。 エラーの場合は \-1 が返され、 \fIerrno\fP がそのエラーを示すように設定される。
+.SH エラー
+\fBpread\fP()  では、 \fBread\fP(2)  および \fBlseek\fP(2)  で規定された全てのエラーが発生する可能性があり、
+\fIerror\fP にはエラーを示す値が設定される。 \fBpwrite\fP()  では、 \fBwrite\fP(2)  および \fBlseek\fP(2)
+で規定された全てのエラーが発生する可能性があり、 \fIerror\fP にはエラーを示す値が設定される。
+.SH バージョン
+システムコール \fBpread\fP()  と \fBpwrite\fP()  は Linux にバージョン 2.1.60 で追加された。 i386
+のシステムコールのエントリは 2.1.69 で追加された。 (システムコールを持たない古いカーネルでの \fBlseek\fP(2)
+を使ったエミュレーションを含めると)  C ライブラリにおけるサポートは glibc 2.1 で追加された。
+.SH 準拠
+POSIX.1\-2001.
+.SH 注意
+Linux では、裏で呼び出されるシステムコールの名前がカーネル 2.6 で変更された。
+\fBpread\fP() は \fBpread64\fP() になり、 \fBpwrite\fP() は \fBpwrite64\fP() になった。
+システムコールの番号は変更されていない。
+glibc の \fBpread\fP() と \fBpwrite\fP() のラッパー関数はこれらの変更を吸収している。
+.SH 関連項目
+\fBlseek\fP(2), \fBread\fP(2), \fBreadv\fP(2), \fBwrite\fP(2)
index b699484..38b80a3 100644 (file)
@@ -39,7 +39,7 @@
 .\"*******************************************************************
 .TH READ 2 2009\-02\-23 Linux "Linux Programmer's Manual"
 .SH 名前
-read \- ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼から読み込む
+read \- ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿から読み込む
 .SH 書式
 .nf
 \fB#include <unistd.h>\fP
@@ -47,7 +47,7 @@ read \- ファイル・ディスクリプターから読み込む
 \fBssize_t read(int \fP\fIfd\fP\fB, void *\fP\fIbuf\fP\fB, size_t \fP\fIcount\fP\fB);\fP
 .fi
 .SH 説明
-\fBread\fP()  ã\81¯ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ (file descriptor)  \fIfd\fP から最大 \fIcount\fP バイトを \fIbuf\fP
+\fBread\fP()  ã\81¯ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ (file descriptor)  \fIfd\fP から最大 \fIcount\fP バイトを \fIbuf\fP
 で始まるバッファーへ読み込もうとする。
 .PP
 \fIcount\fP が 0 ならば、 \fBread\fP()  は 0 を返し、他に何も起きない。 \fIcount\fP が \fBSSIZE_MAX\fP
@@ -61,17 +61,17 @@ read \- ファイル・ディスクリプターから読み込む
 .SH エラー
 .TP 
 \fBEAGAIN\fP
\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ \fIfd\fP ã\81\8cã\82½ã\82±ã\83\83ã\83\88以å¤\96ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\81¦ã\80\81 é\9d\9eå\81\9cæ­¢ (nonblocking) ã\83¢ã\83¼ã\83\89
-(\fBO_NONBLOCK\fP)  に設定されており、読み込みを行うと停止する状況にある。
\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ \fIfd\fP ã\81\8cã\82½ã\82±ã\83\83ã\83\88以å¤\96ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\81¦ã\80\81 é\9d\9eå\81\9cæ­¢ (nonblocking) ã\83¢ã\83¼ã\83\89 (\fBO_NONBLOCK\fP)
+に設定されており、読み込みを行うと停止する状況にある。
 .TP 
 \fBEAGAIN\fP または \fBEWOULDBLOCK\fP
 .\" Actually EAGAIN on Linux
\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ \fIfd\fP がソケットを参照していて、非停止 (nonblocking) モード (\fBO_NONBLOCK\fP)
\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ \fIfd\fP がソケットを参照していて、非停止 (nonblocking) モード (\fBO_NONBLOCK\fP)
 に設定されており、読み込みを行うと停止する状況にある。 POSIX.1\-2001 は、この場合にどちらのエラーを返すことも認めており、 これら 2
 つの定数が同じ値を持つことも求めていない。 したがって、移植性が必要なアプリケーションでは、両方の可能性を 確認すべきである。
 .TP 
 \fBEBADF\fP
-\fIfd\fP ã\81\8cæ\9c\89å\8a¹ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼でないか、読み込みのために オープン (open) されていない。
+\fIfd\fP ã\81\8cæ\9c\89å\8a¹ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿でないか、読み込みのために オープン (open) されていない。
 .TP 
 \fBEFAULT\fP
 \fIbuf\fP がアクセス可能なアドレス空間の外にある。
@@ -88,8 +88,8 @@ read \- ファイル・ディスクリプターから読み込む
 さらなる情報は \fBtimerfd_create\fP(2)  を参照のこと。
 .TP 
 \fBEIO\fP
-I/O ã\82¨ã\83©ã\83¼ã\80\82ã\81\93ã\82\8cã\81¯ä¾\8bã\81\88ã\81°ã\83\97ã\83­ã\82»ã\82¹ã\81\8cã\83\90ã\83\83ã\82¯ã\82°ã\83©ã\83³ã\83\89ã\83»ã\83\97ã\83­ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81§ã\80\81 ã\81\9dã\82\8cã\82\92å\88¶å¾¡ã\81\97ã\81¦ã\81\84ã\82\8b tty ã\81\8bã\82\89読ã\81¿è¾¼ã\82\82ã\81\86ã\81¨ã\81\97ã\80\81 \fBSIGTTIN\fP
\81\8cç\84¡è¦\96 (ignore) ã\81¾ã\81\9fã\81¯ç¦\81æ­¢ (blocking) ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\82\84ã\80\81 ã\81\9dã\81®ã\83\97ã\83­ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81\8cå­¤ç«\8b (orphan) ã\81\97ã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81«èµ·ã\81\93ã\82\8bã\80\82
+I/O エラー。これは例えばプロセスがバックグランド・プロセスグループで、 それを制御している tty から読み込もうとし、 \fBSIGTTIN\fP
+が無視 (ignore) または禁止 (blocking) されている場合や、 そのプロセスグループが孤立 (orphan) している場合に起こる。
 またディスクやテープを読んでいる時に低レベル I/O エラー が発生した場合にも起こる。
 .TP 
 \fBEISDIR\fP
diff --git a/draft/man2/recvmmsg.2 b/draft/man2/recvmmsg.2
deleted file mode 100644 (file)
index 386008a..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-.\" Copyright (C) 2011 by Andi Kleen <andi@firstfloor.org>
-.\" and Copyright (c) 2011 by Michael Kerrisk <mtk.manpages@gmail.com>
-.\"
-.\" Permission is granted to make and distribute verbatim copies of this
-.\" manual provided the copyright notice and this permission notice are
-.\" preserved on all copies.
-.\"
-.\" Permission is granted to copy and distribute modified versions of this
-.\" manual under the conditions for verbatim copying, provided that the
-.\" entire resulting derived work is distributed under the terms of a
-.\" permission notice identical to this one.
-.\"
-.\" Since the Linux kernel and libraries are constantly changing, this
-.\" manual page may be incorrect or out-of-date.  The author(s) assume no
-.\" responsibility for errors or omissions, or for damages resulting from
-.\" the use of the information contained herein.  The author(s) may not
-.\" have taken the same level of care in the production of this manual,
-.\" which is licensed free of charge, as they might when working
-.\" professionally.
-.\"
-.\" Formatted or processed versions of this manual, if unaccompanied by
-.\" the source, must acknowledge the copyright and authors of this work.
-.\"
-.\" FIXME: This page could be improved with an example program.
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.TH RECVMMSG 2 2011\-10\-04 Linux "Linux Programmer's Manual"
-.SH 名前
-recvmmsg \- receive multiple messages on a socket
-.SH 書式
-.nf
-\fB#define _GNU_SOURCE\fP
-\fB#include <sys/socket.h>\fP
-
-\fBint recvmmsg(int \fP\fIsockfd\fP\fB, struct mmsghdr *\fP\fImsgvec\fP\fB, unsigned int \fP\fIvlen\fP\fB,\fP
-.br
-\fB             unsigned int \fP\fIflags\fP\fB, struct timespec *\fP\fItimeout\fP\fB);\fP
-.fi
-.SH 説明
-The \fBrecvmmsg\fP()  system call is an extension of \fBrecvmsg\fP(2)  that allows
-the caller to receive multiple messages from a socket using a single system
-call.  (This has performance benefits for some applications.)  A further
-extension over \fBrecvmsg\fP(2)  is support for a timeout on the receive
-operation.
-
-The \fIsockfd\fP argument is the file descriptor of the socket to receive data
-from.
-
-The \fImsgvec\fP argument is a pointer to an array of \fImmsghdr\fP structures.
-The size of this array is specified in \fIvlen\fP.
-
-The \fImmsghdr\fP structure is defined in \fI<sys/socket.h>\fP as:
-
-.in +4n
-.nf
-struct mmsghdr {
-    struct msghdr msg_hdr;  /* Message header */
-    unsigned int  msg_len;  /* Number of received bytes for header */
-};
-.fi
-.in
-.PP
-The \fImsg_hdr\fP field is a \fImsghdr\fP structure, as described in
-\fBrecvmsg\fP(2).  The \fImsg_len\fP field is the number of bytes returned for the
-message in the entry.  This field has the same value as the return value of
-a single \fBrecvmsg\fP(2)  on the header.
-
-The \fIflags\fP argument contains flags ORed together.  The flags are the same
-as documented for \fBrecvmsg\fP(2), with the following addition:
-.TP 
-\fBMSG_WAITFORONE\fP
-Turns on \fBMSG_DONTWAIT\fP after the first message has been received.
-.PP
-The \fItimeout\fP argument points to a \fIstruct timespec\fP (see
-\fBclock_gettime\fP(2))  defining a timeout (seconds plus nanoseconds) for the
-receive operation.  If \fItimeout\fP is \fINULL\fP then the operation blocks
-indefinitely.
-
-A blocking \fBrecvmmsg\fP()  call blocks until \fIvlen\fP messages have been
-received or until the timeout expires.  A nonblocking call reads as many
-messages as are available (up to the limit specified by \fIvlen\fP)  and
-returns immediately.
-
-On return from \fBrecvmmsg\fP(), successive elements of \fImsgvec\fP are updated
-to contain information about each received message: \fImsg_len\fP contains the
-size of the received message; the subfields of \fImsg_hdr\fP are updated as
-described in \fBrecvmsg\fP(2).  The return value of the call indicates the
-number of elements of \fImsgvec\fP that have been updated.
-.SH 返り値
-On success, \fBrecvmmsg\fP()  returns the number of messages received in
-\fImsgvec\fP; on error, \-1 is returned, and \fIerrno\fP is set to indicate the
-error.
-.SH エラー
-Errors are as for \fBrecvmsg\fP(2).  In addition, the following error can
-occur:
-.TP 
-\fBEINVAL\fP
-\fItimeout\fP is invalid.
-.SH バージョン
-The \fBrecvmmsg\fP()  system call was added in Linux 2.6.32.  Support in glibc
-was added in version 2.12.
-.SH 準拠
-\fBrecvmmsg\fP()  is Linux\-specific.
-.SH 関連項目
-\fBclock_gettime\fP(2), \fBrecvmsg\fP(2), \fBsendmmsg\fP(2), \fBsendmsg\fP(2),
-\fBsocket\fP(2), \fBsocket\fP(7)
index 32e4a7f..5a8a2d4 100644 (file)
@@ -61,8 +61,8 @@ rename \- ファイルの名前や位置を変更する
 一方で、上書きを行なう場合は、rename が行なわれるファイルを \fIoldpath\fP と \fInewpath\fP
 の両方で参照できる瞬間がおそらく存在する。
 
-\fIoldpath\fP ã\81\8cã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ (symbolic link) ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ã\80\81 ã\83ªã\83³ã\82¯ã\81®å\90\8då\89\8dã\81\8cå¤\89æ\9b´ã\81\95ã\82\8cã\82\8bã\80\82 ã\81¾ã\81\9fã\80\81
-\fInewpath\fP ã\81\8cã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ã\80\81ã\83ªã\83³ã\82¯ã\81\8cä¸\8aæ\9b¸ã\81\8dã\81\95ã\82\8cã\82\8bã\80\82
+\fIoldpath\fP がシンボリックリンク (symbolic link) を参照している場合は、 リンクの名前が変更される。 また、
+\fInewpath\fP がシンボリックリンクを参照している場合は、リンクが上書きされる。
 .SH 返り値
 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
 .SH エラー
@@ -74,8 +74,8 @@ rename \- ファイルの名前や位置を変更する
 .TP 
 \fBEBUSY\fP
 \fIoldpath\fP または \fInewpath\fP がディレクトリで、何らかのプロセスが使用中
-(å¤\9aå\88\86ã\80\81ã\82«ã\83¬ã\83³ã\83\88ã\83»ã\83¯ã\83¼ã\82­ã\83³ã\82°ã\83»ディレクトリか、ルートディレクトリか、 読み込みのためにオープンされているかでろう)  もしくは、システムが使用中
-(ä¾\8bã\81\88ã\81°ã\83\9eã\82¦ã\83³ã\83\88ã\83»ã\83\9dã\82¤ã\83³ã\83\88ã\81§ã\81\82ã\82\8b)  ã\81§ã\81\82ã\82\8aã\80\81ã\82·ã\82¹ã\83\86ã\83 ã\81\8cã\81\93ã\82\8cã\82\92ã\82¨ã\83©ã\83¼ã\81§ã\81\82ã\82\8bã\81¨å\88¤æ\96­ã\81\97ã\81\9fã\81\9fã\82\81ã\81« rename ã\81\8c失æ\95\97ã\81\97ã\81\9fã\80\82 (ã\81\93ã\81®ã\82\88ã\81\86ã\81ªå ´å\90\88ã\81«
+(å¤\9aå\88\86ã\80\81ã\82«ã\83¬ã\83³ã\83\88ã\83¯ã\83¼ã\82­ã\83³ã\82°ディレクトリか、ルートディレクトリか、 読み込みのためにオープンされているかでろう)  もしくは、システムが使用中
+(例えばマウントポイントである)  であり、システムがこれをエラーであると判断したために rename が失敗した。 (このような場合に
 \fBEBUSY\fP を返すことは規格では要求されていない点に注意すること。 このような場合に、rename をとにかく実行してみるのは何の問題もない。
 ただし、そのような状況で、システムが他に返すエラーがない場合には \fBEBUSY\fP を返すことが許されている。)
 .TP 
@@ -90,7 +90,7 @@ rename \- ファイルの名前や位置を変更する
 \fInewpath\fP は存在しているディレクトリであるが、 \fIoldpath\fP はディレクトリでない。
 .TP 
 \fBELOOP\fP
-\fIoldpath\fP ã\81¾ã\81\9fã\81¯ \fInewpath\fP ã\82\92解決ã\81\99ã\82\8bé\9a\9bã\81«é\81­é\81\87ã\81\97ã\81\9fã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81\8cå¤\9aé\81\8eã\81\8eã\82\8bã\80\82
+\fIoldpath\fP または \fInewpath\fP を解決する際に遭遇したシンボリックリンクが多過ぎる。
 .TP 
 \fBEMLINK\fP
 \fIoldpath\fP は既に最大数までのリンクを持っているか、それがディレクトリで \fInewpath\fP
@@ -107,7 +107,7 @@ rename \- ファイルの名前や位置を変更する
 十分なカーネルメモリーがない。
 .TP 
 \fBENOSPC\fP
\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bã\83\87ã\83\90ã\82¤ã\82¹ã\81«æ\96°ã\81\97ã\81\84ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83»ã\82¨ã\83³ã\83\88ã\83ªã\82\92 ä½\9cæ\88\90ã\81\99ã\82\8bã\81\9fã\82\81ã\81®ç©ºã\81\8dã\81\8cã\81ªã\81\84ã\80\82
+そのファイルを含んでいるデバイスに新しいディレクトリエントリを 作成するための空きがない。
 .TP 
 \fBENOTDIR\fP
 \fIoldpath\fP か \fInewpath\fP に含まれているディレクトリ部分が 実際にはディレクトリでない。 または \fIoldpath\fP
@@ -117,25 +117,25 @@ rename \- ファイルの名前や位置を変更する
 \fInewpath\fP が空でないディレクトリである。すなわち "." と ".." 以外を含んでいる。
 .TP 
 \fBEPERM\fP または \fBEACCES\fP
-\fIoldpath\fP ã\81®ã\81\82ã\82\8bã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81«ã\82¹ã\83\86ã\82£ã\83\83ã\82­ã\83¼ã\83»ã\83\93ã\83\83ã\83\88 (sticky bit)  (\fBS_ISVTX\fP)  ã\81\8c設å®\9aã\81\95ã\82\8cã\81¦ã\81\8aã\82\8aã\80\81
+\fIoldpath\fP のあるディレクトリにスティッキービット (sticky bit)  (\fBS_ISVTX\fP)  が設定されており、
 プロセスの実効ユーザー ID が 削除しようとするファイルのユーザー ID と そのファイルを含むディレクトリのユーザー ID
 のいずれとも一致せず、かつ プロセスに特権がない (Linux では \fBCAP_FOWNER\fP ケーパビリティ (capability) がない)。
 または、 \fInewpath\fP がすでに存在するファイルで、親ディレクトリにスティッキービットが設定されており、 プロセスの実効ユーザー ID が
 置き換えようとするファイルのユーザー ID と そのファイルを含むディレクトリのユーザー ID のいずれとも一致せず、かつ プロセスに特権がない
 (Linux では \fBCAP_FOWNER\fP ケーパビリティがない)。 または \fIoldpath\fP と \fInewpath\fP
\81\8cå­\98å\9c¨ã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81\8cã\80\81è¦\81æ±\82ã\81\95ã\82\8cã\81\9f種é¡\9eã\81®å\90\8då\89\8dã\81®å¤\89æ\9b´ã\82\92 ã\82µã\83\9dã\83¼ã\83\88ã\81\97ã\81¦ã\81\84ã\81ªã\81\84ã\80\82
+が存在するファイルシステムが、要求された種類の名前の変更を サポートしていない。
 .TP 
 \fBEROFS\fP
\83\95ã\82¡ã\82¤ã\83«ã\81\8c読ã\81¿è¾¼ã\81¿å°\82ç\94¨ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81«å­\98å\9c¨ã\81\99ã\82\8bã\80\82
+ファイルが読み込み専用のファイルシステムに存在する。
 .TP 
 \fBEXDEV\fP
-\fIoldpath\fP ã\81¨ \fInewpath\fP ã\81\8cå\90\8cã\81\98ã\83\9eã\82¦ã\83³ã\83\88ã\81\95ã\82\8cã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81«å­\98å\9c¨ã\81\97ã\81ªã\81\84ã\80\82 (Linux ã\81¯ 1
\81¤ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\82\92è¤\87æ\95°ã\81®ã\83\9eã\82¦ã\83³ã\83\88ä½\8dç½®ã\81« ã\83\9eã\82¦ã\83³ã\83\88ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92許å\8f¯ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82 ã\81\97ã\81\8bã\81\97 \fBrename\fP()
\81¯ã\80\81ã\81\9fã\81¨ã\81\88å\90\8cã\81\98ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81§ã\81\82ã\81£ã\81¦ã\82\82ã\80\81 å\88¥ã\80\85ã\81®ã\83\9eã\82¦ã\83³ã\83\88ä½\8dç½®ã\82\92è·¨ã\81\84ã\81§ã\81¯å\8b\95ä½\9cã\81\97ã\81ªã\81\84ã\80\82)
+\fIoldpath\fP と \fInewpath\fP が同じマウントされたファイルシステムに存在しない。 (Linux は 1
+つのファイルシステムを複数のマウント位置に マウントすることを許可している。 しかし \fBrename\fP()
+は、たとえ同じファイルシステムであっても、 別々のマウント位置を跨いでは動作しない。)
 .SH 準拠
 4.3BSD, C89, C99, POSIX.1\-2001.
 .SH バグ
-NFS ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81§ã\81¯ã\80\81æ\93\8dä½\9cã\81\8c失æ\95\97ã\81\97ã\81\9fã\81\8bã\82\89ã\81¨ã\81\84ã\81£ã\81¦ã\80\81 ã\83\95ã\82¡ã\82¤ã\83«ã\81®å\90\8då\89\8dã\81\8cå¤\89æ\9b´ã\81§ã\81\8dã\81ªã\81\8bã\81£ã\81\9fã\81¨æ±ºã\82\81ã\81¦ã\81\8bã\81\8bã\82\8bã\81\93ã\81¨ã\81¯ã\81§ã\81\8dã\81ªã\81\84ã\80\82 ã\82µã\83¼ã\83\90ã\81\8c rename
+NFS ファイルシステムでは、操作が失敗したからといって、 ファイルの名前が変更できなかったと決めてかかることはできない。 サーバが rename
 操作を終えてからクラッシュした場合、 サーバが再び立ち上がったときに、 再送信された RPC が処理されるが、これは失敗となる。
 アプリケーションはこの問題を正しく取り扱うことが期待されている。 同様の問題について \fBlink\fP(2)  にも書かれている。
 .SH 関連項目
index 1d83f18..d4bd182 100644 (file)
@@ -61,13 +61,13 @@ rmdir \- ディレクトリを削除する
 \fIpathname\fP の最後のディレクトリ部分が \fI.\fP である。
 .TP 
 \fBELOOP\fP
-\fIpathname\fP ã\82\92解決ã\81\99ã\82\8bé\9a\9bã\81«é\81­é\81\87ã\81\97ã\81\9fã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81\8cå¤\9aé\81\8eã\81\8eã\82\8bã\80\82
+\fIpathname\fP を解決する際に遭遇したシンボリックリンクが多過ぎる。
 .TP 
 \fBENAMETOOLONG\fP
 \fIpathname\fP が長過ぎる。
 .TP 
 \fBENOENT\fP
-\fIpathname\fP ã\81®ä¸­ã\81®ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªé\83¨å\88\86ã\81\8cå­\98å\9c¨ã\81\97ã\81ªã\81\84ã\81\8bã\80\81å£\8aã\82\8cã\81\9f (dangling)  ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ (symbolic link)
+\fIpathname\fP の中のディレクトリ部分が存在しないか、壊れた (dangling)  シンボリックリンク (symbolic link)
 である。
 .TP 
 \fBENOMEM\fP
@@ -81,15 +81,15 @@ rmdir \- ディレクトリを削除する
 \&\fI..\fP である。 POSIX.1\-2001 は、この状況で \fBEEXIST\fP を返すことを認めている。
 .TP 
 \fBEPERM\fP
-\fIpathname\fP ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81«ã\82¹ã\83\86ã\82£ã\83\83ã\82­ã\83¼ã\83»ã\83\93ã\83\83ã\83\88(sticky\-bit)  (\fBS_ISVTX\fP)
+\fIpathname\fP を含んでいるディレクトリにスティッキービット(sticky\-bit)  (\fBS_ISVTX\fP)
 が設定されていて、プロセスの実効ユーザーID が削除しようとするファイルの ユーザID とそのファイルを含むディレクトリのユーザーID
 のどちらとも異なり、 プロセスも権限 (Linux では \fBCAP_FOWNER\fP ケーパビリティ) がない。
 .TP 
 \fBEPERM\fP
-\fIpathname\fP ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81\8cã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81® å\89\8aé\99¤ã\82\92ã\82µã\83\9dã\83¼ã\83\88ã\81\97ã\81¦ã\81\84ã\81ªã\81\84ã\80\82
+\fIpathname\fP を含んでいるファイルシステムがディレクトリの 削除をサポートしていない。
 .TP 
 \fBEROFS\fP
-\fIpathname\fP ã\81\8c読ã\81¿è¾¼ã\81¿å°\82ç\94¨ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ä¸\8aã\81®ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82
+\fIpathname\fP が読み込み専用のファイルシステム上のディレクトリを参照している。
 .SH 準拠
 SVr4, 4.3BSD, POSIX.1\-2001.
 .SH バグ
diff --git a/draft/man2/sendfile.2 b/draft/man2/sendfile.2
new file mode 100644 (file)
index 0000000..53ea47a
--- /dev/null
@@ -0,0 +1,121 @@
+.\" This man page is Copyright (C) 1998 Pawel Krawczyk.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" $Id: sendfile.2,v 1.5 1999/05/18 11:54:11 freitag Exp $
+.\" 2000-11-19 bert hubert <ahu@ds9a.nl>: in_fd cannot be socket
+.\"
+.\" 2004-12-17, mtk
+.\"    updated description of in_fd and out_fd for 2.6
+.\"    Various wording and formatting changes
+.\"
+.\" 2005-03-31 Martin Pool <mbp@sourcefrog.net> mmap() improvements
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SENDFILE 2 2011\-09\-14 Linux "Linux Programmer's Manual"
+.SH 名前
+sendfile \- ファイル・ディスクリプタ間でデータを転送する
+.SH 書式
+\fB#include <sys/sendfile.h>\fP
+.sp
+.\" The below is too ugly. Comments about glibc versions belong
+.\" in the notes, not in the header.
+.\"
+.\" .B #include <features.h>
+.\" .br
+.\" .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
+.\" .br
+.\" .B #include <sys/sendfile.h>
+.\" .br
+.\" #else
+.\" .br
+.\" .B #include <sys/types.h>
+.\" .br
+.\" .B /* No system prototype before glibc 2.1. */
+.\" .br
+.\" .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" \
+.\"                       offset ", size_t" " count" )
+.\" .br
+.\" .B #endif
+.\"
+\fBssize_t sendfile(int\fP\fI out_fd\fP\fB, int\fP\fI in_fd\fP\fB, off_t *\fP\fIoffset\fP\fB,
+size_t\fP\fI count\fP\fB);\fP
+.SH 説明
+\fBsendfile\fP()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリプタへのデータのコピーを行う。
+このコピーはカーネル内で行われるので、 \fBsendfile\fP()  は、 \fBread\fP(2)  と \fBwrite\fP(2)
+を組み合わせるよりも効率がよい。 \fBread\fP(2)  や \fBwrite\fP(2)  ではユーザ空間との間でデータの転送が必要となるからである。
+
+\fIin_fd\fP は読み込みのためにオープンされたファイル・ディスクリプタ、 \fIout_fd\fP
+は書き込みのためにオープンされたディスクリプタでなければならない。
+
+\fIoffset\fP が NULL でない場合、 \fIoffset\fP は \fBsendfile\fP()  が \fIin_fd\fP
+のどこからデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタである。 \fBsendfile\fP()
+は復帰する時、この変数に最後に読み込んだバイトの 次のバイトのオフセットを書き込む。 \fIoffset\fP が NULL でない場合、
+\fBsendfile\fP()  は \fIin_fd\fP のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファイル・オフセットの現在値を
+\fIin_fd\fP から読み込んだバイト数を反映した位置に調整する。
+
+\fIoffset\fP が NULL の場合、データは \fIin_fd\fP の現在のファイル・オフセットから読み出され、
+ファイル・オフセットはこの呼び出しで更新される。
+
+\fIcount\fP は、ファイル・ディスクリプタ間でコピーするバイト数である。
+
+\fIin_fd\fP 引き数は \fBmmap\fP(2) 風の操作ができるファイルを指していなければならな
+い (ソケットを指定することはできない)。
+
+2.6.33 より前の Linux カーネルでは \fIout_fd\fP はソケットを参照していなければな
+らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。
+通常のファイルの場合には \fBsendfile\fP() はファイルオフセットを適切に変更する。
+.SH 返り値
+転送に成功した場合、 \fIout_fd\fP に書き込まれたバイト数を返す。エラーの場合、\-1 を返し、 \fIerrno\fP に適切な値を設定する。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+\fBO_NONBLOCK\fP を用いて非ブロック I/O が選択されたが、書き込みがブロックされた。
+.TP 
+\fBEBADF\fP
+入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込みのためにオープンされていない。
+.TP 
+\fBEFAULT\fP
+アドレスがおかしい。
+.TP 
+\fBEINVAL\fP
+ディスクリプタが有効でないか、ロックされている。もしくは \fBmmap\fP(2)  風の操作が \fIin_fd\fP では利用できない。
+.TP 
+\fBEIO\fP
+\fIin_fd\fP から読み込んでいるうちに予期しないエラーが起こった。
+.TP 
+\fBENOMEM\fP
+\fIin_fd\fP から読み込むための十分なメモリがない。
+.SH バージョン
+\fBsendfile\fP は Linux 2.2 の新しい機能である。 インクルードファイル \fI<sys/sendfile.h>\fP は
+glibc 2.1 から存在している。
+.SH 準拠
+POSIX.1\-2001 や他の標準では規定されていない。
+
+他の UNIX システムでは、異なった方式やプロトタイプで \fBsendfile\fP()
+を実装している。移植性を考慮したプログラムでは使用すべきではない。
+.SH 注意
+\fBsendfile\fP()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの内容の前にヘッダ・データを付け加える必要がある場合は、
+パケット数を最小にして性能を上げるために \fBtcp\fP(7)  に記述されている \fBTCP_CORK\fP オプションを使うといいだろう。
+
+Linux 2.4 とそれ以前のバージョンでも、 \fIout_fd\fP は通常のファイルを参照でき、
+\fBsendfile\fP() はそのファイルのオフセットの現在値を変更していた。
+
+元々の Linux \fBsendfile\fP() システムコールは大きなファイルオフセットを
+扱えるように設計されていなかった。その結果、Linux 2.4 で、
+ビット幅の大きな \fIoffset\fP 引き数を持った \fBsendfile64\fP() が追加された。
+glibc の \fBsendfile\fP() のラッパー関数はカーネルによるこの違いを吸収している。
+
+\fBsendfile\fP()  が \fBEINVAL\fP や \fBENOSYS\fP で失敗するような場合は、 アプリケーションは
+\fBread\fP(2)/\fBwrite\fP(2)  に戻すことを考えてもよいかもしれない。
+
+Linux 固有の \fBsplice\fP(2) システムコールは、任意のファイル間 (例えば、
+ソケット同士) でのデータ転送をサポートしている。
+.SH 関連項目
+\fBmmap\fP(2), \fBopen\fP(2), \fBsocket\fP(2), \fBsplice\fP(2)
+
diff --git a/draft/man2/setfsgid.2 b/draft/man2/setfsgid.2
new file mode 100644 (file)
index 0000000..f53e3d3
--- /dev/null
@@ -0,0 +1,78 @@
+.\" Copyright (C) 1995, Thomas K. Dyas <tdyas@eden.rutgers.edu>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Created   1995-08-06 Thomas K. Dyas <tdyas@eden.rutgers.edu>
+.\" Modified  2000-07-01 aeb
+.\" Modified  2002-07-23 aeb
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SETFSGID 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+setfsgid \- ファイルシステムのチェックに用いられるグループ ID を設定する
+.SH 書式
+\fB#include <unistd.h>\fP /* glibc では <sys/fsuid.h> */
+.sp
+\fBint setfsgid(uid_t \fP\fIfsgid\fP\fB);\fP
+.SH 説明
+システムコール \fBsetfsgid\fP()  は Linux カーネルがファイルシステムに対する 全てのアクセスのチェックに使用するグループ
+IDを設定する。通常は \fIfsgid\fP の値は実効 (effective) グループID と同じになる。実際、 実効グループ ID が変更される度に
+\fIfsgid\fP もまた新しい実効グループID の値に変更される。
+
+通常、 \fBsetfsuid\fP()  や \fBsetfsgid\fP()  が明示的に呼び出されるのは、Linux NFS サーバー のように、
+ファイルアクセスに用いるユーザID / グループID を変更しなければならないが、 対応する実(real)/実効(effective) ユーザID /
+グループID は変更したくないような プログラムに限られる。 NFS サーバーのようなプログラムで、通常のユーザID を変更すると、
+プロセスを望まないシグナルにさらす可能性があり、 セキュリティホールになる。(下記参照)
+
+\fBsetfsgid\fP()  は、スーパーユーザによって呼び出された場合か、 \fIfsgid\fP が実グループID、実効グループID、
+保存セットグループID (saved set\-group\-ID)、現在の \fIfsgid\fP の値のいずれかに一致する場合にのみ成功する。
+.SH 返り値
+成功した場合、 \fIfsgid\fP の以前の値を返す。エラーの場合は \fIfsgid\fP の現在の値を返す。
+.SH バージョン
+.\" This system call is present since Linux 1.1.44
+.\" and in libc since libc 4.7.6.
+このシステムコールはバージョン 1.2 以降の Linux に存在する。
+.SH 準拠
+\fBsetfsgid\fP()  は Linux 特有であり、移植を想定したプログラムで使用してはいけない。
+.SH 注意
+glibc が引き数がグループID として不正だと判断した場合は、 システムコールを行わず \fIerrno\fP に \fBEINVAL\fP を設定して \-1
+が返される。
+.LP
+このシステムコールが導入された当時、プロセスは 同じ実効ユーザIDのプロセスへシグナルを送ることができた。
+今日では、シグナル送信権限の扱いはかなり違うものになっている。
+
+元々の Linux の \fBsetfsgid\fP() システムコールは
+16 ビットのグループ ID だけに対応していた。
+その後、Linux 2.4 で、32 ビットの ID に対応した
+\fBsetfsgid32\fP() が追加された。
+glibc の \fBsetfsgid\fP() のラッパー関数は
+カーネルバージョンによるこの違いを吸収している。
+.SH バグ
+いかなる種類のエラーメッセージも返さない。 失敗した場合は (呼び出し元には \fBCAP_SETGID\fP ケーパビリティがなかったのだから) 最低でも
+\fBEPERM\fP くらいは返すべきである。
+.SH 関連項目
+\fBkill\fP(2), \fBsetfsuid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7)
diff --git a/draft/man2/setfsuid.2 b/draft/man2/setfsuid.2
new file mode 100644 (file)
index 0000000..dc57e24
--- /dev/null
@@ -0,0 +1,78 @@
+.\" Copyright (C) 1995, Thomas K. Dyas <tdyas@eden.rutgers.edu>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Created   1995-08-06 Thomas K. Dyas <tdyas@eden.rutgers.edu>
+.\" Modified  2000-07-01 aeb
+.\" Modified  2002-07-23 aeb
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SETFSUID 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+setfsuid \- ファイルシステムのチェックに用いられるユーザ ID を設定する
+.SH 書式
+\fB#include <unistd.h>\fP /* glibc では <sys/fsuid.h> */
+.sp
+\fBint setfsuid(uid_t \fP\fIfsuid\fP\fB);\fP
+.SH 説明
+\fBsetfsuid\fP()  は Linux カーネルがファイルシステムに対する 全てのアクセスのチェックに使用するユーザID を設定する。通常は
+\fIfsuid\fP の値は実効 (effective) ユーザID と同じになる。実際、 実効ユーザID が変更される度に \fIfsuid\fP
+もまた新しい実効ユーザID の値に変更される。
+
+通常、 \fBsetfsuid\fP()  や \fBsetfsgid\fP()  が明示的に呼び出されるのは、Linux NFS サーバー のように、
+ファイルアクセスに用いるユーザID / グループID を変更しなければならないが、 対応する実(real)/実効(effective) ユーザID /
+グループID は変更したくないような プログラムに限られる。 NFS サーバーのようなプログラムで、通常のユーザID を変更すると、
+プロセスを望まないシグナルにさらす可能性があり、 セキュリティホールになる。(下記参照)
+
+\fBsetfsuid\fP()  は、スーパーユーザによって呼び出された場合か、 \fIfsuid\fP が実ユーザID、実効ユーザID、 保存セットユーザID
+(saved set\-user\-ID)、現在の \fIfsuid\fP の値のいずれかに一致する場合にのみ成功する。
+.SH 返り値
+成功した場合、 \fIfsuid\fP の以前の値を返す。エラーの場合は \fIfsuid\fP の現在の値を返す。
+.SH バージョン
+.\" This system call is present since Linux 1.1.44
+.\" and in libc since libc 4.7.6.
+このシステムコールはバージョン 1.2 以降の Linux に存在する。
+.SH 準拠
+\fBsetfsuid\fP()  は Linux 特有であり、移植を想定したプログラムで使用してはいけない。
+.SH 注意
+glibc が引き数がユーザID として不正だと判断した場合は、 システムコールを行わず \fIerrno\fP に \fBEINVAL\fP を設定して \-1
+が返される。
+.LP
+このシステムコールが導入された当時、プロセスは 同じ実効ユーザIDのプロセスへシグナルを送ることができた。
+今日では、シグナル送信権限の扱いはかなり違うものになっている。
+
+元々の Linux の \fBsetfsuid\fP() システムコールは
+16 ビットのグループ ID だけに対応していた。
+その後、Linux 2.4 で、32 ビットの ID に対応した
+\fBsetfsuid32\fP() が追加された。
+glibc の \fBsetfsuid\fP() のラッパー関数は
+カーネルバージョンによるこの違いを吸収している。
+.SH バグ
+いかなる種類のエラーメッセージも呼び出し元に返さない。 失敗した場合は (呼び出し元には \fBCAP_SETUID\fP ケーパビリティがなかったのだから)
+最低でも \fBEPERM\fP くらいは返すべきである。
+.SH 関連項目
+\fBkill\fP(2), \fBsetfsgid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7)
diff --git a/draft/man2/setgid.2 b/draft/man2/setgid.2
new file mode 100644 (file)
index 0000000..2b3245b
--- /dev/null
@@ -0,0 +1,66 @@
+.\" Copyright (C), 1994, Graeme W. Wilford. (Wilf.)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Fri Jul 29th 12:56:44 BST 1994  Wilf. <G.Wilford@ee.surrey.ac.uk>
+.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 2002-03-09 by aeb
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SETGID 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+setgid \- グループ識別(identity)を設定する
+.SH 書式
+\fB#include <sys/types.h>\fP
+.br
+\fB#include <unistd.h>\fP
+.sp
+\fBint setgid(gid_t \fP\fIgid\fP\fB);\fP
+.SH 説明
+\fBsetgid\fP()  は呼び出し元のプロセスの実効 (effective) グループID を設定する。
+もしスーパーユーザーによって呼び出された場合は、 実 (real) グループID と保存 (saved) set\-group\-ID も設定される。
+
+Linux において、 \fBsetgid\fP()  は \fB_POSIX_SAVED_IDS\fP をもった POSIX 版のように実装されている。 これは
+set\-user\-ID\-root でない set\-group\-ID プログラムにそのグループの
+特権の全て落とし、特権の必要ない仕事をし、本来の実効グループID に 安全な方法で再び戻すことを許す。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEPERM\fP
+呼び出し元のプロセスに権限がなく (\fBCAP_SETGID\fP ケーパビリティがなく)、かつ \fIgid\fP が呼び出し元のプロセスの実グループID
+と保存セットグループID のどちらとも一致しない。
+.SH 注意
+元々の Linux の \fBsetgid\fP() システムコールは
+16 ビットのグループ ID だけに対応していた。
+その後、Linux 2.4 で、32 ビットの ID に対応した
+\fBsetgid32\fP() が追加された。
+glibc の \fBsetgid\fP() のラッパー関数は
+カーネルバージョンによるこの違いを吸収している。
+.SH 準拠
+SVr4, POSIX.1\-2001.
+.SH 関連項目
+\fBgetgid\fP(2), \fBsetegid\fP(2), \fBsetregid\fP(2), \fBcapabilities\fP(7),
+\fBcredentials\fP(7)
diff --git a/draft/man2/setresuid.2 b/draft/man2/setresuid.2
new file mode 100644 (file)
index 0000000..de7e41f
--- /dev/null
@@ -0,0 +1,85 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) 1997 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified, 2003-05-26, Michael Kerrisk, <mtk.manpages@gmail.com>
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SETRESUID 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+setresuid, setresgid \- ユーザやグループの 実、実効、保存 ID を設定する
+.SH 書式
+\fB#define _GNU_SOURCE\fP /* feature_test_macros(7) 参照 */
+.br
+\fB#include <unistd.h>\fP
+.sp
+\fBint setresuid(uid_t \fP\fIruid\fP\fB, uid_t \fP\fIeuid\fP\fB, uid_t \fP\fIsuid\fP\fB);\fP
+.br
+\fBint setresgid(gid_t \fP\fIrgid\fP\fB, gid_t \fP\fIegid\fP\fB, gid_t \fP\fIsgid\fP\fB);\fP
+.SH 説明
+\fBsetresuid\fP()  は呼び出し元のプロセスの実 (real) ユーザーID、実効 (effective) ユーザーID、 保存
+set\-user\-ID を設定する。
+
+非特権ユーザーのプロセスは、その実 UID、実効 UID、保存 set\-user\-ID を、 現在の実 UID、現在の実効 UID、現在の保存
+set\-user\-ID のどれかに変更することができる:
+
+特権プロセス (Linux では \fBCAP_SETUID\fP ケーパビリティ (capability) を持つ プロセス) は、実 UID、実効
+UID、保存 set\-user\-ID を任意の値に設定できる。
+
+引き数のどれかが \-1 の場合はその値は変更されずに残される。
+
+実 UID、実効 UID、保存 set\-user\-ID にどんな変更が行われたかに関わらず、 ファイルシステム UID は常に実効 UID
+(可能であれば変更後の新しい実効 UID)  と同じ値に設定される。
+
+全く同じように、 \fBsetresgid\fP()  は呼び出し元のプロセスの実 GID、実効 GID、保存 set\-group\-ID を設定する
+(さらにファイルシステム GID を実効 GID と同じ値に修正する)。 非特権プロセスは同様の制限を受ける。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+\fIuid\fP が現在のユーザー ID と違う値で、 この呼び出しにより ユーザー ID が リソース上限 \fBRLIMIT_NPROC\fP
+を超えてしまう。
+.TP 
+\fBEPERM\fP
+呼び出したプロセスが特権を持たないのに (\fBCAP_SETUID\fP ケーパビリティを持たないのに)、 ID を許されていない値に変更しようとした。
+.SH バージョン
+Linux ではバージョン 2.1.44 より利用可能になった。
+.SH 準拠
+これらのコールは非標準である。 HP\-UX や BSD 系のいくつかにも存在する。
+.SH 注意
+HP\-UX や FreeBSD では \fI<unistd.h>\fP にプロトタイプが存在する。
+Linux では、glibc 2.3.2 以降で プロトタイプが提供されている。
+
+元々の Linux の \fBsetresuid\fP() と \fBsetresgid\fP() システムコールは
+16 ビットのグループ ID だけに対応していた。
+その後、Linux 2.4 で、32 ビットの ID に対応した
+\fBsetresuid32\fP() と \fBsetresgid32\fP() が追加された。
+glibc の \fBsetresuid\fP() と \fBsetresgid\fP() のラッパー関数は
+カーネルバージョンによるこの違いを吸収している。
+.SH 関連項目
+\fBgetresuid\fP(2), \fBgetuid\fP(2), \fBsetfsgid\fP(2), \fBsetfsuid\fP(2),
+\fBsetreuid\fP(2), \fBsetuid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7)
diff --git a/draft/man2/setreuid.2 b/draft/man2/setreuid.2
new file mode 100644 (file)
index 0000000..ece000f
--- /dev/null
@@ -0,0 +1,115 @@
+.\" Copyright (c) 1983, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" 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.
+.\"
+.\"     @(#)setregid.2 6.4 (Berkeley) 3/10/91
+.\"
+.\" Modified Sat Jul 24 09:08:49 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Portions extracted from linux/kernel/sys.c:
+.\"             Copyright (C) 1991, 1992  Linus Torvalds
+.\"             May be distributed under the GNU General Public License
+.\" Changes: 1994-07-29 by Wilf <G.Wilford@ee.surrey.ac.uk>
+.\"          1994-08-02 by Wilf due to change in kernel.
+.\"          2004-07-04 by aeb
+.\"          2004-05-27 by Michael Kerrisk
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SETREUID 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+setreuid, setregid \- 実 (real) と実効 (effective) ユーザー (グループ) ID を設定する
+.SH 書式
+\fB#include <sys/types.h>\fP
+.br
+\fB#include <unistd.h>\fP
+.sp
+\fBint setreuid(uid_t \fP\fIruid\fP\fB, uid_t \fP\fIeuid\fP\fB);\fP
+.br
+\fBint setregid(gid_t \fP\fIrgid\fP\fB, gid_t \fP\fIegid\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBsetreuid\fP(), \fBsetregid\fP():
+.RS 4
+.ad l
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+.ad
+.RE
+.SH 説明
+\fBsetreuid\fP()  は呼び出し元のプロセスの実 (real) ユーザー ID と 実効 (effective) ユーザー ID を設定する。
+
+実ユーザー ID や実効ユーザー ID に \-1 を与えた場合、 システムはその ID を変更しない。
+
+非特権プロセスは実効ユーザー ID を実ユーザー ID または実効ユーザー ID または 保存 set\-user\-ID にしか設定できない。
+
+非特権ユーザーは、実ユーザー ID を実ユーザー ID または 実効ユーザー ID にしか設定できない。
+
+実ユーザーID が設定されたり、実効ユーザーID が前の実ユーザーID と 異った値に設定された場合、保存 set\-user\-ID
+には新しい実効ユーザーID の値が設定される。
+
+これと全く同様に、 \fBsetregid\fP()  は呼び出し元のプロセスの実グループ ID と実効グループ ID を設定し、
+上記の説明で「ユーザー」を「グループ」に読み替えたことが成り立つ。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEPERM\fP
+呼び出し元のプロセスに特権がなく (Linux では \fBsetreuid\fP()  の場合に \fBCAP_SETUID\fP ケーパビリティ
+(capability) がなく、 \fBsetregid\fP()  の場合に \fBCAP_SETGID\fP ケーパビリティがない)、
+以下のいずれでもない変更が指定された: (i) 実効ユーザー (グループ) ID と実ユーザー (グループ) ID を入れ換える。 (ii)
+片方の値を他方に設定する。 (iii) 実効ユーザー (グループ) ID に保存 set\-user\-ID (保存 set\-group\-ID)
+の値を設定する。
+.SH 準拠
+POSIX.1\-2001, 4.3BSD (\fBsetreuid\fP()  と \fBsetregid\fP()  関数コールは 4.2BSD で登場した)。
+.SH 注意
+実効ユーザー (グループ) ID を保存ユーザー (グループ) ID に 設定することが、Linux 1.1.37 (1.1.38) から可能になった。
+
+POSIX.1 では、非特権プロセスに対して Linux 上で認められている ID の変更の 全パターンを規定しているわけではない。
+\fBsetreuid\fP()  では、実効ユーザ ID を実ユーザ ID もしくは保存 set\-user\-ID と 同じ値にすることができるが、
+非特権プロセスが実ユーザ ID を実ユーザ ID、実効ユーザ ID、 保存 set\-user\-ID のどの値にも設定できるかは規定されていない。
+\fBsetregid\fP()  では、実グループ ID を保存 set\-group\-ID と同じ値に変更でき、 実効グループ ID を実グループ ID
+や保存 set\-group\-ID と同じ値に変更できる。 どのような ID の変更が認められているかの正確な詳細は 実装ごとに異なる。
+
+POSIX.1 では、これらのシステムコールが保存 set\-user\-ID や 保存 set\-group\-ID に与える影響については規定していない。
+
+元々の Linux の \fBsetreuid\fP() と \fBsetregid\fP() システムコールは
+16 ビットのグループ ID だけに対応していた。
+その後、Linux 2.4 で、32 ビットの ID に対応した
+\fBsetreuid32\fP() と \fBsetregid32\fP() が追加された。
+glibc の \fBsetreuid\fP() と \fBsetregid\fP() のラッパー関数は
+カーネルバージョンによるこの違いを吸収している。
+.SH 関連項目
+\fBgetgid\fP(2), \fBgetuid\fP(2), \fBseteuid\fP(2), \fBsetgid\fP(2), \fBsetresuid\fP(2),
+\fBsetuid\fP(2), \fBcapabilities\fP(7)
index 3150acd..1226fa6 100644 (file)
@@ -33,7 +33,7 @@
 .\"*******************************************************************
 .TH SETSID 2 2008\-12\-03 Linux "Linux Programmer's Manual"
 .SH 名前
-setsid \- ã\82»ã\83\83ã\82·ã\83§ã\83³ (session) ã\82\92ä½\9cæ\88\90ã\81\97ã\80\81ã\83\97ã\83­ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97 ID ã\82\92設å®\9aã\81\99ã\82\8b
+setsid \- セッション (session) を作成し、プロセスグループ ID を設定する
 .SH 書式
 .ad l
 \fB#include <unistd.h>\fP
@@ -42,25 +42,25 @@ setsid \- セッション (session) を作成し、プロセス・グループ I
 .br
 .ad b
 .SH 説明
-\fBsetsid\fP()  ã\81¯å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83­ã\82»ã\82¹ã\81\8cã\83\97ã\83­ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\83»ã\83ªã\83¼ã\83\80ã\83¼ (process group leader)
\81§ã\81ªã\81\91ã\82\8cã\81°ã\80\81æ\96°ã\81\97ã\81\84ã\82»ã\83\83ã\82·ã\83§ã\83³ã\82\92ä½\9cæ\88\90ã\81\99ã\82\8bã\80\82 å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83­ã\82»ã\82¹ã\81¯æ\96°ã\81\97ã\81\84ã\82»ã\83\83ã\82·ã\83§ã\83³ã\81®ã\83ªã\83¼ã\83\80ã\83¼ã\80\81æ\96°ã\81\97ã\81\84ã\83\97ã\83­ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81®
\83\97ã\83­ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\83»ã\83ªã\83¼ã\83\80ã\83¼ã\81¨ã\81ªã\82\8aã\80\81tty ã\81®å\88¶å¾¡ã\82\92æ\8c\81ã\81\9fã\81ªã\81\84ã\80\82 å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83­ã\82»ã\82¹ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\83»グループ ID とセッション ID には、
\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83­ã\82»ã\82¹ã\81® PID ã\81\8c設å®\9aã\81\95ã\82\8cã\82\8bã\80\82å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83­ã\82»ã\82¹ã\81¯ã\81\93ã\81® æ\96°ã\81\97ã\81\84ã\83\97ã\83­ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\80\81ã\81\93ã\81®æ\96°ã\81\97ã\81\84ã\82»ã\83\83ã\82·ã\83§ã\83³ã\81®å\94¯ä¸\80ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81¨ã\81ªã\82\8bã\80\82
+\fBsetsid\fP()  は呼び出したプロセスがプロセスグループ・リーダー (process group leader)
+でなければ、新しいセッションを作成する。 呼び出したプロセスは新しいセッションのリーダー、新しいプロセスグループの
\83\97ã\83­ã\82»ã\82¹ã\82°ã\83«ã\83¼ã\83\97ã\83»ã\83ªã\83¼ã\83\80ã\83¼ã\81¨ã\81ªã\82\8aã\80\81tty ã\81®å\88¶å¾¡ã\82\92æ\8c\81ã\81\9fã\81ªã\81\84ã\80\82 å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83­ã\82»ã\82¹ã\81®ã\83\97ã\83­ã\82»ã\82¹グループ ID とセッション ID には、
+呼び出したプロセスの PID が設定される。呼び出したプロセスはこの 新しいプロセスグループ、この新しいセッションの唯一のプロセスとなる。
 .SH 返り値
 成功すると、呼び出したプロセスの (新しい) セッション ID が返される。 エラーの場合は、 \fI(pid_t)\ \-1\fP が返され、
 \fIerror\fP にエラーを示す値が設定される。
 .SH エラー
 .TP 
 \fBEPERM\fP
\81\84ã\81\9aã\82\8cã\81\8bã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97 ID ã\81\8cã\80\81 å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83­ã\82»ã\82¹ã\81® PID ã\81¨ç­\89ã\81\97ã\81\84ã\80\82
-これは、呼び出したプロセスが既にプロセス・リーダーの場合には \fBsetsid\fP()  は失敗することを意味する。
\81\84ã\81\9aã\82\8cã\81\8bã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\82°ã\83«ã\83¼ã\83\97 ID ã\81\8cã\80\81 å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83­ã\82»ã\82¹ã\81® PID ã\81¨ç­\89ã\81\97ã\81\84ã\80\82 ã\81\93ã\82\8cã\81¯ã\80\81å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83­ã\82»ã\82¹ã\81\8cæ\97¢ã\81«ã\83\97ã\83­ã\82»ã\82¹ã\83ªã\83¼ã\83\80ã\83¼ã\81®å ´å\90\88ã\81«ã\81¯
+\fBsetsid\fP()  は失敗することを意味する。
 .SH 準拠
 SVr4, POSIX.1\-2001.
 .SH 注意
 \fBfork\fP(2)  で作成された子プロセスは、親プロセスのセッション ID を継承する。 \fBexecve\fP(2)  の前後でセッション ID
 は保存される。
 
\83\97ã\83­ã\82»ã\82¹ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\83»ã\83ªã\83¼ã\83\80ã\83¼ã\81¨ã\81¯ã\80\81ã\81\9dã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\83»グループ ID が その PID に等しいプロセスである。 \fBsetsid\fP()
\83\97ã\83­ã\82»ã\82¹ã\82°ã\83«ã\83¼ã\83\97ã\83»ã\83ªã\83¼ã\83\80ã\83¼ã\81¨ã\81¯ã\80\81ã\81\9dã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81®ã\83\97ã\83­ã\82»ã\82¹グループ ID が その PID に等しいプロセスである。 \fBsetsid\fP()
 を確実に成功させるためには、 \fBfork\fP(2)  して \fBexit\fP(2)  し、子プロセスで \fBsetsid\fP()  を行なえば良い。
 .SH 関連項目
 \fBgetsid\fP(2), \fBsetpgid\fP(2), \fBsetpgrp\fP(2), \fBtcgetsid\fP(3),
diff --git a/draft/man2/setuid.2 b/draft/man2/setuid.2
new file mode 100644 (file)
index 0000000..2d1043d
--- /dev/null
@@ -0,0 +1,89 @@
+.\" Copyright (C), 1994, Graeme W. Wilford (Wilf).
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Fri Jul 29th 12:56:44 BST 1994  Wilf. <G.Wilford@ee.surrey.ac.uk>
+.\" Changes inspired by patch from Richard Kettlewell
+.\"   <richard@greenend.org.uk>, aeb 970616.
+.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Added notes on capability requirements
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SETUID 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.SH 名前
+setuid \- ユーザー識別 (identity) を設定する
+.SH 書式
+\fB#include <sys/types.h>\fP
+.br
+\fB#include <unistd.h>\fP
+.sp
+\fBint setuid(uid_t \fP\fIuid\fP\fB);\fP
+.SH 説明
+\fBsetuid\fP()  は呼び出し元のプロセスの実効 (effective) ユーザー ID を設定する。 もし呼び出し元プロセスの実効 UID が
+root ならば、 実 (real) UID と保存 (saved) set\-user\-ID も設定される。
+.PP
+Linux では、 \fBsetuid\fP()  は \fB_POSIX_SAVED_IDS\fP をもった POSIX 版のように実装されている。 これは
+(ルート以外の) set\-user\-ID プログラムにそのユーザーの特権を 全て与え、特権の必要ない仕事をし、本来の実効ユーザー ID に
+安全な方法で再び戻すことを許す。
+.PP
+ユーザーが root またはプログラムが root に set\-user\-ID されているならば、 特別の注意が払われる。 \fBsetuid\fP()
+関数は呼び出し者の実効ユーザー ID をチェックし、 それがスーパーユーザーならば、 プロセスに関連する全てのユーザー ID に \fIuid\fP
+を設定する。 これが行なわれた後にはプログラムが再びルートの特権を得ることはできない。
+.PP
+したがって、set\-user\-ID\-root プログラムで、一時的にルート特権を解除し、
+非特権ユーザであるかのように振舞い、後でルート権限をもう一度得ようと する場合には、 \fBsetuid\fP()  を使うことができない。その場合には、
+\fBseteuid\fP(2)  を使う必要がある。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+\fIuid\fP が現在のユーザー ID とマッチせず、この \fIuid\fP によってプロセスがリソース上限 \fBRLIMIT_NPROC\fP を超えた。
+.TP 
+\fBEPERM\fP
+ユーザーが特権を持たず (Linux では \fBCAP_SETUID\fP ケーパビリティ (capability) を持たず)、 \fIuid\fP
+が呼び出し元プロセスの実 UID または保存 set\-user\-ID と一致しない。
+.SH 準拠
+.\" SVr4 documents an additional EINVAL error condition.
+SVr4, POSIX.1\-2001.  4.4BSD のコールとは完全な互換性はない、 BSD のコールは実 (real)、保存 (saved)、実効
+(effective) ID の全てを設定する。
+.SH 注意
+Linux はファイルシステム・ユーザー ID の概念を持つ。
+通常、これは実効ユーザー ID に等しい。
+\fBsetuid\fP()  コールは呼び出し元のプロセスの
+ファイルシステム・ユーザー ID も設定する。
+\fBsetfsuid\fP(2) も参照すること。
+.PP
+\fIuid\fP が前の実効 UID と異っていた場合、
+プロセスはコアダンプすることを禁止される。
+
+元々の Linux の \fBsetuid\fP() システムコールは
+16 ビットのグループ ID だけに対応していた。
+その後、Linux 2.4 で、32 ビットの ID に対応した
+\fBsetuid32\fP() が追加された。
+glibc の \fBsetuid\fP() のラッパー関数は
+カーネルバージョンによるこの違いを吸収している。
+.SH 関連項目
+\fBgetuid\fP(2), \fBseteuid\fP(2), \fBsetfsuid\fP(2), \fBsetreuid\fP(2),
+\fBcapabilities\fP(7), \fBcredentials\fP(7)
diff --git a/draft/man2/stat.2 b/draft/man2/stat.2
new file mode 100644 (file)
index 0000000..dfd3498
--- /dev/null
@@ -0,0 +1,448 @@
+.\" t
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
+.\" Parts Copyright (c) 1995 Nicolai Langfeldt (janl@ifi.uio.no), 1/1/95
+.\" and Copyright (c) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified by Michael Haardt <michael@moria.de>
+.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1995-05-18 by Todd Larason <jtl@molehill.org>
+.\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 1995-01-09 by Richard Kettlewell <richard@greenend.org.uk>
+.\" Modified 1998-05-13 by Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
+.\" Modified 1999-07-06 by aeb & Albert Cahalan
+.\" Modified 2000-01-07 by aeb
+.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" 2007-06-08 mtk: Added example program
+.\" 2007-07-05 mtk: Added details on underlying system call interfaces
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH STAT 2 2011\-10\-04 Linux "Linux Programmer's Manual"
+.SH 名前
+stat, fstat, lstat \- ファイルの状態を取得する
+.SH 書式
+\fB#include <sys/types.h>\fP
+.br
+\fB#include <sys/stat.h>\fP
+.br
+\fB#include <unistd.h>\fP
+.sp
+\fBint stat(const char *\fP\fIpath\fP\fB, struct stat *\fP\fIbuf\fP\fB);\fP
+.br
+\fBint fstat(int \fP\fIfd\fP\fB, struct stat *\fP\fIbuf\fP\fB);\fP
+.br
+\fBint lstat(const char *\fP\fIpath\fP\fB, struct stat *\fP\fIbuf\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.ad l
+.PD 0
+.sp
+\fBlstat\fP():
+.RS 4
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+.br
+|| /* glibc 2.10 以降: */ _POSIX_C_SOURCE\ >=\ 200112L
+.RE
+.PD
+.ad
+.SH 説明
+.PP
+これらの関数はファイルについての情報を返す。
+ファイルそのものに対するアクセス許可は必要としないが、
+\(em\fBstat\fP() と \fBlstat\fP()  の場合には \(em
+そのファイルへ至る \fIpath\fP を構成する全てのディレクトリに対する
+実行 (検索) 許可が必要である。
+.PP
+\fBstat\fP()  は \fIpath\fP で指定されたファイルの状態を取得して \fIbuf\fP へ格納する。
+
+\fBlstat\fP()  は \fBstat\fP()  と同じであるが、 \fIpath\fP がシンボリックリンクの場合、リンクが参照しているファイルではなく、
+リンク自身の状態を取得する点が異なる。
+
+\fBfstat\fP()  は \fBstat\fP()  と同じだが、 状態を取得するファイルをファイル・ディスクリプタ \fIfd\fP で指定する。
+.PP
+これらのシステムコールはいずれも、結果を \fIstat\fP 構造体に入れて返す。 \fIstat\fP 構造体には以下のフィールドが含まれている:
+.PP
+.in +4n
+.nf
+struct stat {
+    dev_t     st_dev;     /* ファイルがあるデバイスの ID */
+    ino_t     st_ino;     /* inode 番号 */
+    mode_t    st_mode;    /* アクセス保護 */
+    nlink_t   st_nlink;   /* ハードリンクの数 */
+    uid_t     st_uid;     /* 所有者のユーザ ID */
+    gid_t     st_gid;     /* 所有者のグループ ID */
+    dev_t     st_rdev;    /* デバイス ID (特殊ファイルの場合) */
+    off_t     st_size;    /* 全体のサイズ (バイト単位) */
+    blksize_t st_blksize; /* ファイルシステム I/O での
+                             ブロックサイズ */
+    blkcnt_t  st_blocks;  /* 割り当てられた 512B のブロック数 */
+    time_t    st_atime;   /* 最終アクセス時刻 */
+    time_t    st_mtime;   /* 最終修正時刻 */
+    time_t    st_ctime;   /* 最終状態変更時刻 */
+};
+.fi
+.in
+.PP
+\fIst_dev\fP フィールドは、このファイルが存在するデバイスを示す (マクロ \fBmajor\fP(3), \fBminor\fP(3)
+は、このフィールドのデバイス ID を分解するのに役立つだろう)。
+
+\fIst_rdev\fP フィールドは、このファイル (inode) が表すデバイスを示す。
+
+\fIst_size\fP フィールドは、(通常のファイルかシンボリックリンクの場合に)
+ファイルの大きさをバイト単位で示す。 シンボリックリンクの大きさは、
+シンボリックリンクに含まれている パス名の長さ (終端の NULL バイトは含まない)
+である。
+
+\fIst_blocks\fP フィールドは、ファイルの大きさを 512 バイトのブロックサイズ単位で示す フィールドは、ファイルに割り当てされたブロック数を
+512 バイト単位で示す。 (ファイルに穴があるような場合、この値は \fIst_size\fP/512 より小さくなることもある)。
+
+\fIst_blksize\fP フィールドは、効率的にファイルシステム I/O ができる「好ましい」 ブロックサイズを示す
+(もっと小さい単位でファイルに書き込みを行うと、 読み出し\-\-修正\-\-再書き込みといった非効率な動作になってしまうかもしれない)。
+.PP
+全ての Linux のファイルシステムが全ての時間フィールドを 実装しているわけではない。 ファイルやディレクトリのアクセスが \fIst_atime\fP
+フィールドを更新しないようなかたちでマウントできるファイルシステムもある。 (\fBmount\fP(8)  の \fInoatime\fP,
+\fInodiratime\fP, \fIrelatime\fP や \fBmount\fP(2)  の関連する情報を参照)。 また、ファイルが \fBO_NOATIME\fP
+付きでオープンされている場合には \fIst_atime\fP は更新されない。 \fBopen\fP(2)  参照。
+
+\fIst_atime\fP フィールドはファイルアクセスがあった場合に変更される (例えば、 \fBexecve\fP(2), \fBmknod\fP(2),
+\fBpipe\fP(2), \fButime\fP(2)  を使用した場合や \fBread\fP(2)  で 1 バイト以上読み込んだ場合など)。
+\fBmmap\fP(2)  などの他のルーチンでは、 \fIst_atime\fP は更新されることもあれば、そうでない場合もある。
+
+\fIst_mtime\fP フィールドは、ファイルが修正された場合に変更される (例えば、 \fBmknod\fP(2), \fBtruncate\fP(2),
+\fButime\fP(2)  を使用した場合や \fBwrite\fP(2)  で 1 バイト以上書き込みをした場合など)。 さらに、ディレクトリの
+\fIst_mtime\fP は、そのディレクトリで ファイルが作成されたり削除されたりすると変更される。 \fIst_mtime\fP フィールドは
+所有者やグループやハード・リンク数やモードの変更では変更 \fIされない。\fP
+
+\fIst_ctime\fP フィールドは書き込みや inode 情報 (所有者、グループ、リンク数、モードなど) の 設定によって変更される。
+.PP
+以下の POSIX マクロは、 \fIst_mode\fP フィールド で使用されるファイル種別のチェックのために定義されている :
+.RS 4
+.TP  1.2i
+\fBS_ISREG\fP(m)
+通常のファイルか?
+.TP 
+\fBS_ISDIR\fP(m)
+ディレクトリか?
+.TP 
+\fBS_ISCHR\fP(m)
+キャラクター・デバイスか?
+.TP 
+\fBS_ISBLK\fP(m)
+ブロック・デバイスか?
+.TP 
+\fBS_ISFIFO\fP(m)
+FIFO (名前付きパイプ) か?
+.TP 
+\fBS_ISLNK\fP(m)
+シンボリックリンクか? (POSIX.1\-1996 にはない)
+.TP 
+\fBS_ISSOCK\fP(m)
+ソケットか? (POSIX.1\-1996 にはない)
+.RE
+.PP
+以下のフラグが \fIst_mode\fP フィールド用に定義されている:
+.in +4n
+.TS
+lB l l.
+S_IFMT 0170000 ファイル種別を示すビット領域を表すビットマスク
+S_IFSOCK       0140000 ソケット
+S_IFLNK        0120000 シンボリックリンク
+S_IFREG        0100000 通常のファイル
+S_IFBLK        0060000 ブロック・デバイス
+S_IFDIR        0040000 ディレクトリ
+S_IFCHR        0020000 キャラクター・デバイス
+S_IFIFO        0010000 FIFO
+S_ISUID        0004000 set\-user\-ID bit
+S_ISGID        0002000 set\-group\-ID bit (下記参照)
+S_ISVTX        0001000 スティッキー・ビット (下記参照)
+S_IRWXU        00700   ファイル所有者のアクセス許可用のビットマスク
+S_IRUSR        00400   所有者の読み込み許可
+S_IWUSR        00200   所有者の書き込み許可
+S_IXUSR        00100   所有者の実行許可
+S_IRWXG        00070   グループのアクセス許可用のビットマスク
+S_IRGRP        00040   グループの読み込み許可
+S_IWGRP        00020   グループの書き込み許可
+S_IXGRP        00010   グループの実行許可
+S_IRWXO        00007   他人 (others) のアクセス許可用のビットマスク
+S_IROTH        00004   他人の読み込み許可
+S_IWOTH        00002   他人の書き込み許可
+S_IXOTH        00001   他人の実行許可
+.TE
+.in
+.P
+set\-group\-ID bit (\fBS_ISGID\fP)  にはいくつかの特殊な使用法がある: ディレクトリに設定した場合には、そのディレクトリが
+BSD 方式で使用される ことを示す。つまり、そのディレクトリに作成されたファイルのグループID は 作成したプロセスの実効 (effective)
+グループID ではなく、ディレクトリの グループID を継承する。また、そのディレクトリに作成されたディレクトリにも \fBS_ISGID\fP
+ビットが設定される。グループ実行ビット (\fBS_IXGRP\fP)  が設定されていないファイルに設定された場合は、 set\-group\-ID
+ビットはファイル/レコードの 強制的な (mandatory) ロックを表す。
+.P
+ディレクトリにスティッキービット (S_ISVTX) が設定された場合は、 そのディレクトリのファイルの名前を変更したり、削除したりできるのは、
+そのファイルの所有者か、そのディレクトリの所有者か、特権プロセス だけとなる。
+.SH 返り値
+成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。
+.SH エラー
+.TP 
+\fBEACCES\fP
+\fIpath\fP が所属するディレクトリとその上位のディレクトリのいずれかに 対する検索許可がなかった (\fBpath_resolution\fP(7)
+も参照のこと)。
+.TP 
+\fBEBADF\fP
+\fIfd\fP が不正である。
+.TP 
+\fBEFAULT\fP
+アドレスが間違っている。
+.TP 
+\fBELOOP\fP
+パスを辿る際に解決すべきシンボリックリンクが多過ぎた。
+.TP 
+\fBENAMETOOLONG\fP
+\fIpath\fP が長過ぎる。
+.TP 
+\fBENOENT\fP
+\fIpath\fP の構成要素が存在しないか、 \fIpath\fP が空文字列である。
+.TP 
+\fBENOMEM\fP
+カーネルのメモリが足りない。
+.TP 
+\fBENOTDIR\fP
+\fIpath\fP の前半部分 (prefix) の構成要素がディレクトリではない。
+.TP 
+\fBEOVERFLOW\fP
+(\fBstat\fP()) \fIpath\fP が、ファイルサイズを \fIoff_t\fP 型で表現できないファイルを
+参照している。このエラーが起こるのは、32 ビットプラットフォーム上で
+\fI\-D_FILE_OFFSET_BITS=64\fP を指定せずにコンパイルされたアプリケーションが、
+ファイルサイズが \fI(1<<31)\-1\fP ビットを超えるファイルに対して \fBstat\fP()
+を呼び出した場合である。
+.SH 準拠
+.\" SVr4 documents additional
+.\" .BR fstat ()
+.\" error conditions EINTR, ENOLINK, and EOVERFLOW.  SVr4
+.\" documents additional
+.\" .BR stat ()
+.\" and
+.\" .BR lstat ()
+.\" error conditions EINTR, EMULTIHOP, ENOLINK, and EOVERFLOW.
+これらのシステムコールは SVr4, 4.3BSD, POSIX.1\-2001 に準拠している。 \fBstat\fP()  と \fBfstat\fP()
+コールは SVr4, SVID, POSIX, X/OPEN, 4.3BSD に準拠している。 \fBlstat\fP()  コールは 4.3BSD と
+SVr4 に準拠している。
+
+POSIX.1\-2001 では、シンボリックリンクに対する \fBlstat\fP() で
+有効な情報を返すように求められていたのは、 \fIstat\fP 構造体の \fIst_size\fP
+と \fIst_mode\fP のファイル種別要素だけであった。
+POSIX.1\-2008 では規定が厳しくなり、 \fBlstat\fP() は \fIst_mode\fP の
+アクセス許可ビット以外の全てのフィールドに有効な情報を返すことが
+求められるようになっている。
+
+\fIst_blocks\fP と \fIst_blksize\fP フィールドの使用はあまり移植性がない
+(これらのフィールドは BSD によって導入された。 システムごとに解釈が
+異なっており、 NFS マウントの場合には同じシステムでも異なる可能性がある)。
+\fI<sys/stat.h>\fP から \fIblkcnt_t\fP の \fIblksize_t\fP 型定義を
+読み込みたい場合は、(\fIどの\fPヘッダファイルをインクルードするよりも前に)
+\fB_XOPEN_SOURCE\fP を 500 以上の値で定義すること。
+.LP
+POSIX.1\-1990 には \fBS_IFMT\fP, \fBS_IFSOCK\fP, \fBS_IFLNK\fP, \fBS_IFREG\fP,
+\fBS_IFBLK\fP, \fBS_IFDIR\fP, \fBS_IFCHR\fP, \fBS_IFIFO\fP, \fBS_ISVTX\fP 定数に関する
+記述はなかったが、代わりに \fBS_ISDIR\fP() のようなマクロを使用するように
+要求していた。 \fBS_IF*\fP 定数は POSIX.1\-2011 以降には存在する。
+
+マクロ \fBS_ISLNK\fP() と \fBS_ISSOCK\fP() は POSIX.1\-1996 にはないが、
+POSIX.1\-2001 には両方とも存在する。 前者は SVID 4 に、後者は SUSv2 に
+由来している。
+.LP
+UNIX V7 (とその後のシステム) は \fBS_IREAD\fP, \fBS_IWRITE\fP, \fBS_IEXEC\fP を持っており、
+POSIX はその同義語として \fBS_IRUSR\fP, \fBS_IWUSR\fP, \fBS_IXUSR\fP を規定している。
+.SS 他のシステム
+各種システムで使用されていた(いる)値:
+.TS
+l l l l l.
+16進  名前  ls      8進数 説明
+f000   S_IFMT          170000  ファイル種別フィールドのビットマスク
+0000                   000000  SCO では 使用不能 inode;
+                               BSD では未知のファイル種別;
+                               SVID\-v2 と XPG2 では 0 と 0100000 の
+                               両方が普通のファイル
+1000   S_IFIFO p|      010000  FIFO (名前付きパイプ)
+2000   S_IFCHR c       020000  キャラクタ特殊ファイル (V7)
+3000   S_IFMPC         030000  多重化されたキャラクタ特殊ファイル (V7)
+4000   S_IFDIR d/      040000  ディレクトリ (V7)
+5000   S_IFNAM         050000  XENIX 二つの副型を持つ名前付きの
+                               特殊ファイル
+                               副型は \fIst_rdev\fP の値 1,2 で区別される:
+0001   S_INSEM s       000001  XENIX IFNAMのセマフォー副型
+0002   S_INSHD m       000002  XENIX IFNAMの共有データ副型
+6000   S_IFBLK b       060000  ブロック特殊ファイル (V7)
+7000   S_IFMPB         070000  多重化されたブロック特殊ファイル (V7)
+8000   S_IFREG \-      100000  通常ファイル (V7)
+9000   S_IFCMP         110000  VxFS 圧縮ファイル
+9000   S_IFNWK n       110000  ネットワーク特殊ファイル (HP\-UX)
+a000   S_IFLNK l@      120000  シンボリックリンク (BSD)
+b000   S_IFSHAD                130000  Solaris ACL のための隠された inode
+                               (ユーザ空間からは見えない)
+c000   S_IFSOCK        s=      140000  ソケット (BSD; VxFS の "S_IFSOC")
+d000   S_IFDOOR        D>      150000  Solaris ドア・ファイル
+e000   S_IFWHT w%      160000  BSD 空白ファイル (inode を使用しない)
+0200   S_ISVTX         001000  `スティッキー・ビット':使用後も
+                               スワップに残す (V7)
+                               予約 (SVID\-v2)
+                               ディレクトリ以外: ファイルをキャッシュ
+                               しない (SunOS)
+                               ディレクトリ: 削除制限フラグ (SVID\-v4.2)
+0400   S_ISGID         002000  実行時の set\-group\-ID (V7)
+                               ディレクトリに対しては GID の伝達に
+                               BSD 方式を使用する
+0400   S_ENFMT         002000  System V ファイルロックを強制する
+                               (S_ISGID と共有)
+0800   S_ISUID         004000  実行時の set\-user\-ID (V7)
+0800   S_CDF           004000  ディレクトリが状況依存ファイル
+                               (HP\-UX)
+.TE
+
+スティッキー コマンドは Version 32V AT&T UNIX で登場した。
+.SH 注意
+.\" As at kernel 2.6.25, XFS and JFS support nanosecond timestamps,
+.\" but ext2, ext3, and Reiserfs do not.
+カーネル 2.5.48 以降では、 \fIstat\fP 構造体は 3 つのファイルのタイムスタンプ
+関連のフィールドでナノ秒単位の精度に対応している。 glibc では、機能検査
+マクロ \fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP が定義された場合に、各フィールドの
+ナノ秒の情報を \fIst_atim.tv_nsec\fP という形式の名前で公開する。
+これらのフィールドは POSIX.1\-2008 で規定されており、
+バージョン 2.12 以降の glibc では、
+\fB_POSIX_C_SOURCE\fP が 200809L 以上の値で定義されるか、
+\fB_XOPEN_SOURCE\fP が 700 以上の値で定義された場合に、
+これらのフィールドが公開される。
+上記のマクロのいずれも定義されていない場合、ナノ秒の値は
+\fIst_atimensec\fP という形式の名前で公開される。
+秒より細かいタイムスタンプをサポートしていないファイルシステムでは、
+ナノ秒のフィールドは 0 に設定される。
+
+Linux では、 \fBlstat\fP() は一般には自動マウント動作 (automounter action) の
+きっかけとならないが、 \fBstat\fP() はきっかけとなる (\fBfstatat\fP(2) を参照)。
+
+\fI/proc\fP ディレクトリ以下にあるファイルのほとんどでは、 \fBstat\fP()  を呼び出した際に、 \fIst_size\fP
+フィールドにファイルサイズが返されない。 代わりに \fIst_size\fP フィールドには 0 が返される。
+.SS 背後のカーネル・インタフェース
+.\"
+.\" A note from Andries Brouwer, July 2007
+.\"
+.\" > Is the story not rather more complicated for some calls like
+.\" > stat(2)?
+.\"
+.\" Yes and no, mostly no. See /usr/include/sys/stat.h .
+.\"
+.\" The idea is here not so much that syscalls change, but that
+.\" the definitions of struct stat and of the types dev_t and mode_t change.
+.\" This means that libc (even if it does not call the kernel
+.\" but only calls some internal function) must know what the
+.\" format of dev_t or of struct stat is.
+.\" The communication between the application and libc goes via
+.\" the include file <sys/stat.h> that defines a _STAT_VER and
+.\" _MKNOD_VER describing the layout of the data that user space
+.\" uses. Each (almost each) occurrence of stat() is replaced by
+.\" an occurrence of xstat() where the first parameter of xstat()
+.\" is this version number _STAT_VER.
+.\"
+.\" Now, also the definitions used by the kernel change.
+.\" But glibc copes with this in the standard way, and the
+.\" struct stat as returned by the kernel is repacked into
+.\" the struct stat as expected by the application.
+.\" Thus, _STAT_VER and this setup cater for the application-libc
+.\" interface, rather than the libc-kernel interface.
+.\"
+.\" (Note that the details depend on gcc being used as c compiler.)
+時間の経過とともに、 \fIstat\fP 構造体のサイズが大きくなり、この影響で \fBstat\fP()  には 3つのバージョンが存在する:
+\fIsys_stat\fP()  (スロットは \fI__NR_oldstat\fP)、 \fIsys_newstat\fP()  (スロットは
+\fI__NR_stat\fP)、 \fIsys_stat64\fP()  (カーネル 2.4 で導入; スロットは \fI__NR_stat64\fP).  glibc
+の \fBstat\fP()  ラッパー関数はこれらの詳細をアプリケーションから隠蔽してくれる。
+具体的には、カーネルが提供しているシステムコールのうち最新のバージョンを 起動し、古いバイナリの場合には必要に応じて返された情報を再構成
+(repack) する。 \fBfstat\fP()  と \fBlstat\fP()  についても同様である。
+.SH 例
+以下のプログラムは \fBstat\fP()  を呼び出し、返ってきた \fIstat\fP 構造体のフィールドのいくつかを表示する。
+.nf
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <time.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(int argc, char *argv[])
+{
+    struct stat sb;
+
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s <pathname>\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    if (stat(argv[1], &sb) == \-1) {
+        perror("stat");
+        exit(EXIT_FAILURE);
+    }
+
+    printf("File type:                ");
+
+    switch (sb.st_mode & S_IFMT) {
+    case S_IFBLK:  printf("block device\en");            break;
+    case S_IFCHR:  printf("character device\en");        break;
+    case S_IFDIR:  printf("directory\en");               break;
+    case S_IFIFO:  printf("FIFO/pipe\en");               break;
+    case S_IFLNK:  printf("symlink\en");                 break;
+    case S_IFREG:  printf("regular file\en");            break;
+    case S_IFSOCK: printf("socket\en");                  break;
+    default:       printf("unknown?\en");                break;
+    }
+
+    printf("I\-node number:            %ld\en", (long) sb.st_ino);
+
+    printf("Mode:                     %lo (octal)\en",
+            (unsigned long) sb.st_mode);
+
+    printf("Link count:               %ld\en", (long) sb.st_nlink);
+    printf("Ownership:                UID=%ld   GID=%ld\en",
+            (long) sb.st_uid, (long) sb.st_gid);
+
+    printf("Preferred I/O block size: %ld bytes\en",
+            (long) sb.st_blksize);
+    printf("File size:                %lld bytes\en",
+            (long long) sb.st_size);
+    printf("Blocks allocated:         %lld\en",
+            (long long) sb.st_blocks);
+
+    printf("Last status change:       %s", ctime(&sb.st_ctime));
+    printf("Last file access:         %s", ctime(&sb.st_atime));
+    printf("Last file modification:   %s", ctime(&sb.st_mtime));
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBaccess\fP(2), \fBchmod\fP(2), \fBchown\fP(2), \fBfstatat\fP(2), \fBreadlink\fP(2),
+\fButime\fP(2), \fBcapabilities\fP(7), \fBsymlink\fP(7)
diff --git a/draft/man2/statfs.2 b/draft/man2/statfs.2
new file mode 100644 (file)
index 0000000..b442035
--- /dev/null
@@ -0,0 +1,195 @@
+.\" Copyright (C) 2003 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified 2003-08-17 by Walter Harms
+.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH STATFS 2 2010\-11\-21 Linux "Linux Programmer's Manual"
+.SH 名前
+statfs, fstatfs \- ファイルシステムの統計を取得する
+.SH 書式
+\fB#include <sys/vfs.h> \fP/* または <sys/statfs.h> */
+.sp
+\fBint statfs(const char *\fP\fIpath\fP\fB, struct statfs *\fP\fIbuf\fP\fB);\fP
+.br
+\fBint fstatfs(int \fP\fIfd\fP\fB, struct statfs *\fP\fIbuf\fP\fB);\fP
+.SH 説明
+関数 \fBstatfs\fP()  はマウントされたファイルシステムについての情報を返す。 \fIpath\fP
+はマウントされたファイルシステムにあるファイルのパス名である。 \fIbuf\fP は \fIstatfs\fP
+構造体へのポインターで、およそ以下のように定義される:
+
+.in +4n
+.nf
+#if __WORDSIZE == 32           /* システムのワードサイズ */
+# define __SWORD_TYPE           int
+#else /* __WORDSIZE == 64 */
+# define __SWORD_TYPE          long int
+#endif
+
+struct statfs {
+    __SWORD_TYPE f_type;    /* ファイルシステムの種別 (下記参照) */
+    __SWORD_TYPE f_bsize;   /* 最適な転送ブロックサイズ */
+    fsblkcnt_t   f_blocks;  /* ファイルシステムの総データブロック数 */
+    fsblkcnt_t   f_bfree;   /* ファイルシステムの空きブロック数 */
+    fsblkcnt_t   f_bavail;  /* 非特権ユーザが利用可能な空きブロック数 */
+    fsfilcnt_t   f_files;   /* ファイルシステムの総ファイルノード数 */
+    fsfilcnt_t   f_ffree;   /* ファイルシステムの空きファイルノード数 */
+    fsid_t       f_fsid;    /* ファイルシステムの ID */
+    __SWORD_TYPE f_namelen; /* ファイル名の最大長 */
+    __SWORD_TYPE f_frsize;  /* フラグメントサイズ (Linux 2.6 以降) */
+    __SWORD_TYPE f_spare[5];
+};
+
+ファイルシステムの型:
+
+   ADFS_SUPER_MAGIC      0xadf5
+   AFFS_SUPER_MAGIC      0xADFF
+   BEFS_SUPER_MAGIC      0x42465331
+   BFS_MAGIC             0x1BADFACE
+   CIFS_MAGIC_NUMBER     0xFF534D42
+   CODA_SUPER_MAGIC      0x73757245
+   COH_SUPER_MAGIC       0x012FF7B7
+   CRAMFS_MAGIC          0x28cd3d45
+   DEVFS_SUPER_MAGIC     0x1373
+   EFS_SUPER_MAGIC       0x00414A53
+   EXT_SUPER_MAGIC       0x137D
+   EXT2_OLD_SUPER_MAGIC  0xEF51
+   EXT2_SUPER_MAGIC      0xEF53
+   EXT3_SUPER_MAGIC      0xEF53
+   EXT4_SUPER_MAGIC      0xEF53
+   HFS_SUPER_MAGIC       0x4244
+   HPFS_SUPER_MAGIC      0xF995E849
+   HUGETLBFS_MAGIC       0x958458f6
+   ISOFS_SUPER_MAGIC     0x9660
+   JFFS2_SUPER_MAGIC     0x72b6
+   JFS_SUPER_MAGIC       0x3153464a
+   MINIX_SUPER_MAGIC     0x137F /* オリジナルの minix */
+   MINIX_SUPER_MAGIC2    0x138F /* 30 文字ファイル名の minix */
+   MINIX2_SUPER_MAGIC    0x2468 /* minix V2 */
+   MINIX2_SUPER_MAGIC2   0x2478 /* minix V2, 30 文字ファイル名 */
+   MSDOS_SUPER_MAGIC     0x4d44
+   NCP_SUPER_MAGIC       0x564c
+   NFS_SUPER_MAGIC       0x6969
+   NTFS_SB_MAGIC         0x5346544e
+   OPENPROM_SUPER_MAGIC  0x9fa1
+   PROC_SUPER_MAGIC      0x9fa0
+   QNX4_SUPER_MAGIC      0x002f
+   REISERFS_SUPER_MAGIC  0x52654973
+   ROMFS_MAGIC           0x7275
+   SMB_SUPER_MAGIC       0x517B
+   SYSV2_SUPER_MAGIC     0x012FF7B6
+   SYSV4_SUPER_MAGIC     0x012FF7B5
+   TMPFS_MAGIC           0x01021994
+   UDF_SUPER_MAGIC       0x15013346
+   UFS_MAGIC             0x00011954
+   USBDEVICE_SUPER_MAGIC 0x9fa2
+   VXFS_SUPER_MAGIC      0xa501FCF5
+   XENIX_SUPER_MAGIC     0x012FF7B4
+   XFS_SUPER_MAGIC       0x58465342
+   _XIAFS_SUPER_MAGIC    0x012FD16D
+.fi
+.in
+.PP
+\fIf_fsid\fP にどんな値が入るべきなのかは誰も知らない (但し、下記を参照)。
+.PP
+それぞれのファイルシステムにおいて未定義のフィールドには 0 が 設定される。 \fBfstatfs\fP()  はディスクリプター \fIfd\fP
+によって参照されるオープンされたファイルについて、同じ情報を返す。
+.SH 返り値
+成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。
+.SH エラー
+.TP 
+\fBEACCES\fP
+(\fBstatfs\fP()  の場合)  \fIpath\fP のディレクトリ部分に検索許可が与えられていない (\fBpath_resolution\fP(7)
+も参照すること)。
+.TP 
+\fBEBADF\fP
+(\fBfstatfs\fP()  の場合)  \fIfd\fP は有効なオープンされたファイルディスクリプターではない。
+.TP 
+\fBEFAULT\fP
+\fIbuf\fP または \fIpath\fP が不正なアドレスを指している。
+.TP 
+\fBEINTR\fP
+この呼び出しがシグナルで中断された。
+.TP 
+\fBEIO\fP
+ファイルシステムからの読み込みの間に I/O エラーが発生した。
+.TP 
+\fBELOOP\fP
+(\fBstatfs\fP()  の場合)  \fIpath\fP を解決するのに辿るべきシンボリックリンクが多すぎる。
+.TP 
+\fBENAMETOOLONG\fP
+(\fBstatfs\fP()  の場合)  \fIpath\fP が長過ぎる。
+.TP 
+\fBENOENT\fP
+(\fBstatfs\fP()  の場合)  \fIpath\fP によって参照されるファイルが存在しない。
+.TP 
+\fBENOMEM\fP
+十分なカーネルメモリがない。
+.TP 
+\fBENOSYS\fP
+ファイルシステムがこの呼び出しをサポートしていない。
+.TP 
+\fBENOTDIR\fP
+(\fBstatfs\fP()  の場合)  \fIpath\fP のディレクトリ部分がディレクトリでない。
+.TP 
+\fBEOVERFLOW\fP
+いくつかの値が大き過ぎて、返り値の構造体で表現できない。
+.SH 準拠
+Linux 固有である。 Linux の \fBstatfs\fP()  は 4.4BSD のものに影響を受けている。
+(しかし同じ構造体を使用しているわけではない)
+.SH 注意
+元々の Linux の \fBstatfs\fP() と \fBfstatfs\fP() システムコールは
+非常に大きなファイルサイズを念頭に入れて設計されていなかった。
+その後、Linux 2.6 で、新しい構造体 \fIstatfs64\fP を使用する
+新しいシステムコール \fBstatfs64\fP() と \fBfstatfs64\fP() が追加された。
+新しい構造体は元の \fIstatfs\fP 構造体と同じフィールドを持つが、
+いろいろなフィールドのサイズが大きなファイルサイズに対応できるように
+増やされている。 glibc の \fBstatfs\fP() と \fBfstatfs\fP() のラッパー関数は
+カーネルによるこれらの違いを吸収している。
+
+\fI<sys/vfs.h>\fP しか持たないシステムもあり、 \fI<sys/statfs.h>\fP
+も持っているシステムもある。 前者は後者をインクルードするので、 前者をインクルードするのが良いと考えられる。
+
+LSB ではライブラリコール \fBstatfs\fP(), \fBfstatfs\fP()  を非推奨として、代わりに \fBstatvfs\fP(2),
+\fBfstatvfs\fP(2)  を使うように指示している。
+.SS "f_fsid フィールド"
+Solaris, Irix, POSIX にはシステムコール \fBstatvfs\fP(2)  があり、 \fIstruct statvfs\fP を返す
+(\fI<sys/statvfs.h>\fP で定義されている)。 この構造体には、 \fIunsigned long\fP \fIf_fsid\fP
+が含まれている。 Linux, SunOS, HP\-UX, 4.4BSD にはシステムコール \fBstatfs\fP()  があり、 \fIstruct
+statfs\fP を返す (\fI<sys/vfs.h>\fP で定義されている)。 この構造体には \fIfsid_t\fP \fIf_fsid\fP,
+が含まれており、 \fIfsid_t\fP は \fIstruct { int val[2]; }\fP と定義されている。 FreeBSD
+でも同じであるが、インクルードファイル \fI<sys/mount.h>\fP を使う。
+
+\fIf_fsid\fP はあるランダムな値を持ち、 (\fIf_fsid\fP,\fIino\fP)  という 1 組の値でファイルを一意に決定できるようにする、
+というのが基本的な考え方である。 いくつかの OS では、デバイス番号 (の変種) を使ったり、
+デバイス番号とファイルシステムタイプを組み合わせて使ったりしている。 OS の中には \fIf_fsid\fP
+フィールドの取得をスーパーユーザに限定しているものもある (非特権ユーザが取得すると 0 となる)。 NFS でエクスポートされる場合、
+このフィールドがファイルシステムのファイルハンドルで使われており、 この値を提供するとセキュリティ上の問題がある。
+.LP
+いくつかの OS では、 \fIfsid\fP を \fBsysfs\fP(2)  システムコールの第 2 引き数として使用できる。
+.SH 関連項目
+\fBstat\fP(2), \fBstatvfs\fP(2), \fBpath_resolution\fP(7)
diff --git a/draft/man2/swapon.2 b/draft/man2/swapon.2
new file mode 100644 (file)
index 0000000..742b697
--- /dev/null
@@ -0,0 +1,129 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified by Michael Haardt <michael@moria.de>
+.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1995-07-22 by Michael Chastain <mec@duracef.shout.net>
+.\" Modified 1995-07-23 by aeb
+.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 1998-09-08 by aeb
+.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified 2004-10-10 by aeb
+.\" 2004-12-14 mtk, Anand Kumria: added new errors
+.\" 2007-06-22 Ivana Varekova <varekova@redhat.com>, mtk
+.\"     Update text describing limit on number of swap files.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SWAPON 2 2010\-11\-15 Linux "Linux Programmer's Manual"
+.SH 名前
+swapon, swapoff \- ファイル/デバイスへのスワップを開始/停止する
+.SH 書式
+\fB#include <unistd.h>\fP
+.br
+\fB#include <asm/page.h> /* PAGE_SIZE を見つけるため */\fP
+.br
+\fB#include <sys/swap.h>\fP
+.sp
+\fBint swapon(const char *\fP\fIpath\fP\fB, int \fP\fIswapflags\fP\fB);\fP
+.br
+\fBint swapoff(const char *\fP\fIpath\fP\fB);\fP
+.SH 説明
+\fBswapon\fP()  は \fIpath\fP で指定されたファイルやブロック・デバイスにスワップ領域を設定する。 \fBswapoff\fP()  は
+\fIpath\fP で指定されたファイルやブロック・デバイスへのスワップを停止する。
+.PP
+\fBswapon\fP() の \fIswapflags\fP 引き数に \fBSWAP_FLAG_PREFER\fP フラグが指定された場合、
+新しいスワップ領域はデフォルトよりも高い優先度を持つ。
+優先度は以下のように変換されて \fIswapflags\fP に指定する。
+.br
+.sp
+\fI(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK\fP
+.br
+.PP
+\fBSWAP_FLAG_DISCARD\fP フラグが \fBswapon\fP() の \fIswapflags\fP 引き数に指定された場合、
+スワップデバイスが破棄 (discard) 操作や trim 操作をサポートしている場合には、
+解放されたスワップページは再利用される前に破棄される
+(これにより、SSD (Solid State Device) によっては性能が向上することがあるが、
+たいていは性能の向上はない)。
+「注意」も参照のこと。
+.PP
+これらの関数は特権プロセス (\fBCAP_SYS_ADMIN\fP ケーパビリティ (capability) を持つプロセス) のみが使用できる。
+.SS 優先度
+それぞれのスワップ領域は高 (high) と低 (low) のどちらかの優先度を持つ。 デフォルトの優先度は低である。
+低い優先度の領域において、新しい領域は古い領域よりさらに低い 優先度を持つ。
+.PP
+\fIswapflags\fP が設定されたものは全て高い優先度となり、デフォルトよりも高い優先度を持つ。 使用者はそれらに負でない値が指定できる。
+大きな数字は高い優先度を意味する。
+.PP
+高い優先度の領域から順にスワップ・ページとして使用される。 より低い優先度の領域を使用する前により高い優先度の
+領域を使い切る。もし二つ以上の領域が同じ優先度を持ち、 使える中で一番高い優先度であれば、それらのページは間で ラウンド・ロビン方式で配分される。
+.PP
+Linux 1.3.6 において、カーネルは通常はこれらの規則に従っている。 しかし例外も存在している。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEBUSY\fP
+(\fBswapon\fP()  において) 指定された \fIpath\fP が既にスワップ領域として使用されている。
+.TP 
+\fBEINVAL\fP
+ファイル \fIpath\fP は存在するが、通常のファイルもブロック・デバイスも参照していない。 または \fBswapon\fP()  において、指定された
+path のファイルが有効なスワップの署名 (signature) を 含んでいないか、tmpfs のようなインメモリ (in\-memory)
+のファイルシステム 上にある。 または \fBswapoff\fP()  において、 \fIpath\fP が現在のところスワップ領域でない。
+.TP 
+\fBENFILE\fP
+オープンされたファイルの総数がシステム全体の上限に達していた。
+.TP 
+\fBENOENT\fP
+ファイル \fIpath\fP が存在しない。
+.TP 
+\fBENOMEM\fP
+スワップを開始するのに十分なメモリーがシステムにない。
+.TP 
+\fBEPERM\fP
+使用者が \fBCAP_SYS_ADMIN\fP ケーパビリティを持っていない。 もしくは、最大数のスワップファイルがすでに使用されている
+(下記の「注意」の節を参照)。
+.SH 準拠
+これらの関数は Linux 特有であり、移植を意図したプログラムでは 使用してはいけない。 二番目の \fIswapflags\fP 引き数は Linux
+1.3.2 から導入された。
+.SH 注意
+パーティションやパスは \fBmkswap\fP(8)  によって準備されていなければならない。
+
+使用できるスワップファイルの数には上限があり、その上限は カーネル定数 \fBMAX_SWAPFILES\fP で定義される。
+\fBMAX_SWAPFILES\fP の値は、カーネル 2.4.10 より前では 8、 カーネル 2.4.10 以降では 32 である。 カーネル
+2.6.18 以降では、カーネルが \fBCONFIG_MIGRATION\fP オプションを有効にして作成された場合、 この上限が 2 少ない値 (つまり
+30) となる (このカーネルでは、 \fBmbind\fP(2)  と \fBmigrate_pages\fP(2)
+のページ・マイグレーション機能用にスワップ・テーブルのエントリーが 二つ予約される)。 カーネル 2.6.32 以降では、カーネルが
+\fBCONFIG_MEMORY_FAILURE\fP オプションを有効にして作成された場合、 この上限がさらに 1 少ない値となる。
+
+.\" To be precise: 2.6.35.5
+スワップページの破棄は、カーネル 2.6.29 で導入され、その後カーネル 2.6.36 で
+\fBSWAP_FLAG_DISCARD\fP フラグが指定された場合にだけ実行されるようになったが、
+今でも、このフラグビットが指定されていない場合であっても、
+\fBswapon\fP が呼び出された際にスワップ領域全体の破棄が行われる。
+.SH 関連項目
+\fBmkswap\fP(8), \fBswapoff\fP(8), \fBswapon\fP(8)
index 7570f3d..0e76da6 100644 (file)
@@ -53,20 +53,20 @@ _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTEND
 .RE
 .ad b
 .SH 説明
-\fBsymlink\fP()  ã\81¯ \fIoldpath\fP ã\81¨ã\81\84ã\81\86æ\96\87å­\97å\88\97ã\82\92ã\83\95ã\82¡ã\82¤ã\83«ã\81®å\86\85容ã\81¨ã\81\97ã\81¦æ\8c\81ã\81¤ \fInewpath\fP ã\81¨ã\81\84ã\81\86ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯
+\fBsymlink\fP()  は \fIoldpath\fP という文字列をファイルの内容として持つ \fInewpath\fP というシンボリックリンク
 (symbolic link) を作成する。
 
\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81¯å®\9fè¡\8cæ\99\82ã\81«è§£é\87\88ã\81\95ã\82\8cã\80\81 ã\83ªã\83³ã\82¯ã\81®å\86\85容ã\81§ã\83\91ã\82¹ã\82\92ç½®ã\81\8dæ\8f\9bã\81\88ã\81¦ã\80\81ã\81\9dã\81®ã\83\91ã\82¹ã\82\92辿ã\82\8bã\81\93ã\81¨ã\81§ã\80\81 ã\83\95ã\82¡ã\82¤ã\83«ã\82\84ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81«å\88°é\81\94ã\81\99ã\82\8bã\80\82
+シンボリックリンクは実行時に解釈され、 リンクの内容でパスを置き換えて、そのパスを辿ることで、 ファイルやディレクトリに到達する。
 
\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81¯ã\83\91ã\82¹ã\81®é\83¨å\88\86ã\81« \fI..\fP ã\82\92å\90«ã\82\80ã\81\8bã\82\82ã\81\97ã\82\8cã\81ªã\81\84ã\80\82ã\81\93ã\82\8cã\81¯ (ã\82\82ã\81\97ã\83ªã\83³ã\82¯ã\81®æ\9c\80å\88\9dã\81«ä½¿ç\94¨ã\81\95ã\82\8cã\81\9få ´å\90\88ã\81¯) ã\83ªã\83³ã\82¯ã\81®
+シンボリックリンクはパスの部分に \fI..\fP を含むかもしれない。これは (もしリンクの最初に使用された場合は) リンクの
 存在するディレクトリの親ディレクトリが参照される。
 
\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81¯ (ã\82½ã\83\95ã\83\88ã\83»リンク (soft link) とも呼ばれ)  存在するファイルを指しているかもしれないし、
\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83ªã\83³ã\82¯ã\81¯ (ã\82½ã\83\95ã\83\88リンク (soft link) とも呼ばれ)  存在するファイルを指しているかもしれないし、
 存在しないファイルを指しているかもしれない; 後者の場合は壊れたリンク (dangling link) とも呼ばれる。
 
\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81®è¨±å\8f¯ (permission) ã\81¯ç\84¡æ\84\8få\91³ã\81§ã\81\82ã\82\8b; ã\83ªã\83³ã\82¯ã\82\92追跡ã\81\99ã\82\8bå ´å\90\88ã\81«ã\81¯æ\89\80æ\9c\89権 (ownership) ã\81¯ç\84¡è¦\96ã\81\95ã\82\8cã\82\8bã\80\82
\81\9fã\81 ã\81\97ã\80\81ã\83ªã\83³ã\82¯ã\81®å\89\8aé\99¤ã\82\84å\90\8då\89\8dã\81®å¤\89æ\9b´ã\81\8cè¦\81æ±\82ã\81\95ã\82\8cã\80\81ã\81\8bã\81¤ã\83ªã\83³ã\82¯ã\81\8cå­\98å\9c¨ã\81\99ã\82\8b ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81«ã\82¹ã\83\86ã\82£ã\83\83ã\82­ã\83¼ã\83»ã\83\93ã\83\83ã\83\88 (sticky bit)
-(\fBS_ISVTX\fP)  が設定されている場合には、所有権のチェックが行われる。
+シンボリックリンクの許可 (permission) は無意味である; リンクを追跡する場合には所有権 (ownership) は無視される。
\81\9fã\81 ã\81\97ã\80\81ã\83ªã\83³ã\82¯ã\81®å\89\8aé\99¤ã\82\84å\90\8då\89\8dã\81®å¤\89æ\9b´ã\81\8cè¦\81æ±\82ã\81\95ã\82\8cã\80\81ã\81\8bã\81¤ã\83ªã\83³ã\82¯ã\81\8cå­\98å\9c¨ã\81\99ã\82\8b ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81«ã\82¹ã\83\86ã\82£ã\83\83ã\82­ã\83¼ã\83\93ã\83\83ã\83\88 (sticky bit)  (\fBS_ISVTX\fP)
+が設定されている場合には、所有権のチェックが行われる。
 
 \fInewpath\fP が存在する場合には上書きは\fIされない\fP。
 .SH 返り値
@@ -87,7 +87,7 @@ _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTEND
 I/O エラーが発生した。
 .TP 
 \fBELOOP\fP
-\fInewpath\fP ã\82\92解決ã\81\99ã\82\8bé\9a\9bã\81«é\81­é\81\87ã\81\97ã\81\9fã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»ã\83ªã\83³ã\82¯ã\81\8cå¤\9aé\81\8eã\81\8eã\82\8bã\80\82
+\fInewpath\fP を解決する際に遭遇したシンボリックリンクが多過ぎる。
 .TP 
 \fBENAMETOOLONG\fP
 \fIoldpath\fP または \fInewpath\fP が長過ぎる。
@@ -99,16 +99,16 @@ I/O エラーが発生した。
 十分なカーネルメモリーがない。
 .TP 
 \fBENOSPC\fP
\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bã\83\87ã\83\90ã\82¤ã\82¹ã\81«æ\96°ã\81\97ã\81\84ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83»ã\82¨ã\83³ã\83\88ã\83ªã\82\92 ä½\9cæ\88\90ã\81\99ã\82\8bã\81\9fã\82\81ã\81®ç©ºã\81\8dã\81\8cã\81ªã\81\84ã\80\82
+そのファイルを含んでいるデバイスに新しいディレクトリエントリを 作成するための空きがない。
 .TP 
 \fBENOTDIR\fP
 \fInewpath\fP に含まれるディレクトリ部分が、実際には、ディレクトリではない。
 .TP 
 \fBEPERM\fP
-\fInewpath\fP ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83  (file system) ã\81\8c ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯ã\83»リンクの作成をサポートしていない。
+\fInewpath\fP ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83  (file system) ã\81\8c ã\82·ã\83³ã\83\9cã\83ªã\83\83ã\82¯リンクの作成をサポートしていない。
 .TP 
 \fBEROFS\fP
-\fInewpath\fP ã\81\8c読ã\81¿è¾¼ã\81¿å°\82ç\94¨ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81«å­\98å\9c¨ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82
+\fInewpath\fP が読み込み専用のファイルシステムに存在している。
 .SH 準拠
 .\" SVr4 documents additional error codes EDQUOT and ENOSYS.
 .\" See
@@ -118,7 +118,7 @@ SVr4, 4.3BSD, POSIX.1\-2001.
 .SH 注意
 \fIoldpath\fP についてのチェックは行なわれない。
 
-symlink ã\81«ã\82\88ã\81£ã\81¦å\8f\82ç\85§ã\81\95ã\82\8cã\82\8bå\90\8då\89\8dã\82\92å\89\8aé\99¤ã\81\99ã\82\8bã\81¨ (ã\81\9dã\82\8cã\81\8cä»\96ã\81«ã\83\8fã\83¼ã\83\89ã\83»ã\83ªã\83³ã\82¯ (hard link) ã\82\92æ\8c\81ã\81\9fã\81ªã\81\91ã\82\8cã\81°) å®\9fé\9a\9bã\81«ã\83\95ã\82¡ã\82¤ã\83«ã\81\8cå\89\8aé\99¤ã\81\95ã\82\8cã\82\8bã\80\82
+symlink によって参照される名前を削除すると (それが他にハードリンク (hard link) を持たなければ) 実際にファイルが削除される。
 この動作が望んだものでない場合は、 \fBlink\fP(2)  を使用すること。
 .SH 関連項目
 \fBln\fP(1), \fBlchown\fP(2), \fBlink\fP(2), \fBlstat\fP(2), \fBopen\fP(2), \fBreadlink\fP(2),
diff --git a/draft/man2/syscalls.2 b/draft/man2/syscalls.2
new file mode 100644 (file)
index 0000000..aa7cf27
--- /dev/null
@@ -0,0 +1,641 @@
+.\" Copyright (C) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
+.\" with some input from Stepan Kasal <kasal@ucw.cz>
+.\"
+.\" Some content retained from an earlier version of this page:
+.\" Copyright (C) 1998 Andries Brouwer (aeb@cwi.nl)
+.\" Modifications for 2.2 and 2.4 Copyright (C) 2002 Ian Redfern
+.\" <redferni@logica.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SYSCALLS 2 2012\-03\-23 Linux "Linux Programmer's Manual"
+.SH 名前
+syscalls \- Linux のシステムコール
+.SH 書式
+Linux のシステムコール。
+.SH 説明
+システムコールは、アプリケーションと Linux カーネルとの間の 基本的なインタフェースである。
+.SS システムコールとライブラリのラッパー関数
+システムコールは一般には直接起動されず、 glibc (や他の何らかのライブラリ)  経由で起動される。 システムコールの直接起動については、詳細は
+\fBintro\fP(2)  を参照のこと。 いつもという訳ではないが、普通は、ラッパー関数の名前はその関数が起動する システムコールの名前と同じである。
+例えば、glibc には \fBtruncate\fP()  という関数があり、この関数は "truncate" システムコールを起動する。
+
+たいていの場合、glibc のラッパー関数はかなり簡単なもので、 システムコールを起動する前に引き数を適切なレジスタにコピーし、
+システムコールが返った後は \fIerrno\fP を適切に設定する以外は、ほとんど処理を行わない (これらは、ラッパー関数が提供されていない場合に
+システムコールを起動するのに使用する \fBsyscall\fP(2)  により実行される処理と同じである)。 [注意]
+システムコールは失敗を示すのに負のエラー番号を呼び出し元に返す。 失敗が起こった際には、ラッパー関数は返されたエラー番号を反転して
+(正の値に変換し)、それを \fIerrno\fP にコピーし、ラッパー関数の呼び出し元に \-1 を返す。
+
+しかしながら、時には、ラッパー関数がシステムコールを起動する前に 何らかの追加の処理を行う場合がある。 例えば、現在、 二つの関連するシステムコール
+\fBtruncate\fP(2)  と \fBtruncate64\fP(2)  があり、glibc のラッパー関数 \fBtruncate\fP()
+は、カーネルがこれらのシステムコールのうちどちらを提供しているかをチェックし、 どちらを採用するかを決定する。
+.SS システムコールのリスト
+以下は、ほとんどのプラットフォームに共通するシステムコールのリストである。 このリストで、 \fIKernel\fP の列は、Linux 2.2
+以降で登場したシステムコールが 登場したカーネルバージョンを示す。 以下に詳細な説明を記す。
+.IP * 3
+カーネルバージョンがない場合、そのシステムコールは カーネル 1.0 もしくはそれ以前に登場した。
+.IP *
+システムコールに "1.2" と書かれている場合、 そのシステムコールがおそらくバージョン 1.1.x のカーネルで登場し、 安定版のカーネルでは
+1.2 で初めて登場したことを意味する。 (バージョン 1.2 のカーネルは、カーネル 1.0.6 から分岐し、 バージョン 1.1.x
+の不安定版のカーネル系列として開発された。)
+.IP *
+.\" Was kernel 2.0 started from a branch of 1.2.10?
+.\" At least from the timestamps of the tarballs of
+.\" of 1.2.10 and 1.3.0, that's how it looks, but in
+.\" fact the diff doesn't seem very clear, the
+.\" 1.3.0 .tar.bz is much bigger (2.0 MB) than the
+.\" 1.2.10 .tar.bz2 (1.8 MB), and AEB points out the
+.\" timestamps of some files in 1.3.0 seem to be older
+.\" than those in 1.2.10.  All of this suggests
+.\" that there might not have been a clean branch point.
+システムコールに "2.0" と書かれている場合、 そのシステムコールがおそらくバージョン 1.3.x のカーネルで登場し、 安定版のカーネルでは
+2.0 で初めて登場したことを意味する。 (バージョン 2.0 のカーネルは、バージョン 1.2.10 あたりのカーネル 1.2.x
+から分岐し、バージョン 1.3.x の不安定版のカーネル系列として開発された。)
+.IP *
+システムコールに "2.2" と書かれている場合、 そのシステムコールがおそらくバージョン 2.1.x のカーネルで登場し、 安定版のカーネルでは
+2.2.0 で初めて登場したことを意味する。 (バージョン 2.2 のカーネルは、カーネル 2.0.21 から分岐し、 バージョン 2.1.x
+の不安定版のカーネル系列として開発された。)
+.IP *
+システムコールに "2.4" と書かれている場合、 そのシステムコールがおそらくバージョン 2.3.x のカーネルで登場し、 安定版のカーネルでは
+2.4.0 で初めて登場したことを意味する。 (バージョン 2.4 のカーネルは、カーネル 2.2.8 から分岐し、 バージョン 2.3.x
+の不安定版のカーネル系列として開発された。)
+.IP *
+システムコールに "2.6" と書かれている場合、 そのシステムコールがおそらくバージョン 2.5.x のカーネルで登場し、 安定版のカーネルでは
+2.6.0 で初めて登場したことを意味する。 (バージョン 2.6 のカーネルは、カーネル 2.4.15 から分岐し、 バージョン 2.5.x
+の不安定版のカーネル系列として開発された。)
+.IP *
+カーネル 2.6.0 から開発モデルは変更され、新しいシステムコールが
+個々の 2.6.x のリリースでも登場するようになった。
+その場合、このリストでは、システムコールが登場した
+厳密なバージョン番号が記載されている。この慣習は、カーネル 2.6.39 の
+後継となるバージョン 3.x 系列のカーネルでも継続されている。
+.IP *
+前の安定版カーネル系列から分岐した後に安定版カーネル系列にシステムコール が追加された場合、以前の安定版カーネル系列にそのシステムコールが 移植
+(backport) されることがある。 例えば、2.6.x で登場したシステムコールのいくつかは、 2.4.15 以降の 2.4.x リリースにも
+backport された。 この場合、システムコールが登場したバージョンとして、 両方の安定版系列のバージョンが記載されている。
+.PP
+.\"
+.\" Looking at scripts/checksyscalls.sh in the kernel source is
+.\" instructive about i386 specifics.
+.\"
+カーネル 3.1 で利用可能なシステムコールのリストを以下に示す
+(それ以前のカーネルでだけ利用可能なものも少数だが含まれる):
+.TS
+l l l
+---
+l l l.
+\fBSystem call\fP      \fBKernel\fP    \fBNotes\fP
+
+\fB_llseek\fP(2)       1.2
+\fB_newselect\fP(2)
+\fB_sysctl\fP(2)
+\fBaccept\fP(2)
+\fBaccept4\fP(2)       2.6.28
+\fBaccess\fP(2)
+\fBacct\fP(2)
+\fBadd_key\fP(2)       2.6.11
+\fBadjtimex\fP(2)
+\fBalarm\fP(2)
+\fBalloc_hugepages\fP(2)       2.5.36  2.5.44 で削除
+\fBbdflush\fP(2)               Linux 2.6 以降では非推奨
+               (何も行わない)
+\fBbind\fP(2)
+\fBbrk\fP(2)
+\fBcacheflush\fP(2)    1.2     Not on i386
+\fBcapget\fP(2)        2.2
+\fBcapset\fP(2)        2.2
+\fBchdir\fP(2)
+\fBchmod\fP(2)
+\fBchown\fP(2)
+\fBchown32\fP(2)       2.4
+\fBchroot\fP(2)
+\fBclock_adjtime\fP(2) 2.6.39
+\fBclock_getres\fP(2)  2.6
+\fBclock_gettime\fP(2) 2.6
+\fBclock_nanosleep\fP(2)       2.6
+\fBclock_settime\fP(2) 2.6
+\fBclone\fP(2)
+\fBclose\fP(2)
+\fBconnect\fP(2)
+\fBcreat\fP(2)
+\fBcreate_module\fP(2) 2.6 で削除
+\fBdelete_module\fP(2)
+\fBdup\fP(2)
+\fBdup2\fP(2)
+\fBdup3\fP(2)  2.6.27
+\fBepoll_create\fP(2)  2.6
+\fBepoll_create1\fP(2) 2.6.27
+\fBepoll_ctl\fP(2)     2.6
+\fBepoll_pwait\fP(2)   2.6.19
+\fBepoll_wait\fP(2)    2.6
+\fBeventfd\fP(2)       2.6.22
+\fBeventfd2\fP(2)      2.6.27
+\fBexecve\fP(2)
+\fBexit\fP(2)
+\fBexit_group\fP(2)    2.6
+\fBfaccessat\fP(2)     2.6.16
+\fBfadvise64\fP(2)     2.6
+.\" Implements \fBposix_fadvise\fP(2)
+\fBfadvise64_64\fP(2)  2.6
+\fBfallocate\fP(2)     2.6.23
+\fBfanotify_init\fP(2) 2.6.37
+\fBfanotify_mark\fP(2) 2.6.37
+.\" The fanotify calls were added in Linux 2.6.36,
+.\" but disabled while the API was finalized.
+\fBfchdir\fP(2)
+\fBfchmod\fP(2)
+\fBfchmodat\fP(2)      2.6.16
+\fBfchown\fP(2)
+\fBfchown32\fP(2)      2.4
+\fBfchownat\fP(2)      2.6.16
+\fBfcntl\fP(2)
+\fBfcntl64\fP(2)       2.4
+\fBfdatasync\fP(2)
+\fBfgetxattr\fP(2)     2.6; 2.4.18
+\fBflistxattr\fP(2)    2.6; 2.4.18
+\fBflock\fP(2) 2.0
+\fBfork\fP(2)
+\fBfree_hugepages\fP(2)        2.5.36  2.5.44 で削除
+\fBfremovexattr\fP(2)  2.6; 2.4.18
+\fBfsetxattr\fP(2)     2.6; 2.4.18
+\fBfstat\fP(2)
+\fBfstat64\fP(2)       2.4
+\fBfstatat64\fP(2)     2.6.16
+\fBfstatfs\fP(2)
+\fBfstatfs64\fP(2)     2.6
+\fBfsync\fP(2)
+\fBftruncate\fP(2)
+\fBftruncate64\fP(2)   2.4
+\fBfutex\fP(2) 2.6
+\fBfutimesat\fP(2)     2.6.16
+\fBget_kernel_syms\fP(2)       2.6 で削除
+\fBget_mempolicy\fP(2) 2.6.6
+\fBget_robust_list\fP(2)       2.6.17
+\fBget_thread_area\fP(2)       2.6
+\fBgetcpu\fP(2)        2.6.19
+\fBgetcwd\fP(2)        2.2
+\fBgetdents\fP(2)      2.0
+\fBgetdents64\fP(2)    2.4
+\fBgetegid\fP(2)
+\fBgetegid32\fP(2)     2.4
+\fBgeteuid\fP(2)
+\fBgeteuid32\fP(2)     2.4
+\fBgetgid\fP(2)
+\fBgetgid32\fP(2)      2.4
+\fBgetgroups\fP(2)
+\fBgetgroups32\fP(2)   2.4
+\fBgetitimer\fP(2)
+\fBgetpeername\fP(2)
+\fBgetpagesize\fP(2)   2.0     Not on i386
+\fBgetpgid\fP(2)
+\fBgetpgrp\fP(2)
+\fBgetpid\fP(2)
+\fBgetppid\fP(2)
+\fBgetpriority\fP(2)
+\fBgetresgid\fP(2)     2.2
+\fBgetresgid32\fP(2)   2.4
+\fBgetresuid\fP(2)     2.2
+\fBgetresuid32\fP(2)   2.4
+\fBgetrlimit\fP(2)
+\fBgetrusage\fP(2)
+\fBgetsid\fP(2)        2.0
+\fBgetsockname\fP(2)
+\fBgetsockopt\fP(2)
+\fBgettid\fP(2)        2.4.11
+\fBgettimeofday\fP(2)
+\fBgetuid\fP(2)
+\fBgetuid32\fP(2)      2.4
+.\" \fBgetunwind\fP(2) 2.4.8   ia64; DEPRECATED
+\fBgetxattr\fP(2)      2.6; 2.4.18
+\fBinit_module\fP(2)
+\fBinotify_add_watch\fP(2)     2.6.13
+\fBinotify_init\fP(2)  2.6.13
+\fBinotify_init1\fP(2) 2.6.27
+\fBinotify_rm_watch\fP(2)      2.6.13
+\fBio_cancel\fP(2)     2.6
+\fBio_destroy\fP(2)    2.6
+\fBio_getevents\fP(2)  2.6
+\fBio_setup\fP(2)      2.6
+\fBio_submit\fP(2)     2.6
+\fBioctl\fP(2)
+\fBioperm\fP(2)
+\fBiopl\fP(2)
+\fBioprio_get\fP(2)    2.6.13
+\fBioprio_set\fP(2)    2.6.13
+\fBipc\fP(2)
+.\" Implements System V IPC calls
+\fBkexec_load\fP(2)    2.6.13
+.\" The entry in the syscall table was reserved starting in 2.6.7
+.\" Was named sys_kexec_load() from 2.6.7 to 2.6.16
+\fBkeyctl\fP(2)        2.6.11
+\fBkill\fP(2)
+\fBlchown\fP(2)        2.2
+\fBlchown32\fP(2)      2.4
+\fBlgetxattr\fP(2)     2.6; 2.4.18
+\fBlink\fP(2)
+\fBlinkat\fP(2)        2.6.16
+\fBlisten\fP(2)
+\fBlistxattr\fP(2)     2.6; 2.4.18
+\fBllistxattr\fP(2)    2.6; 2.4.18
+\fBlookup_dcookie\fP(2)        2.6
+\fBlremovexattr\fP(2)  2.6; 2.4.18
+\fBlseek\fP(2)
+\fBlsetxattr\fP(2)     2.6; 2.4.18
+\fBlstat\fP(2)
+\fBlstat64\fP(2)       2.4
+\fBmadvise\fP(2)       2.4
+\fBmadvise1\fP(2)      2.4
+\fBmbind\fP(2) 2.6.6
+.\" \fBmemory_ordering\fP(2)   ???     Sparc64
+\fBmigrate_pages\fP(2) 2.6.16
+\fBmincore\fP(2)       2.4
+\fBmkdir\fP(2)
+\fBmkdirat\fP(2)       2.6.16
+\fBmknod\fP(2)
+\fBmknodat\fP(2)       2.6.16
+\fBmlock\fP(2)
+\fBmlockall\fP(2)
+\fBmmap\fP(2)
+\fBmmap2\fP(2) 2.4
+\fBmodify_ldt\fP(2)
+\fBmount\fP(2)
+\fBmove_pages\fP(2)    2.6.18
+\fBmprotect\fP(2)
+\fBmq_getsetattr\fP(2) 2.6.6
+.\" Implements \fBmq_getattr\fP(3) and \fBmq_setattr\fP(3)
+\fBmq_notify\fP(2)     2.6.6
+\fBmq_open\fP(2)       2.6.6
+\fBmq_timedreceive\fP(2)       2.6.6
+\fBmq_timedsend\fP(2)  2.6.6
+\fBmq_unlink\fP(2)
+\fBmremap\fP(2)        2.0
+\fBmsgctl\fP(2)
+\fBmsgget\fP(2)
+\fBmsgrcv\fP(2)
+\fBmsgsnd\fP(2)
+\fBmsync\fP(2) 2.0
+.\" \fBmultiplexer\fP(2)       ??      __NR_multiplexer reserved on
+.\"            PowerPC, but unimplemented?
+\fBmunlock\fP(2)
+\fBmunlockall\fP(2)
+\fBmunmap\fP(2)
+\fBname_to_handle_at\fP(2)     2.6.39
+\fBnanosleep\fP(2)     2.0
+\fBnfsservctl\fP(2)    2.2     3.1 で削除
+\fBnice\fP(2)
+\fBoldfstat\fP(2)
+\fBoldlstat\fP(2)
+\fBoldolduname\fP(2)
+\fBoldstat\fP(2)
+\fBolduname\fP(2)
+\fBopen\fP(2)
+\fBopen_by_handle_at\fP(2)     2.6.39
+\fBopenat\fP(2)        2.6.16
+\fBpause\fP(2)
+\fBpciconfig_iobase\fP(2)      2.2.15; 2.4     Not on i386
+.\" Alpha, PowerPC, ARM; not i386
+\fBpciconfig_read\fP(2)        2.0.26; 2.2     Not on i386
+.\" , PowerPC, ARM; not i386
+\fBpciconfig_write\fP(2)       2.0.26; 2.2     Not on i386
+.\" , PowerPC, ARM; not i386
+\fBperf_event_open\fP(2)       2.6.31  Was called perf_counter_open()
+               in 2.6.31; renamed in 2.6.32
+\fBpersonality\fP(2)   1.2
+.\" \fBperfctr\fP(2)   ???     Sparc32, Sparc64
+.\" \fBperfmonctl\fP(2)        ???     ia64
+\fBpipe\fP(2)
+\fBpipe2\fP(2) 2.6.27
+\fBpivot_root\fP(2)    2.4
+\fBpoll\fP(2)  2.2
+\fBppoll\fP(2) 2.6.16
+\fBprctl\fP(2) 2.2
+\fBpread64\fP(2)               Added as "pread" in 2.2;
+               renamed "pread64" in 2.6
+\fBpreadv\fP(2)        2.6.30
+\fBprlimit\fP(2)       2.6.36
+\fBprocess_vm_readv(2)\fP      3.2
+\fBprocess_vm_writev(2)\fP     3.2
+\fBpselect6\fP(2)      2.6.16
+.\" Implements \fBpselect\fP(2)
+\fBptrace\fP(2)
+\fBpwrite64\fP(2)              Added as "pwrite" in 2.2;
+               renamed "pwrite64" in 2.6
+\fBpwritev\fP(2)       2.6.30
+\fBquery_module\fP(2)  2.2     2.6 で削除
+\fBquotactl\fP(2)
+\fBread\fP(2)
+\fBreadahead\fP(2)     2.4.13
+\fBreaddir\fP(2)
+.\" Supersedes \fBgetdents\fP(2)
+\fBreadlink\fP(2)
+\fBreadlinkat\fP(2)    2.6.16
+\fBreadv\fP(2) 2.0
+\fBreboot\fP(2)
+\fBrecv\fP(2)
+\fBrecvfrom\fP(2)
+\fBrecvmsg\fP(2)
+\fBrecvmmsg\fP(2)      2.6.33
+\fBremap_file_pages\fP(2)      2.6
+\fBremovexattr\fP(2)   2.6; 2.4.18
+\fBrename\fP(2)
+\fBrenameat\fP(2)      2.6.16
+\fBrequest_key\fP(2)   2.6.11
+\fBrestart_syscall\fP(2)       2.6
+\fBrmdir\fP(2)
+\fBrt_sigaction\fP(2)  2.2
+\fBrt_sigpending\fP(2) 2.2
+\fBrt_sigprocmask\fP(2)        2.2
+\fBrt_sigqueueinfo\fP(2)       2.2
+\fBrt_sigreturn\fP(2)  2.2
+\fBrt_sigsuspend\fP(2) 2.2
+\fBrt_sigtimedwait\fP(2)       2.2
+\fBrt_tgsigqueueinfo\fP(2)     2.6.31
+\fBsched_get_priority_max\fP(2)        2.0
+\fBsched_get_priority_min\fP(2)        2.0
+\fBsched_getaffinity\fP(2)     2.6
+\fBsched_getparam\fP(2)        2.0
+\fBsched_getscheduler\fP(2)    2.0
+\fBsched_rr_get_interval\fP(2) 2.0
+\fBsched_setaffinity\fP(2)     2.6
+\fBsched_setparam\fP(2)        2.0
+\fBsched_setscheduler\fP(2)    2.0
+\fBsched_yield\fP(2)   2.0
+\fBselect\fP(2)
+\fBsemctl\fP(2)
+\fBsemget\fP(2)
+\fBsemop\fP(2)
+\fBsemtimedop\fP(2)    2.6; 2.4.22
+\fBsend\fP(2)
+\fBsendfile\fP(2)      2.2
+\fBsendfile64\fP(2)    2.6; 2.4.19
+\fBsendmmsg\fP(2)      3.0
+\fBsendmsg\fP(2)
+\fBsendto\fP(2)
+\fBset_mempolicy\fP(2) 2.6.6
+\fBset_robust_list\fP(2)       2.6.17
+\fBset_thread_area\fP(2)       2.6
+\fBset_tid_address\fP(2)       2.6
+\fBset_zone_reclaim\fP(2)      2.6.13  2.6.16 で削除 (ユーザ空間に
+               公開されたことはない)
+.\" See http://lkml.org/lkml/2005/8/1/83
+.\" "[PATCH] remove sys_set_zone_reclaim()"
+\fBsetdomainname\fP(2)
+\fBsetfsgid\fP(2)      1.2
+\fBsetfsgid32\fP(2)    2.4
+\fBsetfsuid\fP(2)      1.2
+\fBsetfsuid32\fP(2)    2.4
+\fBsetgid\fP(2)
+\fBsetgid32\fP(2)      2.4
+\fBsetgroups\fP(2)
+\fBsetgroups32\fP(2)   2.4
+\fBsethostname\fP(2)
+\fBsetitimer\fP(2)
+\fBsetns\fP(2) 3.0
+\fBsetpgid\fP(2)
+\fBsetpriority\fP(2)
+\fBsetregid\fP(2)
+\fBsetregid32\fP(2)    2.4
+\fBsetresgid\fP(2)     2.2
+\fBsetresgid32\fP(2)   2.4
+\fBsetresuid\fP(2)     2.2
+\fBsetresuid32\fP(2)   2.4
+\fBsetreuid\fP(2)
+\fBsetreuid32\fP(2)    2.4
+\fBsetrlimit\fP(2)
+\fBsetsid\fP(2)
+\fBsetsockopt\fP(2)
+\fBsettimeofday\fP(2)
+\fBsetuid\fP(2)
+\fBsetuid32\fP(2)      2.4
+\fBsetup\fP(2)         2.2 で削除
+\fBsetxattr\fP(2)      2.6; 2.4.18
+\fBsgetmask\fP(2)
+\fBshmat\fP(2)
+\fBshmctl\fP(2)
+\fBshmdt\fP(2)
+\fBshmget\fP(2)
+\fBshutdown\fP(2)
+\fBsigaction\fP(2)
+\fBsigaltstack\fP(2)   2.2
+\fBsignal\fP(2)
+\fBsignalfd\fP(2)      2.6.22
+\fBsignalfd4\fP(2)     2.6.27
+\fBsigpending\fP(2)
+\fBsigprocmask\fP(2)
+\fBsigreturn\fP(2)
+\fBsigsuspend\fP(2)
+\fBsocket\fP(2)
+\fBsocketcall\fP(2)
+.\" Implements BSD socket calls
+\fBsocketpair\fP(2)
+\fBsplice\fP(2)        2.6.17
+\fBspu_create\fP(2)    2.6.16  PowerPC only
+\fBspu_run\fP(2)       2.6.16  PowerPC only
+\fBssetmask\fP(2)
+\fBstat\fP(2)
+\fBstat64\fP(2)        2.4
+\fBstatfs\fP(2)
+\fBstatfs64\fP(2)      2.6
+\fBstime\fP(2)
+\fBsubpage_prot\fP(2)  2.6.25  PowerPC if CONFIG_PPC_64K_PAGES
+\fBswapoff\fP(2)
+\fBswapon\fP(2)
+\fBsymlink\fP(2)
+\fBsymlinkat\fP(2)     2.6.16
+\fBsync\fP(2)
+\fBsync_file_range\fP(2)       2.6.17
+\fBsync_file_range2\fP(2)      2.6.22  Architecture\-specific variant
+.\" PowerPC, ARM, tile
+.\" First appeared on ARM, as arm_sync_file_range(), but later renamed
+               of \fBsync_file_range\fP(2)
+.\" \fBsys_debug_setcontext\fP(2)      ???     PowerPC if CONFIG_PPC32
+\fBsyncfs\fP(2)        2.6.39
+\fBsysfs\fP(2) 1.2
+\fBsysinfo\fP(2)
+\fBsyslog\fP(2)
+.\" glibc interface is \fBklogctl\fP(3)
+\fBtee\fP(2)   2.6.17
+\fBtgkill\fP(2)        2.6
+\fBtime\fP(2)
+\fBtimer_create\fP(2)  2.6
+\fBtimer_delete\fP(2)  2.6
+\fBtimer_getoverrun\fP(2)      2.6
+\fBtimer_gettime\fP(2) 2.6
+\fBtimer_settime\fP(2) 2.6
+\fBtimerfd_create\fP(2)        2.6.25
+\fBtimerfd_gettime\fP(2)       2.6.25
+\fBtimerfd_settime\fP(2)       2.6.25
+\fBtimes\fP(2)
+\fBtkill\fP(2) 2.6; 2.4.22
+\fBtruncate\fP(2)
+\fBtruncate64\fP(2)    2.4
+\fBugetrlimit\fP(2)    2.4
+\fBumask\fP(2)
+\fBumount\fP(2)
+.\" sys_oldumount() -- __NR_umount
+\fBumount2\fP(2)       2.2
+.\" sys_umount() -- __NR_umount2
+\fBuname\fP(2)
+\fBunlink\fP(2)
+\fBunlinkat\fP(2)      2.6.16
+\fBunshare\fP(2)       2.6.16
+\fBuselib\fP(2)
+\fBustat\fP(2)
+\fButime\fP(2)
+\fButimensat\fP(2)     2.6.22
+\fButimes\fP(2)        2.2
+\fBvfork\fP(2)
+\fBvhangup\fP(2)
+\fBvm86old\fP(2)
+.\" Superseded by \fBvm86\fP(2)
+\fBvmsplice\fP(2)      2.6.17
+\fBwait4\fP(2)
+\fBwaitid\fP(2)        2.6.10
+\fBwaitpid\fP(2)
+\fBwrite\fP(2)
+\fBwritev\fP(2)        2.0
+.TE
+.PP
+i386 を含む多くのプラットフォームでは、ソケット関連のシステムコールは (glibc のラッパー関数を介してだが) すべて
+\fBsocketcall\fP(2)  経由に多重されている。 同様に、System V IPC 関連のシステムコールは \fBipc\fP(2)
+経由に多重されている。
+
+.\" __NR_afs_syscall is 53 on Linux 2.6.22/i386
+.\" __NR_break is 17 on Linux 2.6.22/i386
+.\" __NR_ftime is 35 on Linux 2.6.22/i386
+.\" __NR_getpmsg is 188 on Linux 2.6.22/i386
+.\" __NR_gtty is 32 on Linux 2.6.22/i386
+.\" __NR_idle is 112 on Linux 2.6.22/i386
+.\" __NR_lock is 53 on Linux 2.6.22/i386
+.\" __NR_madvise1 is 219 on Linux 2.6.22/i386
+.\" __NR_mpx is 66 on Linux 2.6.22/i386
+.\" Slot has been reused
+.\" __NR_prof is 44 on Linux 2.6.22/i386
+.\" __NR_profil is 98 on Linux 2.6.22/i386
+.\" __NR_putpmsg is 189 on Linux 2.6.22/i386
+.\" __NR_security is 223 on Linux 2.4/i386
+.\" __NR_security is 223 on Linux 2.4/i386; absent on 2.6/i386, present
+.\" on a couple of 2.6 architectures
+.\" __NR_stty is 31 on Linux 2.6.22/i386
+.\" The security call is for future use.
+.\" __NR_tuxcall is 184 on x86_64, also on PPC and alpha
+.\" __NR_ulimit is 58 on Linux 2.6.22/i386
+.\" __NR_vserver is 273 on Linux 2.6.22/i386
+以下のシステムコールは、システムコール・テーブルにスロットが予約されているが、
+標準のカーネルには実装されていない:
+\fBafs_syscall\fP(2), \fBbreak\fP(2), \fBftime\fP(2), \fBgetpmsg\fP(2), \fBgtty\fP(2),
+\fBidle\fP(2), \fBlock\fP(2), \fBmadvise1\fP(2), \fBmpx\fP(2), \fBphys\fP(2), \fBprof\fP(2),
+\fBprofil\fP(2), \fBputpmsg\fP(2), \fBsecurity\fP(2), \fBstty\fP(2), \fBtuxcall\fP(2),
+\fBulimit\fP(2), \fBvserver\fP(2) (\fBunimplemented\fP(2) も参照)。
+しかし、\fBftime\fP(3), \fBprofil\fP(3), \fBulimit\fP(3) はライブラリ・ルーチンとして
+実装されている。 \fBphys\fP(2) 用の場所は 2.1.116 以降では \fBumount\fP(2) 用に
+使用されている; 将来においても \fBphys\fP(2) は実装されない。
+\fBgetpmsg\fP(2) と \fBputpmsg\fP(2) は STREAMS 対応のパッチが適用された
+カーネル用であり、標準のカーネルに登場することはないかもしれない。
+.SH 注意
+.PP
+たいていは、 \fI/usr/include/asm/unistd.h\fP で定義されている番号 __NR_xxx のシステムコールのコードは、
+カーネル・ソースの \fIsys_xxx\fP()  というルーチンに書かれている (i386 における実行テーブルは
+\fI/usr/src/linux/arch/i386/kernel/entry.S\fP に書かれている)。
+しかしこれには多くの例外がある。古いシステムコールは新版に置き換えられて きたが、この置き換えはあまり体系立てて行われて来なかったからである。
+parisc, sparc, sparc64, alpha といったプロプリエタリ OS のエミュレーション
+機能があるプラットフォームでは、多くの追加システムコールがある。 mips64 には、32 ビットシステムコールのフルセットも含まれている。
+
+時間の経過とともに、いくつかのシステムコールではインタフェースの 変更が必要になってきた。
+こうした変更の理由の一つは、システムコールに渡される構造体やスカラー値 のサイズを増やす必要があることだった。
+これらの変更の結果、現在では、同様の処理を実行するが 引き数のサイズなどの詳細は異なる、一連のシステムコール群が いくつか存在する (例えば、
+\fBtruncate\fP(2)  と \fBtruncate64\fP(2))。 (すでに述べたように、
+一般にはアプリケーションがこのことを意識することはない。 glibc のラッパー関数が、適切なシステムコールを起動し、古いバイナリに 対して ABI
+レベルでの互換性を保持することを保証する処理を行っている。)  複数のバージョンが存在するシステムコールの例を以下に挙げる。
+.IP * 3
+.\" e.g., on 2.6.22/i386: __NR_oldstat 18, __NR_stat 106, __NR_stat64 195
+.\" The stat system calls deal with three different data structures,
+.\" defined in include/asm-i386/stat.h: __old_kernel_stat, stat, stat64
+これまでに、 \fBstat\fP(2)  には 3 種類の異なるバージョンが存在する。 \fIsys_stat\fP()  (スロットは
+\fI__NR_oldstat\fP)、 \fIsys_newstat\fP()  (スロットは \fI__NR_stat\fP)、 \fIsys_stat64\fP()
+(カーネル 2.4 で導入; スロットは \fI__NR_stat64\fP)。 3つのうち最後のものが最新である。 \fBlstat\fP(2)  と
+\fBfstat\fP(2)  についても同様である。
+.IP *
+また、 \fI__NR_oldolduname\fP, \fI__NR_olduname\fP, \fI__NR_uname\fP という定義は、それぞれ
+\fIsys_olduname\fP(), \fIsys_uname\fP(), \fIsys_newuname\fP()  というルーチンを参照している。
+.IP *
+Linux 2.0 では、 \fBvm86\fP(2)  の新バージョンが登場した。カーネルルーチンの 古いバージョン、新しいバージョンはそれぞれ
+\fIsys_vm86old\fP(), \fIsys_vm86\fP()  という名前である。
+.IP *
+Linux 2.4 では、 \fBgetrlimit\fP(2)  の新バージョンが登場した。カーネルルーチンの 古いバージョン、新しいバージョンはそれぞれ
+\fIsys_old_getrlimit\fP()  (スロットは \fI__NR_getrlimit\fP), \fIsys_getrlimit\fP()
+(スロットは \fI__NR_ugetrlimit\fP)  という名前である。
+.IP *
+.\" 64-bit off_t changes: ftruncate64, *stat64,
+.\" fcntl64 (because of the flock structure), getdents64, *statfs64
+Linux 2.4 で、ユーザ ID とグループ ID のサイズが 16 ビットから 32 ビットに増えた。
+この変更に対応するため、いくつかのシステムコールが追加された (\fBchown32\fP(2), \fBgetuid32\fP(2),
+\fBgetgroups32\fP(2), \fBsetresuid32\fP(2)  など)。 これらのシステムコールが、末尾の "32" が付かない同名の
+古いバージョンに代わって使われるようになった。
+.IP *
+Linux 2.4 では、32 ビット・アーキテクチャ上のアプリケーションが 大きなファイル (つまり、32 ビットでは表現できないサイズや
+ファイル・オフセットが必要なファイル) にアクセスできるようになった。 この変更に対応するため、ファイル・オフセットとサイズを扱う
+システムコールの置き換えが必要となった。その結果、 \fBfcntl64\fP(2), \fBftruncate64\fP(2),
+\fBgetdents64\fP(2), \fBstat64\fP(2), \fBstatfs64\fP(2)
+と、ファイルディスクリプタやシンボリックリンクで同じ機能を持つ システムコールが追加された。 これらのシステムコールが、末尾の "64"
+が付かない同名の 古いバージョンに代わって使われるようになった。 但し、"stat" 系のシステムコールはその限りではない。
+
+64\-bit ファイルアクセスと 32\-bit UID のみを持つ 新しいプラットフォーム (alpha, ia64, s390x など) では、
+*64 や *32 という名前のシステムコールはない。 *64 や *32 というシステムコールが存在する場合、 *64 や *32
+がついていないシステムコールは廃止扱いである。
+.IP *
+リアルタイムシグナル (\fBsignal\fP(7)  参照) への対応を追加するために、 \fIrt_sig*\fP 系のシステムコールがカーネル 2.2
+で追加された。 これらのシステムコールが、先頭に "rt_" が付かない同名の 古いバージョンに代わって使われるようになった。
+.IP *
+.\" (used by libc 6)
+.\" .PP
+.\" Two system call numbers,
+.\" .IR __NR__llseek
+.\" and
+.\" .IR __NR__sysctl
+.\" have an additional underscore absent in
+.\" .IR sys_llseek ()
+.\" and
+.\" .IR sys_sysctl ().
+.\"
+.\" In kernel 2.1.81,
+.\" .BR lchown (2)
+.\" and
+.\" .BR chown (2)
+.\" were swapped; that is,
+.\" .BR lchown (2)
+.\" was added with the semantics that were then current for
+.\" .BR chown (2),
+.\" and the semantics of the latter call were changed to what
+.\" they are today.
+\fBselect\fP(2)  と \fBmmap\fP(2)  は 5つもしくはそれ以上の引き数を使用しており、 i386 では引き数の受け渡しに問題が生じる。
+そのため、他のアーキテクチャでは \fI__NR_select\fP と \fI__NR_mmap\fP に対応する \fIsys_select\fP()  と
+\fIsys_mmap\fP()  が存在するが、i386 では代わりに \fIold_select\fP()  と \fIold_mmap\fP()
+というルーチンがある (これらのルーチンは引き数ブロックへのポインタを使用する)。 現在では 5つの引き数を渡すことはもはや問題ではなくなっており、
+\fI__NR__newselect\fP は \fIsys_select\fP()  に直接対応するようになっている。 \fI__NR_mmap2\fP
+についても同様である。
+.SH 関連項目
+\fBsyscall\fP(2), \fBunimplemented\fP(2), \fBlibc\fP(7)
diff --git a/draft/man2/syslog.2 b/draft/man2/syslog.2
new file mode 100644 (file)
index 0000000..2bbc7be
--- /dev/null
@@ -0,0 +1,167 @@
+.\" Copyright (C) 1995 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Written 11 June 1995 by Andries Brouwer <aeb@cwi.nl>
+.\" 2008-02-15, Jeremy Kerr <jk@ozlabs.org>
+.\"     Add info on command type 10; add details on types 6, 7, 8, & 9.
+.\" 2008-02-15, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"     Update LOG_BUF_LEN details; update RETURN VALUE section.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SYSLOG 2 2011\-09\-07 Linux "Linux Programmer's Manual"
+.SH 名前
+syslog, klogctl \- カーネルのメッセージ・リング・バッファを読んだり消去したりする; console_loglevel の設定を行う
+.SH 書式
+.nf
+\fBint syslog(int \fP\fItype\fP\fB, char *\fP\fIbufp\fP\fB, int \fP\fIlen\fP\fB);\fP
+\fB/* glibc ではラッパー関数は提供されていない */\fP
+.sp
+/* glibc のインタフェース */
+.br
+\fB#include <sys/klog.h>\fP
+.sp
+\fBint klogctl(int \fP\fItype\fP\fB, char *\fP\fIbufp\fP\fB, int \fP\fIlen\fP\fB);\fP
+.fi
+.SH 説明
+(\fBsyslogd\fP(8) と話す) C ライブラリ関数の \fBsyslog\fP() が必要な場合は、
+\fBsyslog\fP(3) を見ること。この名前のシステム・コールはカーネルの
+\fIprintk\fP() バッファを制御するものであり、glibc ラッパー関数は
+\fBklogctl\fP() と呼ばれている。
+
+\fItype\fP 引き数はこの関数の動作を決定する。以下を指定できる。
+
+.nf
+      0 \-\- ログを閉じる。現在の実装では何もしない (NOP) 。
+      1 \-\- ログを開く。現在の実装では何もしない (NOP) 。
+      2 \-\- ログから読み出す。
+      3 \-\- リング・バッファに残っているメッセージをすべて読み出す。
+      4 \-\- リング・バッファに残っているメッセージをすべて読み出し、消去する。
+      5 \-\- リングバッファを消去する。
+      6 \-\- コンソールへの printk を無効にする。
+      7 \-\- コンソールへの printk を有効にする。
+      8 \-\- コンソールに表示されるメッセージのレベルを設定する。
+      9 \-\- ログバッファの未読の文字数を返す。
+      10 \-\- ログバッファのサイズを返す。
+.fi
+
+type 9 は Linux 2.4.10 で追加された。
+type 10 は Linux 2.6.6 で追加された。
+
+バージョン 2.6.37 より前の Linux カーネルでは、
+コマンド種別 3 と 10 だけが非特権プロセスに対して許可されている。
+Linux 2.6.37 以降では、\fI/proc/sys/kernel/dmesg_restrict\fP が値 0 の場合に
+コマンド種別 3 と 10 だけが非特権プロセスに対して許可される。
+Linux 2.6.37 より前では、「特権を持つ (privileged)」とは呼び出し者が
+\fBCAP_SYS_ADMIN\fP ケーパビリティを持つことを意味する。
+Linux 2.6.37 以降では、「特権を持つ」とは呼び出し者が
+\fBCAP_SYS_ADMIN\fP ケーパビリティか
+(新しい) \fBCAP_SYSLOG\fP ケーパビリティのいずれかを持つことを意味する
+(この目的で \fBCAP_SYS_ADMIN\fP ケーパビリティを使うのは今は非推奨である)。
+.SS "カーネル・ログ・バッファ (kernel log buffer)"
+.\" Under "General setup" ==> "Kernel log buffer size"
+.\" For 2.6, precisely the option seems to have appeared in 2.5.55.
+カーネルは長さ \fBLOG_BUF_LEN\fP の巡回式のバッファを持っており、 それにはカーネル関数の \fBprintk\fP()
+の引き数として与えられた メッセージが (そのログレベルにかかわらず) 格納される。 初期のカーネルでは \fBLOG_BUF_LEN\fP の値は 4096
+であった。 カーネル 1.3.54 からは 8192、 カーネル 2.1.113 からは 16384 になり、 カーネル 2.4.23 以降および
+2.6 以降ではカーネルのコンパイル時に 値を設定できるようになっている。 最近のカーネルでは、コマンド 10 でバッファのサイズを問い合わせできる。
+
+\fIsyslog(2,buf,len)\fP の呼び出しはカーネル・ログ・バッファが空でなくなるまで待って、 最大 \fIlen\fP バイトまで \fIbuf\fP
+へと読み出し、読み込んだ バイト数を返す。ログから読まれたバイトはログ・バッファから消える: 情報は一度しか読むことができない。
+これはユーザーのプログラムが \fI/proc/kmsg\fP を読んだ時にカーネルによって実行される関数でもある。
+
+\fIsyslog(3,buf,len)\fP の呼び出しはログ・バッファの最後の \fIlen\fP バイトを
+(非破壊的に)読み出す、しかし、直近の「リング・バッファ消去」命令 (この命令はバッファを消去するわけではない)
+以降にバッファに書き込まれた情報しか読み出せない。 返り値は読み込んだバイト数である。
+
+\fIsyslog(4,buf,len)\fP 呼び出しは「リング・バッファ消去」命令も実行する以外は 機能 3 と完全に同じである。
+
+\fIsyslog(5,dummy,dummy)\fP 呼び出しは「リング・バッファ消去」命令のみを実行する (呼び出しの書式で、 \fIbuf\fP や
+\fIlen\fP が "dummy" と記載されている場合、その引き数の値が無視されることを表す)。
+
+\fIsyslog(6,dummy,dummy)\fP 呼び出しはコンソールのログレベルを最小に設定し、 コンソールにメッセージが表示されないようにする。
+
+\fIsyslog(7,dummy,dummy)\fP 呼び出しはコンソールのログレベルをデフォルトに設定し、 コンソールにメッセージが表示されるようにする。
+
+\fIsyslog(8,dummy,level)\fP 呼び出しはコンソールのログレベルを \fIlevel\fP に設定する。 \fIlevel\fP は 1 以上 8
+以下の整数でなければならない。 詳細は \fBログレベル (loglevel)\fP の節を参照のこと。
+
+\fIsyslog(9,dummy,dummy)\fP 呼び出しはカーネル・ログバッファにある現在読み出し可能なバイト数を返す。
+
+\fIsyslog(10,dummy,dummy)\fP 呼び出しはカーネル・ログバッファの総量を返す。
+.SS "ログレベル (loglevel)"
+カーネル・ルーチンの \fBprintk\fP()  は、ログレベルが \fIconsole_loglevel\fP
+変数より小さいときにのみ、コンソールにメッセージを表示する。 \fIconsole_loglevel\fP は最初
+\fBDEFAULT_CONSOLE_LOGLEVEL\fP (7) に設定されるが、起動時にカーネルの コマンド・ライン・オプションに "debug"
+という単語が含まれている場合は 10 に設定され、カーネル・フォールトが発生した場合には 15 に設定される (但し、10 や 15
+という数字に意味はなく、8 と同等である)。 この変数は \fIsyslog(8,dummy,value)\fP.  呼び出しによって設定され、値の範囲は
+1\-8 である。 \fIsyslog(type,dummy,dummy)\fP 呼び出しで \fItype\fP が 6 もしくは 7 の場合、
+console_loglevel は 1 (カーネル・パニックのみ)、 7 (デバッグ・メッセージ以外の全て) にそれぞれ設定される。
+
+メッセージの各行はそれぞれにログレベルを持つ。このログレベルは \fIDEFAULT_MESSAGE_LOGLEVEL \- 1\fP (6) であるが、
+<d> (\fId\fP は 1\-7 の範囲の数字) で始まる行の ログレベルは \fId\fP である。 ログレベルの慣習的な意味は
+\fI<linux/kernel.h>\fP に以下のように定義されている:
+
+.nf
+#define KERN_EMERG    "<0>"  /* システムが使用不能                */
+#define KERN_ALERT    "<1>"  /* 直ちに対処が必要           */
+#define KERN_CRIT     "<2>"  /* 致命的な状態                 */
+#define KERN_ERR      "<3>"  /* エラー状態                    */
+#define KERN_WARNING  "<4>"  /* 警告状態                       */
+#define KERN_NOTICE   "<5>"  /* 通常状態だが大事な情報          */
+#define KERN_INFO     "<6>"  /* 通知                             */
+#define KERN_DEBUG    "<7>"  /* デバッグレベルの情報        */
+.fi
+.SH 返り値
+\fItype\fP が 2, 3, 4 の場合、成功すると \fBsyslog\fP()  は読み出したバイト数を返す。 \fItype\fP が 9 の場合、
+カーネル・ログバッファにある現在読み出し可能なバイト数を返す。 \fItype\fP が 10 の場合、 カーネル・ログバッファの総量を返す。 \fItype\fP
+がそれ以外の値の場合、成功すると 0 が返される。
+
+エラーの場合は、\-1\ が返り、 \fIerrno\fP にエラーを示す値が設定される。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+不正な引き数 (具体的には、 \fItype\fP が正しくない、もしくは \fItype\fP が 2, 3, 4 の場合に \fIbuf\fP が NULL か
+\fIlen\fP が 0 未満である、もしくは \fItype\fP が 8 の場合に \fIlevel\fP が 1 以上 8 以下の範囲に入っていない)。
+.TP 
+\fBENOSYS\fP
+カーネルの設定オプション \fBCONFIG_PRINTK\fP を無効にしてカーネルがコンパイルされているため、 \fBsyslog\fP()
+システムコールが利用できない。
+.TP 
+\fBEPERM\fP
+十分な権限を持たないプロセス (正確にはケーパビリティ \fBCAP_SYS_ADMIN\fP も
+\fBCAP_SYSLOG\fP も持たないプロセス) が console_loglevel を変更しようとしたか、
+カーネル・メッセージ・リングを消去しようとした。
+.TP 
+\fBERESTARTSYS\fP
+システム・コールがシグナルによって割り込まれ、何も読み出せなかった。 (トレース中にしか発生することはない)
+.SH 準拠
+このシステム・コールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけない。
+.SH 注意
+かなり初期の頃から、同じ名前を持つシステム・コールと ライブラリ・ルーチンが全く異なる代物であるのは不幸なことだと 気付かれていた。 libc4 と
+libc5 ではこのコールの番号は \fBSYS_klog\fP と定義されていた。 glibc2.0 でこのシステムコールは \fBklogctl\fP()
+という名前に改められた。
+.SH 関連項目
+\fBsyslog\fP(3), \fBcapabilities\fP(7)
diff --git a/draft/man2/truncate.2 b/draft/man2/truncate.2
new file mode 100644 (file)
index 0000000..fa7c913
--- /dev/null
@@ -0,0 +1,192 @@
+.\" Copyright (c) 1983, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" 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.
+.\"
+.\"     @(#)truncate.2 6.9 (Berkeley) 3/10/91
+.\"
+.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified 1998-12-21 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified 2002-01-07 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Modified 2002-04-06 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH TRUNCATE 2 2011\-09\-08 Linux "Linux Programmer's Manual"
+.SH 名前
+truncate, ftruncate \- 指定した長さにファイルを切り詰める
+.SH 書式
+\fB#include <unistd.h>\fP
+.br
+\fB#include <sys/types.h>\fP
+.sp
+\fBint truncate(const char *\fP\fIpath\fP\fB, off_t \fP\fIlength\fP\fB);\fP
+.br
+\fBint ftruncate(int \fP\fIfd\fP\fB, off_t \fP\fIlength\fP\fB);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.ad l
+.PD 0
+.sp
+\fBtruncate\fP():
+.RS 4
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+.br
+|| /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L
+.RE
+.sp
+\fBftruncate\fP():
+.RS 4
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+.br
+|| /* glibc 2.3.5 以降: */ _POSIX_C_SOURCE\ >=\ 200112L
+.RE
+.PD
+.ad b
+.SH 説明
+\fBtruncate\fP()  は \fIpath\fP で指定されるファイルを、 \fBftruncate\fP()  は \fIfd\fP で参照されるファイルを
+\fIlength\fP バイトの長さになるように延長する、もしくは切り詰める。
+.LP
+もし切り詰める前のファイルが \fIlength\fP より長ければ、length バイトを越える部分のデータは失われる。 もし切り詰める前のファイルが
+\fIlength\fP より短かければ、伸張される。 伸張された部分を読んだ場合は NULL バイト (\(aq\e0\(aq) の列が返される。
+.LP
+ファイルオフセットは変更されない。
+.LP
+大きさが変更されると、ファイルの st_ctime と st_mtime フィールド (それぞれ最終状態変更時刻、最終修正時刻; \fBstat\fP(2)
+参照) が更新される。 また、set\-user\-ID と set\-group\-ID の許可ビットがクリアされるかもしれない。
+.LP
+\fBftruncate\fP()  の場合、ファイルは書き込み用に開いていなければならない。 \fBtruncate\fP()
+の場合、ファイルは書き込み可能でなければならない。
+.SH 返り値
+成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+\fBtruncate\fP()  では以下のエラーコードが定義されている。
+.TP 
+\fBEACCES\fP
+パスで指定されているディレクトリに検索許可のないものがある (訳注:x ビットが立っていない)。
+あるいは、指定されたファイルに対する書き込み許可を持っていない。 (\fBpath_resolution\fP(7)  も参照のこと)
+.TP 
+\fBEFAULT\fP
+\fIpath\fP がプロセスに割り当てられているアドレス空間外を指している。
+.TP 
+\fBEFBIG\fP
+引き数 \fIlength\fP が最大ファイルサイズより大きい。(XSI)
+.TP 
+\fBEINTR\fP
+完了待ちで停止 (block) している間に、呼び出しが シグナルハンドラにより割り込まれた。 \fBfcntl\fP(2)  と \fBsignal\fP(7)
+を参照。
+.TP 
+\fBEINVAL\fP
+引き数 \fIlength\fP が負数であるか、最大ファイルサイズより大きい。
+.TP 
+\fBEIO\fP
+inode の更新時に I/O エラーが発生した。
+.TP 
+\fBEISDIR\fP
+指定されたファイルはディレクトリである。
+.TP 
+\fBELOOP\fP
+パス名を解釈する際にシンボリックリンクが多すぎた。
+.TP 
+\fBENAMETOOLONG\fP
+パス名中のディレクトリ名が 255 文字を越えている、もしくはパス名全体が 1023 文字を越えている。
+.TP 
+\fBENOENT\fP
+指定された名前のファイルが存在しない。
+.TP 
+\fBENOTDIR\fP
+パス名の構成要素がディレクトリではない。
+.TP 
+\fBEPERM\fP
+.\" This happens for at least MSDOS and VFAT file systems
+.\" on kernel 2.6.13
+下層にあるファイルシステムでは、現在のファイル長を越えて ファイルを伸長することができない。
+.TP 
+\fBEROFS\fP
+ファイルが読み込み専用 (read only) のファイル・システム上にある。
+.TP 
+\fBETXTBSY\fP
+指定されたファイルは実行されているファイルである。
+.PP
+\fBftruncate\fP()  にも同様のエラーが適用される。 但し、 \fIpath\fP に関するエラーの場合は、ファイルディスクリプター \fIfd\fP
+に関するエラーとなる。
+.TP 
+\fBEBADF\fP
+\fIfd\fP が無効なディスクリプターである。
+.TP 
+\fBEBADF\fP または \fBEINVAL\fP
+\fIfd\fP で指定されているものが書き込みモードで開かれていない。
+.TP 
+\fBEINVAL\fP
+\fIfd\fP が通常のファイルを参照していない。
+.SH 準拠
+.\" POSIX.1-1996 has
+.\" .BR ftruncate ().
+.\" POSIX.1-2001 also has
+.\" .BR truncate (),
+.\" as an XSI extension.
+.\" .LP
+.\" SVr4 documents additional
+.\" .BR truncate ()
+.\" error conditions EMFILE, EMULTIHP, ENFILE, ENOLINK.  SVr4 documents for
+.\" .BR ftruncate ()
+.\" an additional EAGAIN error condition.
+4.4BSD, SVr4, POSIX.1\-2001 (これらのコールは 4.2BSD で初めて登場した)。
+.SH 注意
+.\" At the very least: OSF/1, Solaris 7, and FreeBSD conform, mtk, Jan 2002
+「説明」の節で述べた詳細は XSI 準拠のシステムについてのものである。
+XSI 非準拠のシステムの場合、POSIX 標準は \fBftruncate\fP() に対して \fIlength\fP が
+ファイルの長さより長かった場合、 エラーを返すかファイルを伸張するかの二つの
+動作を許容している。 \fBtruncate\fP() に対しては全く規定されていない。
+ほとんどの UNIX 実装と同様、Linux はネイティブ (Linux 由来) の ファイルシステム
+の扱いでは XSI 要求仕様にしたがっている。 しかしながら、いくつかの非ネイティブ
+のファイルシステムでは、 \fBtruncate\fP() や \fBftruncate\fP() を使って現在のファイル
+長を越えてファイルを伸長することができない。 Linux での有名な例としては
+VFAT がある。
+
+元々の Linux の \fBtruncate\fP() と \fBftruncate\fP() システムコールは
+大きなファイルオフセットを扱えるように設計されていなかった。
+その結果、大きなファイルファイルを扱うことができる \fBtruncate64\fP() と \fBftruncate64\fP()
+システムコールが Linux 2.4 で追加された。
+ただし、glibc を使ったアプリケーションではこれらの詳細は気にする必要はない。
+glibc のラッパー関数は新しいシステムコールが利用できる場合にはそれらを利用する
+ようになっているからである。
+.SH バグ
+.\" http://sourceware.org/bugzilla/show_bug.cgi?id=12037
+glibc 2.12 のヘッダファイルにはバグがあり、 \fBftruncate\fP()  の宣言を公開するのに必要な \fB_POSIX_C_SOURCE\fP
+の最小値が 200112L ではなく 200809L となっていた。 このバグは、これ以降のバージョンの glibc では修正されている。
+.SH 関連項目
+\fBopen\fP(2), \fBstat\fP(2), \fBpath_resolution\fP(7)
diff --git a/draft/man2/umount.2 b/draft/man2/umount.2
new file mode 100644 (file)
index 0000000..4cd3a47
--- /dev/null
@@ -0,0 +1,118 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) 1993 Rickard E. Faith <faith@cs.unc.edu>
+.\" and Copyright (C) 1994 Andries E. Brouwer <aeb@cwi.nl>
+.\" and Copyright (C) 2002, 2005 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" 2008-10-06, mtk: Created this as a new page by splitting
+.\"     umount/umount2 material out of mount.2
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH UMOUNT 2 2010\-06\-19 Linux "Linux Programmer's Manual"
+.SH 名前
+umount, umount2 \- ファイルシステムをアンマウントする
+.SH 書式
+.nf
+\fB#include <sys/mount.h>\fP
+.sp
+\fBint umount(const char *\fP\fItarget\fP\fB);\fP
+.sp
+\fBint umount2(const char *\fP\fItarget\fP\fB, int \fP\fIflags\fP\fB);\fP
+.fi
+.SH 説明
+.\" Note: the kernel naming differs from the glibc naming
+.\" umount2 is the glibc name for what the kernel now calls umount
+.\" and umount is the glibc name for oldumount
+\fBumount\fP()  と \fBumount2\fP()  は \fItarget\fP にマウントされている (最上位の) ファイルシステムを外す。
+
+ファイルシステムのアンマウントを行うには、 適切な権限 (Linux では \fBCAP_SYS_ADMIN\fP ケーパビリティ) が必要である。
+
+Linux 2.1.116 から、 \fBumount2\fP()  システムコールが追加された。これは \fBumount\fP()  と同様に
+\fItarget\fP をアンマウントするが、 \fIflags\fP が追加されており、操作時の振る舞いを制御できる。
+.TP 
+\fBMNT_FORCE\fP (2.1.116 以降)
+使用中 (busy) でも強制的にアンマウントを実行する。 これを行うとデータを失う可能性がある。 (NFS マウント専用)
+.TP 
+\fBMNT_DETACH\fP (2.4.11 以降)
+遅延アンマウントを行う。マウントポイントに対する新規のアクセスは 不可能となり、実際のアンマウントはマウントポイントがビジーで なくなった時点で行う。
+.TP 
+\fBMNT_EXPIRE\fP (Linux 2.6.8 以降)
+マウントポイントに期限切れの印をつける。 マウントポイントが現在使用中でない場合、このフラグをつけて \fBumount2\fP()  を初めて呼び出すと
+\fBEAGAIN\fP エラーで失敗するが、マウントポイントには期限切れ (expire)  の印がつけられる。
+そのマウントポイントはいずれかのプロセスがアクセスしない限り 期限切れの印がついたままとなる。 もう一度 \fBMNT_EXPIRE\fP をつけて
+\fBumount2\fP()  を呼び出すと、期限切れの印のついたマウントポイントが アンマウントされる。 このフラグを \fBMNT_FORCE\fP もしくは
+\fBMNT_DETACH\fP と同時に指定することはできない。
+.TP 
+\fBUMOUNT_NOFOLLOW\fP (Linux 2.6.34 以降)
+.\" Later added to 2.6.33-stable
+\fItarget\fP がシンボリックリンクの場合に、シンボリックリンクの展開を行わない。
+このフラグを使うと、 \fIroot\fP に set\-user\-ID されたプログラムにおいて、
+非特権ユーザがファイルシステムのアンマウントをできてしまうという
+セキュリティ問題を回避することができる。
+.SH 返り値
+成功した場合、0 が返される。 失敗した場合、 \-1 が返され、 \fIerrno\fP に適切な値がセットされる。
+.SH エラー
+以下に示すエラーは、ファイルシステムに依存しないものである。 それぞれのファイルシステムタイプには固有のエラーが存在する場合があり、
+独自の動作をすることもある。詳しくはカーネルのソースを見て欲しい。
+.TP 
+\fBEAGAIN\fP
+\fBMNT_EXPIRE\fP を指定した \fBumount2\fP()  の呼び出しで、正常に未使用のファイルシステムに期限切れの印を つけることができた。
+.TP 
+\fBEBUSY\fP
+使用中 (busy) のため、 \fItarget\fP をアンマウントできなかった。
+.TP 
+\fBEFAULT\fP
+\fItarget\fP がユーザアドレス空間の外を指している。
+.TP 
+\fBEINVAL\fP
+\fItarget\fP がマウントポイントではない。 または、 \fBumount2\fP()  で、 \fBMNT_EXPIRE\fP が指定された
+\fBumount2\fP()  で、 \fBMNT_DETACH\fP か \fBMNT_FORCE\fP が同時に指定された。
+.TP 
+\fBENAMETOOLONG\fP
+パス名の長さが \fBMAXPATHLEN\fP より長かった。
+.TP 
+\fBENOENT\fP
+パス名が空である。もしくは指定されたパスが存在しない。
+.TP 
+\fBENOMEM\fP
+カーネルがファイル名やデータをコピーするための空きページを確保できなかった。
+.TP 
+\fBEPERM\fP
+呼び出し元が必要な権限を持っていない。
+.SH バージョン
+.\" http://sourceware.org/bugzilla/show_bug.cgi?id=10092
+\fBMNT_DETACH\fP と \fBMNT_EXPIRE\fP はバージョン 2.11 以降の glibc でのみ利用できる。
+.SH 準拠
+この関数は Linux 固有の関数であり、移植を考慮したプログラムでは 使用すべきでない。
+.SH 注意
+元々の \fBumount\fP()  関数は \fIumount(device)\fP の形で呼び出され、 ブロックデバイス以外を指定して呼び出すと
+\fBENOTBLK\fP を返した。 Linux 0.98p4 で、無名デバイス (anonymous device) に対応するために
+\fIumount(dir)\fP の形での呼び出しが加えられた。 Linux 2.3.99\-pre7 で、\fIumount(device)\fP は削除され、
+\fIumount(dir)\fP だけが残された (一つのデバイスを複数の位置にマウント出来るようになったため、
+デバイスを指定しただけでは不十分だからである)。
+.SH 関連項目
+\fBmount\fP(2), \fBpath_resolution\fP(7), \fBmount\fP(8), \fBumount\fP(8)
diff --git a/draft/man2/vfork.2 b/draft/man2/vfork.2
new file mode 100644 (file)
index 0000000..9a476c2
--- /dev/null
@@ -0,0 +1,163 @@
+.\" Copyright (c) 1999 Andries Brouwer (aeb@cwi.nl), 1 Nov 1999
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" 1999-11-10: Merged text taken from the page contributed by
+.\" Reed H. Petty (rhp@draper.net)
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH VFORK 2 2012\-02\-08 Linux "Linux Programmer's Manual"
+.SH 名前
+vfork \- 子プロセスを生成し親プロセスを停止させる
+.SH 書式
+\fB#include <sys/types.h>\fP
+.br
+\fB#include <unistd.h>\fP
+.sp
+\fBpid_t vfork(void);\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBvfork\fP():
+.ad l
+.RS 4
+.PD 0
+.TP  4
+glibc 2.12 以降:
+.nf
+_BSD_SOURCE ||
+    (_XOPEN_SOURCE\ >=\ 500 ||
+        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
+    !(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700)
+.TP  4
+.fi
+glibc 2.12 より前: _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+.PD
+.RE
+.ad b
+.SH 説明
+.SS 規格の説明
+(POSIX.1 より引用)  \fBvfork\fP()  関数は \fBfork\fP(2)  と同じ働きをするが、 \fBvfork\fP()
+で作成されたプロセスが \fBvfork\fP()  からの返り値を格納している \fIpid_t\fP 型の変数以外を変更したり、 \fBvfork\fP()
+を呼び出している関数から return したり、 \fB_exit\fP(2)  や \fBexec\fP(3)
+族の関数をコールする前に他の関数をコールした場合の動作が 未定義であるという点が異なる。
+.SS "LINUX での説明"
+\fBvfork\fP()  は \fBfork\fP(2)  と全く同じように呼び出したプロセスの子プロセスを生成する。 詳しい説明と返り値、エラーについては
+\fBfork\fP(2)  を参照すること。
+.PP
+\fBvfork\fP()  は \fBclone\fP(2)  の特殊な場合である。 親プロセスのページテーブルのコピーを行わずに新しいプロセスを
+作成するために使用する。これは性能に敏感なアプリケーションにおいて 子プロセスを生成してすぐに \fBexecve\fP(2)  する場合に有用かもしれない。
+.PP
+\fBvfork\fP() は \fBfork\fP(2) と違い、子プロセスが終了するか、
+\fBexecve\fP(2) をコールするまで呼び出し元のスレッドを停止 (suspend) させる。
+子プロセスの終了は、\fB_exit\fP(2) の呼び出しによる通常終了、致命的なシグナルの
+配送後の異常終了の二つのケースがある。
+この時点までは、子プロセスはスタックを含む全てのメモリを親プロセスと共有する。
+子プロセスは現在の関数から return してはならず、
+\fBexit\fP(3) もコールしてはならないが、\fB_exit\fP(2) ならばコールしてもよい。
+
+\fBfork\fP(2) と同様に、 \fBvfork\fP() で作成された子プロセスは、
+(ファイルディスクリプタ、シグナル配送定義、カレントワーキングディレクトリなどの)
+呼び出し元のプロセスの各種の属性を継承する。
+\fBvfork\fP() では、上で説明した仮想アドレス空間の扱いだけが異なる。
+
+親プロセスへ送られたシグナルは、子プロセスが親プロセスのメモリを解放した後
+(すなわち、子プロセスが終了するか \fBexecve\fP(2) を呼んだ後) に到着する。
+.SS 歴史的な説明
+Linux において \fBfork\fP(2)  は書き込み時コピー (copy\-on\-write) ページを使用して実装されている。 そのため
+\fBfork\fP(2)  を使用することによって被る損害は親プロセスのページ・テーブルを 複製するために必要な時間とメモリだけである。
+しかしながら、忌しき昔には \fBfork\fP(2)  は呼び出したプロセスのデータ空間の全てのコピーしていたが、
+これはしばしば不必要であった。なぜなら、たいていはすぐ後に \fBexec\fP(3)  を実行していたからである。 この場合の効率を上げるために BSD は
+\fBvfork\fP()  システムコールを導入して親プロセスのアドレス空間を完全にコピー するかわりに、 \fBexecve\fP(2)  をコールするか
+exit が起きるまで親プロセスのメモリと制御スレッド を借りるようにした。 親プロセスは子プロセスがその資源を使用している間は停止された。
+\fBvfork\fP()  は使いにくいものであった: 例えば、親プロセスの変数を変更しな いようにするためにはどの変数がレジスタに保持されているかを知らな
+ければならなかった。
+.SH 準拠
+4.3BSD; POSIX.1\-2001 (廃止予定とされている)。
+POSIX.1\-2008 では \fBvfork\fP() の規定が削除されている。
+
+.\" In AIXv3.1 vfork is equivalent to fork.
+\fBvfork\fP() コールは他のオペレーティング・システムの同名のコールと ちょっと似
+ているかもしれない。規格が \fBvfork\fP() に要求していることは、 \fBfork\fP(2) に要
+求していることよりは弱い。したがって、 両者を同じものとして実装しても、規格に
+準拠していることになる。 特にプログラマーは、子プロセスが終了するか
+\fBexecve\fP(2) を呼び出すまで親プロセスが停止していることや、メモリを共有するこ
+とによる特殊な動作をあてにすべきではない。
+.SH 注意
+.PP
+\fBvfork\fP() の動作は構造的な欠陥と考える人もいるだろうし、
+BSD のマニュアルには、「このシステムコールは妥当なシステム共有機構が実装さ
+れた場合には削除される。ユーザは \fBvfork\fP() のメモリ共有機能に依存するべき
+ではない。何故ならば、このシステムコール が削除された場合には、それは
+\fBfork\fP(2) の同義語とされるからである。」と書かれている。しかしながら、
+最近のメモリ管理ハードウェアにより \fBfork\fP(2) と \fBvfork\fP() の間の性能差が
+減ったとはいえ、 Linux や他のシステムで \fBvfork\fP() が残されているのには
+いくつか理由がある:
+.IP * 3
+性能に厳しいアプリケーションでは、 \fBvfork\fP() により得られる
+小さな性能上のメリットが必要な場合がある。
+.IP *
+.\" http://stackoverflow.com/questions/4259629/what-is-the-difference-between-fork-and-vfork
+.\" http://developers.sun.com/solaris/articles/subprocess/subprocess.html
+.\" http://mailman.uclinux.org/pipermail/uclinux-dev/2009-April/000684.html
+\fBvfork\fP() はメモリ管理ユニット (MMU) を持たないシステムでも実装すること
+ができるが、そのようなシステムで \fBfork\fP(2) を実装することはできない。
+(POSIX.1\-2008 では \fBvfork\fP() が標準から削除された。
+\fBposix_spawn\fP(3) 関数の POSIX の原理 (rationale) には、
+\fBfork\fP(2)+\fBexec\fP(3) と等価な機能を提供する \fBposix_spawn\fP(3) は、
+MMU を持たないシステムでも実装できるように設計されたとの注記がある。)
+.SS "Linux での注意"
+\fBpthread_atfork\fP(3)  を使って設定された fork ハンドラは NPTL
+スレッドライブラリコールを採用したマルチスレッドプログラムでは 呼び出されない。一方、LinuxThreads スレッドライブラリを使った
+プログラムでは、fork ハンドラは呼び出される。 (Linux のスレッドライブラリの説明は \fBpthreads\fP(7)  を参照。)
+
+\fBvfork\fP() の呼び出しは、以下の \fIflags\fP を指定して \fBclone\fP(2) を呼び出す
+のと等価である。
+
+     CLONE_VM | CLONE_VFORK | SIGCHLD
+
+.SS 歴史
+.\" In the release notes for 4.2BSD Sam Leffler wrote: `vfork: Is still
+.\" present, but definitely on its way out'.
+\fBvfork\fP()  システムコールは 3.0BSD に現われた。 4.4BSD において \fBfork\fP(2)  の同義語となったが、NetBSD
+では再び導入された。 http://www.netbsd.org/Documentation/kernel/vfork.html を参照。 Linux
+では 2.2.0\-pre6 あたりまでは \fBfork\fP(2)  と等価であった。(i386 では) 2.2.0\-pre9 から
+(他のアーキテクチャでは 少し遅れて) 独立したシステムコールとなった。 glibc でのサポートは glibc\-2.0.112 で追加された。
+.SH バグ
+.PP
+.\"
+.\" As far as I can tell, the following is not true in 2.6.19:
+.\" Currently (Linux 2.3.25),
+.\" .BR strace (1)
+.\" cannot follow
+.\" .BR vfork ()
+.\" and requires a kernel patch.
+シグナルの扱いの詳細は不明瞭でシステムごとに異っている。 BSD のマニュアルには、 「デッドロック状態になる可能性があるので \fBvfork\fP()
+の途中の子プロセスに \fBSIGTTOU\fP や \fBSIGTTIN\fP シグナルを送信してはならない; さらに出力や \fIioctl\fP
+は許されるが、入力を試みた場合には結果はファイル終端 (EOF) になる。」 と書かれている。
+.SH 関連項目
+\fBclone\fP(2), \fBexecve\fP(2), \fBfork\fP(2), \fBunshare\fP(2), \fBwait\fP(2)
index 4e1518c..6527f5e 100644 (file)
 .\"*******************************************************************
 .TH WRITE 2 2010\-08\-29 Linux "Linux Programmer's Manual"
 .SH 名前
-write \- ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ (file descriptor) ã\81«æ\9b¸ã\81\8dè¾¼ã\82\80
+write \- ファイルディスクリプタ (file descriptor) に書き込む
 .SH 書式
 \fB#include <unistd.h>\fP
 .sp
 \fBssize_t write(int \fP\fIfd\fP\fB, const void *\fP\fIbuf\fP\fB, size_t \fP\fIcount\fP\fB);\fP
 .SH 説明
-\fBwrite\fP()  ã\81¯ã\80\81 \fIbuf\fP ã\81\8cæ\8c\87ã\81\99ã\83\90ã\83\83ã\83\95ã\82¡ã\81\8bã\82\89ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ \fIfd\fP ã\81\8cå\8f\82ç\85§ã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\81¸ã\80\81æ\9c\80大 \fIcount\fP
+\fBwrite\fP()  は、 \fIbuf\fP が指すバッファから、ファイルディスクリプタ \fIfd\fP が参照するファイルへ、最大 \fIcount\fP
 バイトを書き込む。
 
 書き込まれるバイト数は \fIcount\fP よりも小さくなることがある。 例えば、書き込み対象の物理メディアに十分な領域がない場合、 リソース上限
@@ -57,12 +57,12 @@ write \- ファイル・ディスクリプタ (file descriptor) に書き込む
 呼び出しがシグナルハンドラにより割り込まれた場合、 などである。 (\fBpipe\fP(7)  も参照のこと。)
 
 seek 可能なファイル (つまり \fBlseek\fP(2)  が適用できるファイル、例えば通常のファイル) では、
\9b¸ã\81\8dè¾¼ã\81¿ã\81¯ç\8f¾å\9c¨ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82ªã\83\95ã\82»ã\83\83ã\83\88ã\81\8bã\82\89è¡\8cã\82\8fã\82\8cã\80\81 ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82ªã\83\95ã\82»ã\83\83ã\83\88ã\81¯å®\9fé\9a\9bã\81«æ\9b¸ã\81\8dè¾¼ã\81¿ã\81\8cè¡\8cã\82\8fã\82\8cã\81\9fã\83\90ã\82¤ã\83\88æ\95°å\88\86 å\8a ç®\97ã\81\95ã\82\8cã\82\8bã\80\82ã\83\95ã\82¡ã\82¤ã\83«ã\81\8c
-\fBO_APPEND\fP で \fBopen\fP(2)  された場合、ファイル・オフセットは書き込み前に ファイルの末尾に設定される。
\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82ªã\83\95ã\82»ã\83\83ã\83\88ã\81®èª¿æ\95´ã\81¨æ\9b¸ã\81\8dè¾¼ã\81¿æ\93\8dä½\9cã\81¯ã\82¢ã\83\88ã\83\9fã\83\83ã\82¯ã\81ªå\87¦ç\90\86ã\81¨ã\81\97ã\81¦ å®\9fè¡\8cã\81\95ã\82\8cã\82\8bã\80\82
\9b¸ã\81\8dè¾¼ã\81¿ã\81¯ç\8f¾å\9c¨ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82ªã\83\95ã\82»ã\83\83ã\83\88ã\81\8bã\82\89è¡\8cã\82\8fã\82\8cã\80\81 ã\83\95ã\82¡ã\82¤ã\83«ã\82ªã\83\95ã\82»ã\83\83ã\83\88ã\81¯å®\9fé\9a\9bã\81«æ\9b¸ã\81\8dè¾¼ã\81¿ã\81\8cè¡\8cã\82\8fã\82\8cã\81\9fã\83\90ã\82¤ã\83\88æ\95°å\88\86 å\8a ç®\97ã\81\95ã\82\8cã\82\8bã\80\82ã\83\95ã\82¡ã\82¤ã\83«ã\81\8c \fBO_APPEND\fP
+で \fBopen\fP(2)  された場合、ファイルオフセットは書き込み前に ファイルの末尾に設定される。
+ファイルオフセットの調整と書き込み操作はアトミックな処理として 実行される。
 
 POSIX は \fBwrite\fP()  が行なわれた後に実行した \fBread\fP(2)  が 新しいデータを返すことを要求している。
\85¨ã\81¦ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81\8c POSIX æº\96æ\8b ã\81§ã\81¯ã\81ªã\81\84ç\82¹ã\81«æ³¨æ\84\8fã\81\99ã\82\8bã\81\93ã\81¨ã\80\82
+全てのファイルシステムが POSIX 準拠ではない点に注意すること。
 .SH 返り値
 成功した場合、書き込まれたバイト数が返される (ゼロは何も書き込まれなかったことを示す)。 エラーならば \-1 が返され、\fIerrno\fP
 が適切に設定される。
@@ -73,17 +73,17 @@ POSIX は \fBwrite\fP()  が行なわれた後に実行した \fBread\fP(2)  が
 .SH エラー
 .TP 
 \fBEAGAIN\fP
\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ \fIfd\fP ã\81\8cã\82½ã\82±ã\83\83ã\83\88以å¤\96ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\81¦ã\80\81 é\9d\9eå\81\9cæ­¢ (nonblocking) ã\83¢ã\83¼ã\83\89
-(\fBO_NONBLOCK\fP)  に設定されており、書き込みを行うと停止する状況にある。
\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ \fIfd\fP ã\81\8cã\82½ã\82±ã\83\83ã\83\88以å¤\96ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\81¦ã\80\81 é\9d\9eå\81\9cæ­¢ (nonblocking) ã\83¢ã\83¼ã\83\89 (\fBO_NONBLOCK\fP)
+に設定されており、書き込みを行うと停止する状況にある。
 .TP 
 \fBEAGAIN\fP または \fBEWOULDBLOCK\fP
 .\" Actually EAGAIN on Linux
\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ \fIfd\fP ã\81\8cã\82½ã\82±ã\83\83ã\83\88ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\81¦ã\80\81é\9d\9eå\81\9cæ­¢ (nonblocking) ã\83¢ã\83¼ã\83\89 (\fBO_NONBLOCK\fP)
+ファイルディスクリプタ \fIfd\fP がソケットを参照していて、非停止 (nonblocking) モード (\fBO_NONBLOCK\fP)
 に設定されており、書き込みを行うと停止する状況にある。 POSIX.1\-2001 は、この場合にどちらのエラーを返すことも認めており、 これら 2
 つの定数が同じ値を持つことも求めていない。 したがって、移植性が必要なアプリケーションでは、両方の可能性を 確認すべきである。
 .TP 
 \fBEBADF\fP
-\fIfd\fP ã\81\8cæ\9c\89å\8a¹ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\81§ã\81ªã\81\84ã\81\8bæ\9b¸ã\81\8dè¾¼ã\81¿ã\81®ã\81\9fã\82\81ã\81«ã\82ªã\83¼ã\83\97ã\83³ (open) ã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84ã\80\82
+\fIfd\fP が有効なファイルディスクリプタでないか書き込みのためにオープン (open) されていない。
 .TP 
 \fBEDESTADDRREQ\fP
 \fIfd\fP が、 \fBconnect\fP(2)  を使って通信相手のアドレスが設定されていないデータグラムソケットを 参照している。
diff --git a/draft/man3/aio_cancel.3 b/draft/man3/aio_cancel.3
new file mode 100644 (file)
index 0000000..dacd00e
--- /dev/null
@@ -0,0 +1,70 @@
+.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH AIO_CANCEL 3 2011\-10\-04 "" "Linux Programmer's Manual"
+.SH 名前
+aio_cancel \- 完了していない非同期 I/O リクエストをキャンセルする
+.SH 書式
+\fB#include <aio.h>\fP
+.sp
+\fBint aio_cancel(int \fP\fIfd\fP\fB, struct aiocb *\fP\fIaiocbp\fP\fB);\fP
+.sp
+\fI\-lrt\fP でリンクする。
+.SH 説明
+\fBaio_cancel\fP() 関数は、ファイルディスクリプタ \fIfd\fP についての完了していない
+非同期 I/O リクエストをキャンセルしようとする。 \fIaiocbp\fP が NULL の場合、そ
+のような全てのリクエストがキャンセルされる。 \fIaiocbp\fP が NULL でない場合、
+\fIaiocbp\fP で指された制御ブロックで記述されたリクエストのみがキャンセルされる。
+(\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照)
+.LP
+キャンセルされたリクエストに対して、通常の非同期通知が起こる。
+リクエストの返り値 (\fBaio_return\fP(3)) は \-1 に設定され、
+リクエストのエラー状態 (\fBaio_error\fP(3)) は \fBECANCELED\fP に設定される。
+キャンセルできないリクエストの制御ブロックは変更されない。
+.LP
+\fIaiocbp\fP が NULL でなく、かつ \fIfd\fP が非同期操作が開始されたファイルディスクリプタと異なる場合、 生じる結果は不定である。
+.LP
+.\" FreeBSD: not those on raw disk devices.
+どの操作をキャンセルできるかは、実装定義である。
+.SH 返り値
+全てのリクエストのキャンセルが成功した場合、この関数は \fBAIO_CANCELED\fP を返す。 指定されたリクエストのうち少なくとも 1
+つが進行中であるために キャンセルできなかった場合は、 \fBAIO_NOTCANCELED\fP が返される。 この場合は、 \fBaio_error\fP(3)
+を使って個々のリクエストの状態をチェックすることができる。 呼び出される前に全てのリクエストが完了していた場合、 この関数は
+\fBAIO_ALLDONE\fP を返す。 何らかのエラーが起こった場合は、\-1 が返されて、 \fIerrno\fP が適切に設定される。
+.SH エラー
+.TP 
+\fBEBADF\fP
+\fIfd\fP が有効なファイルディスクリプタでない。
+.SH バージョン
+\fBaio_cancel\fP() 関数は glibc 2.1 以降で利用できる。
+.SH 準拠
+POSIX.1\-2001, POSIX.1\-2008.
+.SH 例
+\fBaio\fP(7) を参照。
+.SH 関連項目
+\fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_read\fP(3), \fBaio_return\fP(3),
+\fBaio_suspend\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7)
diff --git a/draft/man3/aio_error.3 b/draft/man3/aio_error.3
new file mode 100644 (file)
index 0000000..4983e6c
--- /dev/null
@@ -0,0 +1,65 @@
+.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH AIO_ERROR 3 2010\-10\-03 "" "Linux Programmer's Manual"
+.SH 名前
+aio_error \- 非同期 I/O 操作のエラー状態を取得する
+.SH 書式
+\fB#include <aio.h>\fP
+.sp
+\fBint aio_error(const struct aiocb *\fP\fIaiocbp\fP\fB);\fP
+.sp
+\fI\-lrt\fP でリンクする。
+.SH 説明
+\fBaio_error\fP() 関数は \fIaiocbp\fP で指された制御ブロックでの非同期 I/O リクエス
+トのエラー状態を返す。(\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照)
+.SH 返り値
+この関数の返り値は以下のいずれかである。
+.IP * 3
+\fBEINPROGRESS\fP (リクエストがまだ完了していない場合)
+.IP *
+\fBECANCELED\fP (リクエストがキャンセルされた場合)
+.IP *
+0 (リクエストが正常に完了した場合)
+.IP *
+正のエラー (非同期 I/O 命令が失敗した場合)。
+同期の \fBread\fP(2), \fBwrite\fP(2), \fBfsync\fP(2), \fBfdatasync\fP(2) の呼び出しの場合で
+\fIerrno\fP 変数に格納されるのと同じ値になる。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+\fIaiocbp\fP が、まだ返り値 (return status)  (\fBaio_return\fP(3)  を参照) が取得されていない非同期 I/O
+リクエストの制御ブロックを指していない。
+.SH バージョン
+\fBaio_error\fP() 関数は glibc 2.1 以降で利用できる。
+.SH 準拠
+POSIX.1\-2001, POSIX.1\-2008.
+.SH 例
+\fBaio\fP(7) を参照。
+.SH 関連項目
+\fBaio_cancel\fP(3), \fBaio_fsync\fP(3), \fBaio_read\fP(3), \fBaio_return\fP(3),
+\fBaio_suspend\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7)
diff --git a/draft/man3/aio_fsync.3 b/draft/man3/aio_fsync.3
new file mode 100644 (file)
index 0000000..c193788
--- /dev/null
@@ -0,0 +1,74 @@
+.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH AIO_FSYNC 3 2010\-10\-02 "" "Linux Programmer's Manual"
+.SH 名前
+aio_fsync \- 非同期ファイルを同期させる
+.SH 書式
+\fB#include <aio.h>\fP
+.sp
+\fBint aio_fsync(int \fP\fIop\fP\fB, struct aiocb *\fP\fIaiocbp\fP\fB);\fP
+.sp
+\fI\-lrt\fP でリンクする。
+.SH 説明
+\fBaio_fsync\fP() 関数は、 \fIaiocbp\->aio_fildes\fP で関連付けられているまだ
+完了していない全ての非同期 I/O 操作を同期させる。
+(\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照)
+.LP
+より正確に言うと、 \fIop\fP が \fBO_SYNC\fP の場合、現在キューに入れられている全て
+の I/O 操作は、 \fBfsync\fP(2) が呼ばれたかのように完了されるだろう。 また
+\fIop\fP が \fBO_DSYNC\fP の場合、この呼び出しは \fBfdatasync\fP(2) の非同期版となる。
+
+この関数はリクエストを行うだけである点に注意すること。
+I/O の完了の待ち合わせは行わない。
+.LP
+\fIaiocbp\fP で指される構造体のフィールドのうち、この呼び出しで \fIaio_fildes\fP
+以外に使用されるのは \fIaio_sigevent\fP フィールド (\fIsigevent\fP 構造体、説明は
+\fBsigevent\fP(7) 参照) のみである。このフィールドは、完了時の非同期通知に使用
+したいタイプを示す。 その他のフィールドは無視される。
+.SH 返り値
+成功した場合 (同期リクエストをキューに入れるのに成功した場合)、 この関数は 0 を返す。 エラーの場合、\-1 が返され、 \fIerrno\fP
+が適切に設定される。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+リソースが足りない。
+.TP 
+\fBEBADF\fP
+\fIaio_fildes\fP が書き込みのためにオープンされた有効なファイルディスクリプタではない。
+.TP 
+\fBEINVAL\fP
+このファイルでは同期 I/O がサポートされていない。
+または \fIop\fP が \fBO_SYNC\fP でも \fBO_DSYNC\fP でもない。
+.SH バージョン
+The \fBaio_fsync\fP() 関数は glibc 2.1 以降で利用できる。
+.SH 準拠
+POSIX.1\-2001, POSIX.1\-2008.
+.SH 関連項目
+\fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_read\fP(3), \fBaio_return\fP(3),
+\fBaio_suspend\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7),
+\fBsigevent\fP(7)
diff --git a/draft/man3/aio_init.3 b/draft/man3/aio_init.3
new file mode 100644 (file)
index 0000000..642ed87
--- /dev/null
@@ -0,0 +1,94 @@
+.\" t
+.\" Copyright (c) 2010 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH AIO_INIT 3 2010\-10\-06 Linux "Linux Programmer's Manual"
+.SH 名前
+aio_init \- POSIX 非同期 I/O の初期化
+.SH 書式
+.nf
+\fB#define _GNU_SOURCE\fP         /* See feature_test_macros(7) */
+\fB#include <aio.h>\fP
+
+\fBvoid aio_init(const struct aioinit *\fP\fIinit\fP\fB);\fP
+.fi
+.sp
+\fI\-lrt\fP でリンクする。
+.SH 説明
+GNU 固有の \fBaio_init\fP() 関数を使うと、呼び出し側が glibc の POSIX AIO 実装に
+対して調整 (チューニング) のヒントを与えることができる。この関数は使用しなく
+てもよいが、この関数が効果を持つには、POSIX AIO API の他の関数を利用する前に
+呼び出さなければならない。
+
+チューニングの情報は、引き数 \fIinit\fP が指すバッファで与える。
+このバッファは以下の形式の構造体である。
+.PP
+.in +4n
+.nf
+struct aioinit {
+    int aio_threads;    /* Maximum number of threads */
+    int aio_num;        /* Number of expected simultaneous
+                           requests */
+    int aio_locks;      /* Not used */
+    int aio_usedba;     /* Not used */
+    int aio_debug;      /* Not used */
+    int aio_numusers;   /* Not used */
+    int aio_idle_time;  /* Number of seconds before idle thread
+                           terminates (since glibc 2.2) */
+    int aio_reserved;
+};
+.fi
+.in
+.PP
+\fIaioinit\fP 構造体のフィールドのうち以下が使用される。
+.TP  15
+\fIaio_threads\fP
+このフィールドは、AIO の実装が使用できるワーカースレッド数の最大値を指定する。
+完了していない I/O 操作の数がこの上限を超えた場合、超過した操作は
+空いたワーカースレッドができるまでキューに入る。
+このフィールドに 1 未満の値を指定した場合には、値 1 が使用される。
+デフォルト値は 20 である。
+.TP 
+\fIaio_num\fP
+.\" FIXME But, if aio_num > 32, the behavior looks strange. See
+.\" http://sourceware.org/bugzilla/show_bug.cgi?id=12083
+このフィールドは、呼び出し側がキューに入れる予定の
+同時 I/O リクエスト数の最大値を指定する。
+このフィールドに 32 未満の値が指定された場合、値は 32 に切り上げられる。
+デフォルト値は 64 である。
+.TP 
+\fIaio_idle_time\fP
+このフィールドは、あるワーカースレッドが、前のリクエストの処理を完了してから、
+次のリクエストをどのくらい時間待つかを秒単位で指定する。
+指定した時間を経過しても次のリクエストがなければ、
+そのワーカースレッドは終了される。デフォルト値は 1 秒である。
+.SH バージョン
+The \fBaio_init\fP() 関数は glibc 2.1 以降で利用できる。
+.SH 準拠
+この関数は GNU による拡張である。
+.SH 関連項目
+\fBaio\fP(7)
diff --git a/draft/man3/aio_read.3 b/draft/man3/aio_read.3
new file mode 100644 (file)
index 0000000..6c84377
--- /dev/null
@@ -0,0 +1,103 @@
+.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH AIO_READ 3 2010\-10\-03 "" "Linux Programmer's Manual"
+.SH 名前
+aio_read \- 非同期で読み込む
+.SH 書式
+\fB#include <aio.h>\fP
+.sp
+\fBint aio_read(struct aiocb *\fP\fIaiocbp\fP\fB);\fP
+.sp
+\fI\-lrt\fP でリンクする。
+.SH 説明
+\fBaio_read\fP() 関数は、\fIaiocbp\fP が指すバッファに記載された I/O リクエストを
+キューに入れる。この関数は \fBread\fP(2) の非同期版である。
+呼び出し
+
+    read(fd, buf, count)
+
+の各引き数は \fIaiocb\fP が指す構造体の \fIaio_fildes\fP, \fIaio_buf\fP, \fIaio_nbytes\fP
+に (この順序で) 対応する (\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照)。
+.LP
+データの読み込みは、カレントのファイルオフセットに関係なく、
+絶対ファイルオフセット \fIaiocbp\->aio_offset\fP を開始点として行われる。
+呼び出しの後のカレントのファイルオフセットは規定されていない。
+.LP
+「非同期」とは「リクエストがキューに入れられたら、この呼び出しはすぐに返る」
+ということである。 呼び出しから戻った時に、読み込みは完了しているかも知れないし、
+完了していないかも知れない。 \fBaio_error\fP(3) を使うことで完了したかをテストできる。
+完了した I/O 操作の返り値は \fBaio_return\fP(3) で取得できる。
+\fIaiocbp\->aio_sigevent\fP を適切に設定することで、
+I/O 完了の非同期通知は受けることもできる。詳細は \fBsigevent\fP(7) を参照。
+.LP
+\fB_POSIX_PRIORITIZED_IO\fP が定義されていて、 かつファイルがこれをサポートしている場合、
+非同期操作は呼び出したプロセスの優先度から \fIaiocbp\->aio_reqprio\fP を引いた優先度で登録 (submit) される。
+.LP
+フィールド \fIaiocbp\->aio_lio_opcode\fP は無視される。
+.LP
+最大オフセットを超えた通常のファイルからは、何もデータが読み込まれない。
+.SH 返り値
+成功した場合、0 が返される。 エラーの場合、リクエストはキューに入れられず、
+\-1 が返されて、 \fIerrno\fP が適切に設定される。 エラーは後でのみ検知された場合は、
+エラーは \fBaio_return\fP(3) と \fBaio_error\fP(3) 経由で報告されることになる
+(\fBaio_return\fP(3) は状態 \-1 を返し、\fBaio_error\fP(3) でエラー状態\(em
+\fIerrno\fP で取得できる \fBEBADF\fP のようなエラー状態が返される)。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+リソースが足りない。
+.TP 
+\fBEBADF\fP
+\fIaio_fildes\fP は読み込みのためにオープンされた有効なファイルディスクリプタでない。
+.TP 
+\fBEINVAL\fP
+\fIaio_offset\fP, \fIaio_reqprio\fP, \fIaio_nbytes\fP のうち 1 つ以上が無効である。
+.TP 
+\fBENOSYS\fP
+この関数がサポートされていない。
+.TP 
+\fBEOVERFLOW\fP
+ファイルが通常のファイルであり、 ファイルの終端の前から読み込みを開始して、 少なくとも 1 バイトを読み込もうとした。
+しかし開始位置がこのファイルの最大オフセットを超えていた。
+.SH バージョン
+The \fBaio_read\fP() 関数は glibc 2.1 以降で利用できる。
+.SH 準拠
+POSIX.1\-2001, POSIX.1\-2008.
+.SH 注意
+.\" or the control block of the operation
+使用する前に制御ブロックを 0 にしておくのは、よい考えである。 この制御ブロックは、読み込み操作が進行している間は変更すべきでない。
+読み込まれるバッファ領域は 操作の最中にアクセスすべきではない。 さもないと起こる結果が不定になる。
+これに含まれるメモリ領域は、有効なままにしなければならない。
+
+同じ \fIaiocb\fP 構造体を指定して同時に複数の I/O 操作を行った場合、
+どのような結果になるかは不定である。
+.SH 例
+\fBaio\fP(7) を参照。
+.SH 関連項目
+\fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_return\fP(3),
+\fBaio_suspend\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7)
diff --git a/draft/man3/aio_return.3 b/draft/man3/aio_return.3
new file mode 100644 (file)
index 0000000..ba0d857
--- /dev/null
@@ -0,0 +1,62 @@
+.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH AIO_RETURN 3 2010\-10\-03 "" "Linux Programmer's Manual"
+.SH 名前
+aio_return \- 非同期 I/O 操作の返り値 (return status) を取得する
+.SH 書式
+\fB#include <aio.h>\fP
+.sp
+\fBssize_t aio_return(struct aiocb *\fP\fIaiocbp\fP\fB);\fP
+.sp
+\fI\-lrt\fP でリンクする。
+.SH 説明
+\fBaio_return\fP() 関数は \fIaiocbp\fP で指された制御ブロックにおける非同期 I/O
+リクエストの最終的な返り値を返す。
+(\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照)
+.LP
+この関数は、 \fBaio_error\fP(3)  が \fBEINPROGRESS\fP 以外を返した後で、 与えられたリクエストに対して 1
+回だけ呼ばれるべきである。
+.SH 返り値
+非同期 I/O 操作が完了した場合、この関数は、同期呼び出し \fBread\fP(2),
+\fBwrite\fP(2), \fBfsync\fP(2), \fBfdatasync\fP(2) が返すのと同じ値を返す。
+
+非同期 I/O 操作が完了していない場合、
+\fBaio_return\fP() の返り値とその影響は不定である。
+.SH エラー
+.TP 
+\fBEINVAL\fP
+\fIaiocbp\fP が、返り値がまだ取得されていない非同期 I/O リクエストの 制御ブロックを指していない。
+.SH バージョン
+The \fBaio_return\fP() 関数は glibc 2.1 以降で利用できる。
+.SH 準拠
+POSIX.1\-2001, POSIX.1\-2008.
+.SH 例
+\fBaio\fP(7) を参照。
+.SH 関連項目
+\fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_read\fP(3),
+\fBaio_suspend\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7)
diff --git a/draft/man3/aio_suspend.3 b/draft/man3/aio_suspend.3
new file mode 100644 (file)
index 0000000..90f6f9b
--- /dev/null
@@ -0,0 +1,90 @@
+.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
+.\" and Copyright (C) 2010 Michael kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH AIO_SUSPEND 3 2010\-10\-02 "" "Linux Programmer's Manual"
+.SH 名前
+aio_suspend \- 非同期 I/O 操作またはタイムアウトを待つ
+.SH 書式
+.nf
+.sp
+\fB#include <aio.h>\fP
+.sp
+\fBint aio_suspend(const struct aiocb * const \fP\fIaiocb_list\fP\fB[],\fP
+.br
+\fB                int \fP\fInitems\fP\fB, const struct timespec *\fP\fItimeout\fP\fB);\fP
+.sp
+\fI\-lrt\fP でリンクする。
+.fi
+.SH 説明
+\fBaio_suspend\fP() 関数は、以下のいずれかが発生するまで
+呼び出したスレッドの実行を停止 (suspend) する。
+.IP * 3
+\fIaiocb_list\fP リスト内の非同期 I/O リクエストのうち、少なくとも一つが完了した。
+.IP *
+シグナルが配送された。
+.IP *
+\fItimeout\fP が NULL でない場合に、指定した時間が経過した
+(\fItimespec\fP 構造体の詳細は \fBnanosleep\fP(2) を参照)。
+.LP
+\fInitems\fP 引き数は \fIaiocb_list\fP の要素数を指定する。
+\fIaiocb_list\fP が指すリストの各要素は、NULL (これは無視される) か、
+\fBaio_read\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3) を使って I/O が開始された
+制御ブロックへのポインタでなければならない。
+(\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照)
+.LP
+\fBCLOCK_MONOTONIC\fP がサポートされる場合、 このクロックを使ってタイムアウトの
+間隔が計測される (\fBclock_gettime\fP(3) を参照)。
+.SH 返り値
+\fIaiocb_list\fP で指定された I/O リクエストの 1 つが完了した後に
+この関数が返った場合は、0 が返される。
+それ以外の場合は、 \-1 が返り、 \fIerrno\fP にエラーを示す値に設定される。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+指示された操作のどれも完了しないうちに、呼び出しがタイムアウトした。
+.TP 
+\fBEINTR\fP
+この呼び出しがシグナルによって終了させられた (このシグナルは、完了を待っていた
+操作のいずれかの完了シグナルの可能性もある)。\fBsignal\fP(7) 参照。
+.SH バージョン
+The \fBaio_suspend\fP() 関数は glibc 2.1 以降で利用できる。
+.SH 準拠
+POSIX.1\-2001, POSIX.1\-2008.
+.SH 注意
+時間間隔が 0 であることを指定する NULL ではない \fItimeout\fP を使って、ポーリングを行うこともできる。
+
+\fIaiocb_list\fP リストで指定した非同期 I/O 操作のうち、
+\fBaio_suspend\fP() を呼び出した時点ですでに完了したものがある場合、
+\fBaio_suspend\fP() はすぐに返る。
+
+\fBaio_suspend\fP() が成功で返った後でどの I/O 操作が完了したかを特定するには、
+\fBaio_error\fP(3) を使って \fIaiocb_list\fP が指す \fIaiocb\fP 構造体のリストを
+スキャンする。
+.SH 関連項目
+\fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_read\fP(3),
+\fBaio_return\fP(3), \fBaio_write\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7), \fBtime\fP(7)
diff --git a/draft/man3/aio_write.3 b/draft/man3/aio_write.3
new file mode 100644 (file)
index 0000000..a2a6cf2
--- /dev/null
@@ -0,0 +1,102 @@
+.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH AIO_WRITE 3 2010\-10\-02 "" "Linux Programmer's Manual"
+.SH 名前
+aio_write \- 非同期で書き込む
+.SH 書式
+\fB#include <aio.h>\fP
+.sp
+\fBint aio_write(struct aiocb *\fP\fIaiocbp\fP\fB);\fP
+.sp
+\fI\-lrt\fP でリンクする。
+.SH 説明
+\fBaio_write\fP() 関数は、\fIaiocbp\fP が指すバッファに記載された I/O リクエストを
+キューに入れる。この関数は \fBwrite\fP(2) の非同期版である。
+呼び出し
+
+    write(fd, buf, count)
+
+の各引き数は \fIaiocb\fP が指す構造体の \fIaio_fildes\fP, \fIaio_buf\fP, \fIaio_nbytes\fP
+に (この順序で) 対応する (\fIaiocb\fP 構造体の説明は \fBaio\fP(7) を参照)。
+.LP
+\fBO_APPEND\fP が設定されない場合、カレントのファイルオフセットに関係なく、
+データは絶対ファイルオフセット \fIaiocbp\->aio_offset\fP を開始点として書き込まれる。
+\fBO_APPEND\fP が設定されている場合、データはファイルの末尾に、
+\fBaio_write\fP() の呼び出しが行われたのと同じ順序で書き込まれる。
+この呼び出しの後のカレントのファイルオフセットは規定されていない。
+.LP
+「非同期」とは「リクエストがキューに入れられたら、この呼び出しはすぐに返る」
+ということである。 呼び出しから戻った時に、書き込みは完了しているかも知れないし、
+完了していないかも知れない。 \fBaio_error\fP(3) を使うことで完了したかをテストできる。
+完了した I/O 操作の返り値は \fBaio_return\fP(3) で取得できる。
+\fIaiocbp\->aio_sigevent\fP を適切に設定することで、
+I/O 完了の非同期通知は受けることもできる。詳細は \fBsigevent\fP(7) を参照。
+.LP
+\fB_POSIX_PRIORITIZED_IO\fP が定義されていて、 かつファイルがこれをサポートしている場合、
+非同期操作は呼び出したプロセスの優先度から \fIaiocbp\->aio_reqprio\fP を引いた優先度で登録 (submit) される。
+.LP
+フィールド \fIaiocbp\->aio_lio_opcode\fP は無視される。
+.LP
+最大オフセットを超えた通常のファイルには、何もデータが書き込まれない。
+.SH 返り値
+成功した場合、0 が返される。 エラーの場合、リクエストはキューに入れられず、
+\-1 が返されて、 \fIerrno\fP が適切に設定される。 エラーは後でのみ検知された場合は、
+エラーは \fBaio_return\fP(3) と \fBaio_error\fP(3) 経由で報告されることになる
+(\fBaio_return\fP(3) は状態 \-1 を返し、\fBaio_error\fP(3) でエラー状態\(em
+\fIerrno\fP で取得できる \fBEBADF\fP のようなエラー状態が返される)。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+リソースが足りない。
+.TP 
+\fBEBADF\fP
+\fIaio_fildes\fP が書き込みのためにオープンされた有効なファイルディスクリプタではない。
+.TP 
+\fBEFBIG\fP
+ファイルは通常のファイルであり、少なくとも 1 バイトを書き込もうとしている。 しかし開始位置が、このファイルの最大オフセットと同じかそれを超えている。
+.TP 
+\fBEINVAL\fP
+\fIaio_offset\fP, \fIaio_reqprio\fP, \fIaio_nbytes\fP のうち 1 つ以上が無効である。
+.TP 
+\fBENOSYS\fP
+この関数がサポートされていない。
+.SH バージョン
+The \fBaio_write\fP() 関数は glibc 2.1 以降で利用できる。
+.SH 準拠
+POSIX.1\-2001, POSIX.1\-2008.
+.SH 注意
+.\" or the control block of the operation
+使用する前に制御ブロックを 0 にしておくのは、よい考えである。 この制御ブロックは、読み込み操作が進行している間は変更すべきでない。
+読み込まれるバッファ領域は 操作の最中にアクセスすべきではない。 さもないと起こる結果が不定になる。
+これに含まれるメモリ領域は、有効なままにしなければならない。
+
+同じ \fIaiocb\fP 構造体を指定して同時に複数の I/O 操作を行った場合、
+どのような結果になるかは不定である。
+.SH 関連項目
+\fBaio_cancel\fP(3), \fBaio_error\fP(3), \fBaio_fsync\fP(3), \fBaio_read\fP(3),
+\fBaio_return\fP(3), \fBaio_suspend\fP(3), \fBlio_listio\fP(3), \fBaio\fP(7)
index 7e2caec..cae433e 100644 (file)
@@ -29,7 +29,7 @@
 .\"*******************************************************************
 .TH DPRINTF 3 2010\-09\-15 GNU "Linux Programmer's Manual"
 .SH 名前
-dprintf, vdprintf \- ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«æ\96\87å­\97å\87ºå\8a\9bã\81\99ã\82\8b
+dprintf, vdprintf \- ファイルディスクリプタに文字出力する
 .SH 書式
 \fB#include <stdio.h>\fP
 .sp
@@ -56,7 +56,7 @@ _GNU_SOURCE
 .PD
 .SH 説明
 (glibc2 ライブラリにおける)  \fBdprintf\fP()  関数と \fBvdprintf\fP()  関数とは、それぞれ \fBfprintf\fP(3)
-関数と \fBvfprintf\fP(3)  関数とにちょうど対応するが、 これらは \fIstdio\fP ストリームではなくファイルディスクリプタ \fIfd\fP
+関数と \fBvfprintf\fP(3)  関数とにちょうど対応するが、 これらは \fIstdio\fP ストリームではなくファイルディスクリプタ \fIfd\fP
 に対して出力を行う。
 .SH 準拠
 .\" .SH NOTES
diff --git a/draft/man3/euidaccess.3 b/draft/man3/euidaccess.3
new file mode 100644 (file)
index 0000000..b3a5016
--- /dev/null
@@ -0,0 +1,76 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH EUIDACCESS 3 2010\-11\-01 "" "Linux Programmer's Manual"
+.SH 名前
+euidaccess, eaccess \- ファイルへのアクセス権を実効ユーザでチェックする
+.SH 書式
+.nf
+\fB#define _GNU_SOURCE\fP             /* feature_test_macros(7) 参照 */
+\fB#include <unistd.h>\fP
+.sp
+\fBint euidaccess(const char *\fP\fIpathname\fP\fB, int \fP\fImode\fP\fB);\fP
+\fBint eaccess(const char *\fP\fIpathname\fP\fB, int \fP\fImode\fP\fB);\fP
+.fi
+.SH 説明
+\fBaccess\fP(2)  と同様、 \fBeuidaccess\fP()  は引き数 \fIpathname\fP で指定されたファイルの許可
+(permission) と存在のチェックを行う。 \fBaccess\fP(2)  はプロセスの実 (real) ユーザID / 実グループID
+を用いてチェックを行うのに対し、 \fBeuidaccess\fP()  は実効 (effective) ID を用いる。
+
+\fImode\fP は \fBR_OK\fP, \fBW_OK\fP, \fBX_OK\fP, \fBF_OK\fP の一つ以上から構成されるマスクである。 \fBR_OK\fP,
+\fBW_OK\fP, \fBX_OK\fP, \fBF_OK\fP は \fBaccess\fP(2)  と同じ意味を持つ。
+
+\fBeaccess\fP()  は \fBeuidaccess\fP()  の同義語であり、他のいくつかのシステムとの互換性のために提供されている。
+.SH 返り値
+成功した場合 (要求した全てについて許可が得られたら)、ゼロが返される。 エラーの場合 (\fImode\fP
+の少なくとも一つのビットで要求した許可がなかった場合や、 他のエラーが起こった場合)、\-1 が返され、 \fIerrno\fP が適切に設定される。
+.SH エラー
+\fBaccess\fP(2)  と同じ。
+.SH バージョン
+\fBeaccess\fP()  関数は glibc のバージョン 2.4 で追加された。
+.SH 準拠
+.\" e.g., FreeBSD 6.1.
+これらの関数は非標準である。 他のいくつかのシステムには \fBeaccess\fP()  関数がある。
+.SH 注意
+\fI警告\fP:
+ある操作を実行する前にこの関数を使ってファイルに対するプロセスのアクセス許可を
+確認してから、その情報に基づいて操作を行うと、競合条件が発生する可能性がある。
+これは二つの操作の間でファイルのアクセス許可が変化する場合があるからである。
+一般的には、必要な操作のみを行い、その際に発生したアクセス許可に関するエラーを
+処理する方が安全である。
+
+この関数は常にシンボリックリンクの展開を行う。
+シンボリックリンクのアクセス許可を確認する必要がある場合は、
+フラグ \fBAT_EACCESS\fP と \fBAT_SYMLINK_NOFOLLOW\fP を付けて
+\fBfaccessat(2)\fP を使うこと。
+.SH 関連項目
+\fBaccess\fP(2), \fBchmod\fP(2), \fBchown\fP(2), \fBfaccessat\fP(2), \fBopen\fP(2),
+\fBsetgid\fP(2), \fBsetuid\fP(2), \fBstat\fP(2), \fBcredentials\fP(7),
+\fBpath_resolution\fP(7)
index 209a081..391c603 100644 (file)
@@ -72,7 +72,7 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 関数 \fBferror\fP()  は \fIstream\fP で示されるストリームのエラー指示子をテストし、 セットされていれば 0 以外の数を返す。
 エラー指示子は、関数 \fBclearerr\fP()  によってのみリセットすることができる。
 .PP
\96¢æ\95° \fBfileno\fP()  ã\81¯ã\80\81å¼\95æ\95° \fIstream\fP ã\82\92調ã\81¹ã\80\81ã\81\9dã\81®æ\95´æ\95°ã\81®ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82
+関数 \fBfileno\fP()  は、引数 \fIstream\fP を調べ、その整数のディスクリプタを返す。
 .PP
 これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3)  を参照のこと。
 .SH エラー
diff --git a/draft/man3/fread.3 b/draft/man3/fread.3
new file mode 100644 (file)
index 0000000..3066949
--- /dev/null
@@ -0,0 +1,79 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" 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.
+.\"
+.\"     @(#)fread.3    6.6 (Berkeley) 6/29/91
+.\"
+.\" Converted for Linux, Mon Nov 29 15:37:33 1993, faith@cs.unc.edu
+.\" Sun Feb 19 21:26:54 1995 by faith, return values
+.\" Modified Thu Apr 20 20:43:53 1995 by Jim Van Zandt <jrv@vanzandt.mv.com>
+.\" Modified Fri May 17 10:21:51 1996 by Martin Schulze <joey@infodrom.north.de>
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH FREAD 3 2012\-03\-30 GNU "Linux Programmer's Manual"
+.SH 名前
+fread, fwrite \- バイナリストリームの入出力
+.SH 書式
+.nf
+\fB#include <stdio.h>\fP
+.sp
+\fBsize_t fread(void *\fP\fIptr\fP\fB, size_t \fP\fIsize\fP\fB, size_t \fP\fInmemb\fP\fB, FILE *\fP\fIstream\fP\fB);\fP
+.sp
+\fBsize_t fwrite(const void *\fP\fIptr\fP\fB, size_t \fP\fIsize\fP\fB, size_t \fP\fInmemb\fP\fB,\fP
+\fB              FILE *\fP\fIstream\fP\fB);\fP
+.fi
+.SH 説明
+\fBfread\fP()  関数は \fIstream\fP ポインタで指定されたストリームから \fInmemb\fP 個のデータを読み込み、 \fIptr\fP
+で与えられた場所に格納する。 個々のデータは \fIsize\fP バイトの長さを持つ。
+.PP
+\fBfwrite\fP()  関数は \fIptr\fP で指定された場所から得た \fInmemb\fP 個のデータを、 \fIstream\fP
+ポインタで指定されたストリームに書き込む。 個々のデータは \fIsize\fP バイトの長さを持つ。
+.PP
+これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3)  を参照のこと。
+.SH 返り値
+成功すると、 \fBfread\fP() と \fBfwrite\fP() は読み書きを行った要素の個数を返す。
+\fIsize\fP が 1 の場合は、この数字は転送されたバイト数と等しい。
+エラーが生じた場合や、ファイルの末尾 (end\-of\-file) に達した場合、
+返り値は指定した個数よりも小さい値 (または 0) となる。
+.PP
+\fBfread\fP()  は end\-of\-file とエラーを区別しないので、 どちらが生じたかを判断するためには、 呼び出し側で \fBfeof\fP(3)
+と \fBferror\fP(3)  とを使用しなければならない。
+.SH 準拠
+C89, POSIX.1\-2001.
+.SH 関連項目
+\fBread\fP(2), \fBwrite\fP(2), \fBfeof\fP(3), \fBferror\fP(3), \fBunlocked_stdio\fP(3)
diff --git a/draft/man3/getaddrinfo.3 b/draft/man3/getaddrinfo.3
new file mode 100644 (file)
index 0000000..fffc1a5
--- /dev/null
@@ -0,0 +1,506 @@
+.\" Copyright (c) 2007, 2008 Michael Kerrisk <mtk.manpages@gmail.com>
+.\" and Copyright (c) 2006 Ulrich Drepper <drepper@redhat.com>
+.\" A few pieces of an earlier version remain:
+.\" Copyright 2000, Sam Varshavchik <mrsam@courier-mta.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" References: RFC 2553
+.\"
+.\" 2005-08-09, mtk, added AI_ALL, AI_ADDRCONFIG, AI_V4MAPPED,
+.\"                    and AI_NUMERICSERV.
+.\" 2006-11-25, Ulrich Drepper <drepper@redhat.com>
+.\"     Add text describing Internationalized Domain Name extensions.
+.\" 2007-06-08, mtk: added example programs
+.\" 2008-02-26, mtk; clarify discussion of NULL 'hints' argument; other
+.\"     minor rewrites.
+.\" 2008-06-18, mtk: many parts rewritten
+.\" 2008-12-04, Petr Baudis <pasky@suse.cz>
+.\"    Describe results ordering and reference /etc/gai.conf.
+.\" FIXME . glibc's 2.9 NEWS file documents DCCP and UDP-lite support
+.\"           and is SCTP support now also there?
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETADDRINFO 3 2012\-04\-14 GNU "Linux Programmer's Manual"
+.SH 名前
+getaddrinfo, freeaddrinfo, gai_strerror \- ネットワークのアドレスとサービスを変換する
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/socket.h>\fP
+\fB#include <netdb.h>\fP
+.sp
+\fBint getaddrinfo(const char *\fP\fInode\fP\fB, const char *\fP\fIservice\fP\fB,\fP
+\fB                const struct addrinfo *\fP\fIhints\fP\fB,\fP
+\fB                struct addrinfo **\fP\fIres\fP\fB);\fP
+.sp
+\fBvoid freeaddrinfo(struct addrinfo *\fP\fIres\fP\fB);\fP
+.sp
+\fBconst char *gai_strerror(int \fP\fIerrcode\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.ad l
+.in
+.sp
+\fBgetaddrinfo\fP(), \fBfreeaddrinfo\fP(), \fBgai_strerror\fP():
+.RS 4
+_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+.RE
+.ad b
+.SH 説明
+.\" .BR getipnodebyname (3),
+.\" .BR getipnodebyaddr (3),
+\fBgetaddrinfo\fP()  は、(インターネットのホストとサービスを識別する)  \fInode\fP と \fIservice\fP を渡すと、一つ以上の
+\fIaddrinfo\fP 構造体を返す。それぞれの \fIaddrinfo\fP 構造体には、 \fBbind\fP(2)  や \fBconnect\fP(2)
+を呼び出す際に指定できるインターネットアドレスが格納されている。 \fBgetaddrinfo\fP()  関数は、 \fBgetservbyname\fP(3)
+と \fBgetservbyport\fP(3)  の機能をまとめて一つのインターフェースにしたものであるが、 これらの関数と違い、
+\fBgetaddrinfo\fP()  はリエントラントであり、 \fBgetaddrinfo\fP()  を使うことでプログラムは IPv4 と IPv6
+の違いに関する依存関係を なくすことができる。
+.PP
+\fBgetaddrinfo\fP()  が用いる \fIaddrinfo\fP 構造体は以下のフィールドを含む。
+.sp
+.in +4n
+.nf
+struct addrinfo {
+    int              ai_flags;
+    int              ai_family;
+    int              ai_socktype;
+    int              ai_protocol;
+    socklen_t        ai_addrlen;
+    struct sockaddr *ai_addr;
+    char            *ai_canonname;
+    struct addrinfo *ai_next;
+};
+.fi
+.in
+.PP
+\fIhints\fP 引き数は \fIaddrinfo\fP 構造体を指し示し、この構造体を用いて \fIres\fP
+が指すリストに入れて返すソケットアドレス構造体を選択するための基準を指定する。 \fIhints\fP が NULL でない場合、 \fIhints\fP は
+\fIaddrinfo\fP 構造体を指し示し、その構造体のフィールド \fIai_family\fP, \fIai_socktype\fP,
+\fIai_protocol\fP で \fBgetaddrinfo\fP()  が返すソケットアドレス集合に対する基準を指定する。
+.TP  12
+\fIai_family\fP
+このフィールドは返されるアドレスの希望のアドレスファミリーを指定する。 このフィールドに指定できる有効な値としては \fBAF_INET\fP と
+\fBAF_INET6\fP がある。 また、値 \fBAF_UNSPEC\fP を指定すると、 \fBgetaddrinfo\fP()  は \fInode\fP と
+\fIservice\fP で使用できるいずれかのアドレスファミリー (例えば IPv4 か IPv6) の ソケットアドレスを返すことを求められる。
+.TP 
+\fIai_socktype\fP
+このフィールドは推奨のソケット型 (例えば \fBSOCK_STREAM\fP や \fBSOCK_DGRAM\fP)  を指定する。 このフィールドに 0
+を指定すると、任意のソケット型のソケットアドレスを \fBgetaddrinfo\fP()  が返してよいことを意味する。
+.TP 
+\fIai_protocol\fP
+このフィールドは返されるソケットアドレスのプロトコルを指定する。 このフィールドに 0 を指定すると、任意のプロトコルののソケットアドレスを
+\fBgetaddrinfo\fP()  が返してよいことを意味する。
+.TP 
+\fIai_flags\fP
+このフィールドは、追加のオプション (下記) を指定する。 複数のフラグを指定する際には、それらのビット単位の OR をとって指定する。
+.PP
+\fIhints\fP が指し示す構造体の他のすべてのフィールドには 0 か NULL ポインタを適切に入れなければならない。 \fIhints\fP に NULL
+を指定するのは、 \fIai_socktype\fP と \fIai_protocol\fP に 0 を、 \fIai_family\fP に \fBAF_UNSPEC\fP
+を、 \fIai_flags\fP に \fB(AI_V4MAPPED\ |\ AI_ADDRCONFIG)\fP を設定するのと等価である。
+
+\fInode\fP には、数値形式のネットワークアドレス (IPv4 の場合は \fBinet_aton\fP(3)
+でサポートされているドット区切りの数字による表記、 IPv6 の場合は \fBinet_pton\fP(3)  でサポートされている 16 進数の文字列形式)
+もしくは ネットワークホスト名を指定する。 ネットワークホスト名を指定した場合には、そのネットワークアドレスが検索され、 名前解決が行なわれる。
+\fIhints.ai_flags\fP に \fBAI_NUMERICHOST\fP フラグが含まれている場合は、 \fInode\fP
+は数値形式のネットワークアドレスでなければならない。 \fBAI_NUMERICHOST\fP
+フラグを使うと、時間の掛かる可能性のあるネットワークホストアドレスの検索は すべて抑制される。
+.PP
+\fIhints.ai_flags\fP に \fBAI_PASSIVE\fP フラグが指定され、かつ \fInode\fP が NULL の場合、
+返されるソケットアドレスは コネクションを \fBaccept\fP(2)  するためのソケットを \fBbind\fP(2)  するのに適したものとなる。
+返されるソケットアドレスには「ワイルドカード・アドレス」 (IPv4 アドレスの場合は \fBINADDR_ANY\fP、 IPv6 アドレスの場合は
+\fBIN6ADDR_ANY_INIT\fP)  が入る。 ワイルドカード・アドレスは、任意のホストのネットワークアドレスで接続を
+受け付けようとするアプリケーション (通常はサーバー) で用いられる。 \fInode\fP が NULL でない場合、 \fBAI_PASSIVE\fP
+フラグは無視される。
+.PP
+\fIhints.ai_flags\fP に \fBAI_PASSIVE\fP フラグがセットされていない場合、 返されるソケットアドレスは
+\fBconnect\fP(2), \fBsendto\fP(2), \fBsendmsg\fP(2)  での使用に適したものとなる。 \fInode\fP が NULL
+の場合、ネットワークアドレスにはループバック・インターフェイスの アドレス (IPv4 アドレスの場合は \fBINADDR_LOOPBACK\fP IPv6
+アドレスの場合は \fBIN6ADDR_LOOPBACK_INIT\fP)\fBが設定される。\fP これは同じホスト上で動作している接続相手と通信するような
+アプリケーションで用いられる。
+.PP
+\fIservice\fP により、返される各アドレス構造体のポート番号が決まる。 この引き数がサービス名 (\fBservices\fP(5)  参照)
+の場合、対応するポート番号に翻訳される。 この引き数には 10 進数も指定することができ、 この場合にはバイナリへの変換だけが行われる。
+\fIservice\fP が NULL の場合、返されるソケットアドレスのポート番号は 初期化されないままとなる。 \fIhints.ai_flags\fP に
+\fBAI_NUMERICSERV\fP が指定され、かつ \fIservice\fP が NULL でない場合、 \fIservice\fP
+は数値のポート番号を含む文字列を指し示さなければならない。 このフラグは、名前解決サービスが不要であることが分かっている場合に、
+サービスの起動を抑制するために用いられる。
+.PP
+\fInode\fP と \fIservice\fP のどちらかは NULL にしてよいが、両方同時に NULL にしてはならない。
+.PP
+\fBgetaddrinfo\fP()  関数は、 \fIaddrinfo\fP 構造体のメモリ確保を行い、 \fIaddrinfo\fP
+構造体のリンクリストを初期化し、 \fIres\fP にリストの先頭へのポインタを入れて返す。 このとき、各構造体のネットワークアドレスは \fInode\fP と
+\fIservice\fP に一致し、 \fIhints\fP で課されたすべての制限を満たすものとなる。 リンクリストの要素は \fIai_next\fP
+フィールドにより連結される。
+
+リンクリストの \fIaddrinfo\fP 構造体は複数個になることもあり、その理由はいくつかある。 ネットワークホストがマルチホームである、
+複数のプロトコルでアクセスできる (例えば \fBAF_INET\fP と \fBAF_INET6\fP の両方) 、 複数のソケット種別で同じサービスが利用できる
+(例えば、ひとつが \fBSOCK_STREM\fP アドレスで、もうひとつが \fBSOCK_DGRAM\fP アドレスである)、がある。
+通常は、アプリケーションは返された順序でアドレスを試すべきである。 \fBgetaddrinfo\fP()  の中で使用される並べ替え関数は RFC\ 3484 で定義されている。 特殊なシステムでは、 \fI/etc/gai.conf\fP を編集することで、この順序を微調整することができる
+(\fI/etc/gai.conf\fP は glibc 2.5 以降で利用できる)。
+.PP
+.\" In glibc prior to 2.3.4, the ai_canonname of each addrinfo
+.\" structure was set pointing to the canonical name; that was
+.\" more than POSIX.1-2001 specified, or other implementations provided.
+.\" MTK, Aug 05
+\fIhints.ai_flags\fP に \fBAI_CANONNAME\fP フラグが含まれている場合、返されるリストの最初の \fIaddrinfo\fP
+構造体の \fIai_canonname\fP フィールドはホストの公式な名前を指すように設定される。
+
+返される各々の \fIaddrinfo\fP 構造体の残りのフィールドは以下のように初期化される。
+.IP * 2
+\fIai_family\fP, \fIai_socktype\fP, \fIai_protocol\fP フィールドはソケット生成パラメータを返す
+(これらのフィールドの意味は \fBsocket\fP(2)  の同じ名前の引き数と同じである)。 例えば、 \fIai_family\fP は
+\fBAF_INET\fP や \fBAF_INET6\fP を返し、 \fIai_socktype\fP は \fBSOCK_DGRAM\fP や
+\fBSOCK_STREAM\fP を返し、 \fIai_protocol\fP はそのソケットのプロトコルを返す。
+.IP *
+\fIai_addr\fP フィールドにはソケットアドレスへのポインタが書き込まれ、 \fIai_addrlen\fP
+フィールドにはソケットアドレスの長さがバイト単位で書き込まれる。
+.PP
+\fIhints.ai_flags\fP が \fBAI_ADDRCONFIG\fP を含む場合、 \fIres\fP が指すリストには、 ローカルシステムに最低一つの
+IPv4 アドレスが設定されている場合は IPv4 アドレスが返され、 ローカルシステムに最低一つの IPv6 アドレスが設定されている場合は IPv6
+アドレスが返される。
+.PP
+\fIhint.ai_flags\fP に \fBAI_V4MAPPED\fP が指定されていて、 \fIhints.ai_family\fP に \fBAF_INET6\fP
+が指定され、 マッチする IPv6 アドレスが見つからなかった場合、 \fIres\fP が指すリストには IPv4\-mapped IPv6
+アドレスが返される。 \fIhints.ai_flags\fP に \fBAI_V4MAPPED\fP と \fBAI_ALL\fP の両方が指定されている場合、
+\fIres\fP が指すリストには IPv6 アドレスと IPv4\-mapped IPv6 アドレスの 両方が返される。 \fBAI_V4MAPPED\fP
+が指定されていない場合、 \fBAI_ALL\fP は無視される。
+.PP
+\fBfreeaddrinfo\fP()  関数は、 リンクリスト \fIres\fP に対して動的に割り当てられたメモリを解放する。
+.SS "国際化ドメイン名のための getaddrinfo() の拡張"
+.PP
+glibc 2.3.4 から、 \fBgetaddrinfo\fP()  は入出力するホスト名を透過的に国際化ドメイン名 (IDN) 形式 (RFC 3490
+の \fIInternationalizing Domain Names in Applications (IDNA)\fP を参照のこと)
+と変換することを選択的に認めるように拡張されている。 4 つの新しいフラグが定義されている:
+.TP 
+\fBAI_IDN\fP
+このフラグが指定されると、 \fInode\fP で与えられたノード名は必要があれば IDN 形式に変換される。
+ソース符号化形式は現在のロケールのものである。
+
+.\" Implementation Detail:
+.\" To minimize effects on system performance the implementation might
+.\" want to check whether the input string contains any non-ASCII
+.\" characters.  If there are none the IDN step can be skipped completely.
+.\" On systems which allow not-ASCII safe encodings for a locale this
+.\" might be a problem.
+入力名に非 ASCII 文字が含まれている場合、 IDN 符号化形式が使われる。 非 ASCII
+文字が含まれている(ピリオドで区切られる)部分ノード名は、 名前解決機能に渡される前に ASCII 互換符号化形式 (ACE) を使って 符号化される。
+.TP 
+\fBAI_CANONIDN\fP
+\fBAI_CANONNAME\fP が指定されている場合、 \fBgetaddrinfo\fP()  は名前の検索に成功した後、 返された \fIaddrinfo\fP
+構造体に対応するノードの正規名を返す。 返り値は名前解決機能から返された値の正確なコピーである。
+
+.\"
+.\"Implementation Detail:
+.\"If no component of the returned name starts with xn\-\- the IDN
+.\"step can be skipped, therefore avoiding unnecessary slowdowns.
+\fBAI_CANONIDN\fP 名前が ACE で符号化されている場合、一つまたは複数の名前の構成要素の先頭に \fIxn\-\-\fP を含んでいる。
+これらの構成要素を読み込み可能な形に変換するために、 \fBAI_CANONNAME\fP と共に \fBAI_CANONIDN\fP フラグを渡すことも出来る。
+返される文字列は現在のロケールの符号化形式で符号化されている。
+.TP 
+\fBAI_IDN_ALLOW_UNASSIGNED\fP, \fBAI_IDN_USE_STD3_ASCII_RULES\fP
+これらのフラグをセットすると、IDNA 処理で使用されるフラグ IDNA_ALLOW_UNASSIGNED (未割り当ての Unicode
+のコードポイントを許容) と IDNA_USE_STD3_ASCII_RULES (出力が STD3 準拠のホスト名かをチェックする)
+がそれぞれ有効になる。
+.SH 返り値
+.\" FIXME glibc defines the following additional errors, some which
+.\" can probably be returned by getaddrinfo(); they need to
+.\" be documented.
+.\" #ifdef __USE_GNU
+.\" #define EAI_INPROGRESS  -100  /* Processing request in progress.  */
+.\" #define EAI_CANCELED    -101  /* Request canceled.  */
+.\" #define EAI_NOTCANCELED -102  /* Request not canceled.  */
+.\" #define EAI_ALLDONE     -103  /* All requests done.  */
+.\" #define EAI_INTR        -104  /* Interrupted by a signal.  */
+.\" #define EAI_IDN_ENCODE  -105  /* IDN encoding failed.  */
+.\" #endif
+\fBgetaddrinfo\fP()  は成功すると 0 を返し、失敗すると以下の非 0 のエラーコードのいずれかを返す。
+.TP 
+\fBEAI_ADDRFAMILY\fP
+.\" Not in SUSv3
+指定されたネットワークホストには、 要求されたアドレスファミリーのネットワークアドレスがない。
+.TP 
+\fBEAI_AGAIN\fP
+ネームサーバーから一時的な失敗 (temporary failure)  を意味する返事が返された。後でもう一度試してみよ。
+.TP 
+\fBEAI_BADFLAGS\fP
+\fIhints.ai_flags\fP のフラグに不正なフラグが含まれている。または、 \fIhints.ai_flags\fP に
+\fBAI_CANONNAME\fP が含まれていて、かつ \fIname\fP が NULL であった。
+.TP 
+\fBEAI_FAIL\fP
+ネームサーバーから恒久的な失敗 (permanent failure)  を意味する返事が返された。
+.TP 
+\fBEAI_FAMILY\fP
+要求されたアドレスファミリーがサポートされていない。
+.TP 
+\fBEAI_MEMORY\fP
+メモリが足りない。
+.TP 
+\fBEAI_NODATA\fP
+.\" Not in SUSv3
+指定されたネットワークホストは存在するが、 ネットワークアドレスがひとつも定義されていない。
+.TP 
+\fBEAI_NONAME\fP
+\fInode\fP と \fIservice\fP のどちらかが不明、または \fInode\fP と \fIservice\fP の両方が NULL だった場合、または
+\fBAI_NUMERICSERV\fP が \fIhints.ai_flags\fP に指定されていて、 \fIhints.ai_flags\fP と
+\fIservice\fP が数値のポート番号の文字列でない。
+.TP 
+\fBEAI_SERVICE\fP
+要求されたサービスは、要求されたソケットタイプでは利用できない。 他のソケットタイプでなら利用可能かもしれない。 このエラーが発生する例としては、
+\fIservice\fP が "shell" (ストリーム・ソケットでのみ利用できるサービス) で、 \fIhints.ai_protocol\fP に
+\fBIPPROTO_UDP\fP が指定されたり、 \fIhints.ai_socktype\fP に \fBSOCK_DGRAM\fP が指定されたりした場合がある。
+また、 \fIservice\fP が NULL 以外で、 \fIhints.ai_socktype\fP に \fBSOCK_RAW\fP
+(サービスの考え方をサポートしていないソケット種別)  が指定された場合にも、このエラーが発生する。
+.TP 
+\fBEAI_SOCKTYPE\fP
+要求されたソケットタイプがサポートされていない。 このエラーが発生する例としては、 \fIhints.ai_socktype\fP と
+\fIhints.ai_protocol\fP が矛盾している場合 (例えば \fIhints.ai_socktype\fP が \fBSOCK_DGRAM\fP で
+\fIhints.ai_protocol\fP が \fBIPPROTO_TCP\fP)  がある。
+.TP 
+\fBEAI_SYSTEM\fP
+その他のシステムエラー。詳しくは \fIerrno\fP を調べること。
+.PP
+\fBgai_strerror\fP()  関数を用いると、これらのエラーコードを人間に可読な文字列に変換できるので、 エラー報告に適するだろう。
+.SH ファイル
+\fI/etc/gai.conf\fP
+.SH 準拠
+POSIX.1\-2001.  \fBgetaddrinfo\fP()  関数は RFC 2553 に記載されている。
+.SH 注意
+\fBgetaddrinfo\fP()  は、IPv6 scope\-ID を指定するために \fIaddress\fP\fB%\fP\fIscope\-id\fP
+記法をサポートしている。
+
+\fBAI_ADDRCONFIG\fP, \fBAI_ALL\fP, \fBAI_V4MAPPED\fP は glibc 2.3.3 以降で利用可能である。
+\fBAI_NUMERICSERV\fP は glibc 2.3.4 以降で利用可能である。
+
+POSIX.1\-2001 によると、 \fIhints\fP に NULL が指定された場合、 \fIai_flags\fP を 0 とみなすべきとされている。
+GNU C ライブラリでは、この場合に、代わりに \fIai_flags\fP を \fB(AI_V4MAPPED\ |\ AI_ADDRCONFIG)\fP
+とみなすようになっている。 この値の方が標準規格の改善になると考えられているからである。
+.SH 例
+.\" getnameinfo.3 refers to this example
+.\" socket.2 refers to this example
+.\" bind.2 refers to this example
+.\" connect.2 refers to this example
+.\" recvfrom.2 refers to this example
+.\" sendto.2 refers to this example
+以下のプログラムは、 \fBgetaddrinfo\fP(), \fBgai_strerror\fP(), \fBfreeaddrinfo\fP(),
+\fBgetnameinfo\fP(3)  の使い方を示したものである。 プログラムは UDP データグラムの echo サーバとクライアントである。
+.SS サーバのプログラム
+\&
+.nf
+#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h> 
+#include <unistd.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <netdb.h>
+
+#define BUF_SIZE 500
+
+int
+main(int argc, char *argv[])
+{
+    struct addrinfo hints;
+    struct addrinfo *result, *rp;
+    int sfd, s;
+    struct sockaddr_storage peer_addr;
+    socklen_t peer_addr_len;
+    ssize_t nread;
+    char buf[BUF_SIZE];
+
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s port\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    memset(&hints, 0, sizeof(struct addrinfo));
+    hints.ai_family = AF_UNSPEC;    /* Allow IPv4 or IPv6 */
+    hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */
+    hints.ai_flags = AI_PASSIVE;    /* For wildcard IP address */
+    hints.ai_protocol = 0;          /* Any protocol */
+    hints.ai_canonname = NULL;
+    hints.ai_addr = NULL;
+    hints.ai_next = NULL;
+
+    s = getaddrinfo(NULL, argv[1], &hints, &result);
+    if (s != 0) {
+        fprintf(stderr, "getaddrinfo: %s\en", gai_strerror(s));
+        exit(EXIT_FAILURE);
+    }
+
+    /* getaddrinfo() returns a list of address structures.
+       Try each address until we successfully bind(2).
+       If socket(2) (or bind(2)) fails, we (close the socket
+       and) try the next address. */
+
+    for (rp = result; rp != NULL; rp = rp\->ai_next) {
+        sfd = socket(rp\->ai_family, rp\->ai_socktype,
+                rp\->ai_protocol);
+        if (sfd == \-1)
+            continue;
+
+        if (bind(sfd, rp\->ai_addr, rp\->ai_addrlen) == 0)
+            break;                  /* Success */
+
+        close(sfd);
+    }
+
+    if (rp == NULL) {               /* No address succeeded */
+        fprintf(stderr, "Could not bind\en");
+        exit(EXIT_FAILURE);
+    }
+
+    freeaddrinfo(result);           /* No longer needed */
+
+    /* Read datagrams and echo them back to sender */
+
+    for (;;) {
+        peer_addr_len = sizeof(struct sockaddr_storage);
+        nread = recvfrom(sfd, buf, BUF_SIZE, 0,
+                (struct sockaddr *) &peer_addr, &peer_addr_len);
+        if (nread == \-1)
+            continue;               /* Ignore failed request */
+
+        char host[NI_MAXHOST], service[NI_MAXSERV];
+
+        s = getnameinfo((struct sockaddr *) &peer_addr,
+                        peer_addr_len, host, NI_MAXHOST,
+                        service, NI_MAXSERV, NI_NUMERICSERV);
+       if (s == 0)
+            printf("Received %ld bytes from %s:%s\en",
+                    (long) nread, host, service);
+        else
+            fprintf(stderr, "getnameinfo: %s\en", gai_strerror(s));
+
+        if (sendto(sfd, buf, nread, 0,
+                    (struct sockaddr *) &peer_addr,
+                    peer_addr_len) != nread)
+            fprintf(stderr, "Error sending response\en");
+    }
+}
+.fi
+.SS クライアントのプログラム
+\&
+.nf
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#define BUF_SIZE 500
+
+int
+main(int argc, char *argv[])
+{
+    struct addrinfo hints;
+    struct addrinfo *result, *rp;
+    int sfd, s, j;
+    size_t len;
+    ssize_t nread;
+    char buf[BUF_SIZE];
+
+    if (argc < 3) {
+        fprintf(stderr, "Usage: %s host port msg...\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    /* Obtain address(es) matching host/port */
+
+    memset(&hints, 0, sizeof(struct addrinfo));
+    hints.ai_family = AF_UNSPEC;    /* Allow IPv4 or IPv6 */
+    hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */
+    hints.ai_flags = 0;
+    hints.ai_protocol = 0;          /* Any protocol */
+
+    s = getaddrinfo(argv[1], argv[2], &hints, &result);
+    if (s != 0) {
+        fprintf(stderr, "getaddrinfo: %s\en", gai_strerror(s));
+        exit(EXIT_FAILURE);
+    }
+
+    /* getaddrinfo() returns a list of address structures.
+       Try each address until we successfully connect(2).
+       If socket(2) (or connect(2)) fails, we (close the socket
+       and) try the next address. */
+
+    for (rp = result; rp != NULL; rp = rp\->ai_next) {
+        sfd = socket(rp\->ai_family, rp\->ai_socktype,
+                     rp\->ai_protocol);
+        if (sfd == \-1)
+            continue;
+
+        if (connect(sfd, rp\->ai_addr, rp\->ai_addrlen) != \-1)
+            break;                  /* Success */
+
+        close(sfd);
+    }
+
+    if (rp == NULL) {               /* No address succeeded */
+        fprintf(stderr, "Could not connect\en");
+        exit(EXIT_FAILURE);
+    }
+
+    freeaddrinfo(result);           /* No longer needed */
+
+    /* Send remaining command\-line arguments as separate
+       datagrams, and read responses from server */
+
+    for (j = 3; j < argc; j++) {
+        len = strlen(argv[j]) + 1;
+                /* +1 for terminating null byte */
+
+        if (len + 1 > BUF_SIZE) {
+            fprintf(stderr,
+                    "Ignoring long message in argument %d\en", j);
+            continue;
+        }
+
+        if (write(sfd, argv[j], len) != len) {
+            fprintf(stderr, "partial/failed write\en");
+            exit(EXIT_FAILURE);
+        }
+
+        nread = read(sfd, buf, BUF_SIZE);
+        if (nread == \-1) {
+            perror("read");
+            exit(EXIT_FAILURE);
+        }
+
+        printf("Received %ld bytes: %s\en", (long) nread, buf);
+    }
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+.\" .BR getipnodebyaddr (3),
+.\" .BR getipnodebyname (3),
+\fBgetaddrinfo_a\fP(3), \fBgethostbyname\fP(3), \fBgetnameinfo\fP(3), \fBinet\fP(3),
+\fBhostname\fP(7), \fBip\fP(7)
diff --git a/draft/man3/getifaddrs.3 b/draft/man3/getifaddrs.3
deleted file mode 100644 (file)
index 48d9ebe..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-.\" Copyright (c) 2008 Petr Baudis <pasky@suse.cz>
-.\" and copyright (c) 2009, Linux Foundation, written by Michael Kerrisk
-.\"     <mtk.manpages@gmail.com>
-.\"
-.\" Permission is granted to make and distribute verbatim copies of this
-.\" manual provided the copyright notice and this permission notice are
-.\" preserved on all copies.
-.\"
-.\" Permission is granted to copy and distribute modified versions of this
-.\" manual under the conditions for verbatim copying, provided that the
-.\" entire resulting derived work is distributed under the terms of a
-.\" permission notice identical to this one.
-.\"
-.\" Since the Linux kernel and libraries are constantly changing, this
-.\" manual page may be incorrect or out-of-date.  The author(s) assume no
-.\" responsibility for errors or omissions, or for damages resulting from
-.\" the use of the information contained herein.  The author(s) may not
-.\" have taken the same level of care in the production of this manual,
-.\" which is licensed free of charge, as they might when working
-.\" professionally.
-.\"
-.\" Formatted or processed versions of this manual, if unaccompanied by
-.\" the source, must acknowledge the copyright and authors of this work.
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\"
-.\" 2008-12-08 Petr Baudis <pasky@suse.cz>
-.\"    Rewrite the BSD manpage in the Linux man pages style and account
-.\"    for glibc specificities, provide an example.
-.\" 2009-01-14 mtk, many edits and changes, rewrote example program.
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.TH GETIFADDRS 3 2010\-10\-06 GNU "Linux Programmer's Manual"
-.SH 名前
-getifaddrs, freeifaddrs \- get interface addresses
-.SH 書式
-.nf
-\fB#include <sys/types.h>\fP
-\fB#include <ifaddrs.h>\fP
-.sp
-\fBint getifaddrs(struct ifaddrs **\fP\fIifap\fP\fB);\fP
-.sp
-\fBvoid freeifaddrs(struct ifaddrs *\fP\fIifa\fP\fB);\fP
-.fi
-.SH 説明
-The \fBgetifaddrs\fP()  function creates a linked list of structures describing
-the network interfaces of the local system, and stores the address of the
-first item of the list in \fI*ifap\fP.  The list consists of \fIifaddrs\fP
-structures, defined as follows:
-.sp
-.in +4n
-.nf
-struct ifaddrs {
-    struct ifaddrs  *ifa_next;    /* Next item in list */
-    char            *ifa_name;    /* Name of interface */
-    unsigned int     ifa_flags;   /* Flags from SIOCGIFFLAGS */
-    struct sockaddr *ifa_addr;    /* Address of interface */
-    struct sockaddr *ifa_netmask; /* Netmask of interface */
-    union {
-        struct sockaddr *ifu_broadaddr;
-                         /* Broadcast address of interface */
-        struct sockaddr *ifu_dstaddr;
-                         /* Point\-to\-point destination address */
-    } ifa_ifu;
-#define              ifa_broadaddr ifa_ifu.ifu_broadaddr
-#define              ifa_dstaddr   ifa_ifu.ifu_dstaddr
-    void            *ifa_data;    /* Address\-specific data */
-};
-.fi
-.in
-.PP
-The \fIifa_next\fP field contains a pointer to the next structure on the list,
-or NULL if this is the last item of the list.
-.PP
-.\" The constant
-.\" .B IF NAMESIZE
-.\" indicates the maximum length of this field.
-The \fIifa_name\fP points to the null\-terminated interface name.
-.PP
-The \fIifa_flags\fP field contains the interface flags, as returned by the
-\fBSIOCGIFFLAGS\fP \fBioctl\fP(2)  operation (see \fBnetdevice\fP(7)  for a list of
-these flags).
-.PP
-The \fIifa_addr\fP field points to a structure containing the interface
-address.  (The \fIsa_family\fP subfield should be consulted to determine the
-format of the address structure.)
-.PP
-The \fIifa_netmask\fP field points to a structure containing the netmask
-associated with \fIifa_addr\fP, if applicable for the address family.
-.PP
-Depending on whether the bit \fBIFF_BROADCAST\fP or \fBIFF_POINTOPOINT\fP is set
-in \fIifa_flags\fP (only one can be set at a time), either \fIifa_broadaddr\fP
-will contain the broadcast address associated with \fIifa_addr\fP (if
-applicable for the address family) or \fIifa_dstaddr\fP will contain the
-destination address of the point\-to\-point interface.
-.PP
-The \fIifa_data\fP field points to a buffer containing address\-family\-specific
-data; this field may be NULL if there is no such data for this interface.
-.PP
-The data returned by \fBgetifaddrs\fP()  is dynamically allocated and should be
-freed using \fBfreeifaddrs\fP()  when no longer needed.
-.SH 返り値
-On success, \fBgetifaddrs\fP()  returns zero; on error, \-1 is returned, and
-\fIerrno\fP is set appropriately.
-.SH エラー
-\fBgetifaddrs\fP()  may fail and set \fIerrno\fP for any of the errors specified
-for \fBsocket\fP(2), \fBbind\fP(2), \fBgetsockname\fP(2), \fBrecvmsg\fP(2),
-\fBsendto\fP(2), \fBmalloc\fP(3), or \fBrealloc\fP(3).
-.SH バージョン
-The \fBgetifaddrs\fP()  function first appeared in glibc 2.3, but before glibc
-2.3.3, the implementation only supported IPv4 addresses; IPv6 support was
-added in glibc 2.3.3.  Support of address families other than IPv4 is only
-available on kernels that support netlink.
-.SH 準拠
-.\" , but the BSD-derived documentation generally
-.\" appears to be confused and obsolete on this point.
-.\" i.e., commonly it still says one of them will be NULL, even if
-.\" the ifa_ifu union is already present
-Not in POSIX.1\-2001.  This function first appeared in BSDi and is present on
-the BSD systems, but with slightly different semantics
-documented\(emreturning one entry per interface, not per address.  This
-means \fIifa_addr\fP and other fields can actually be NULL if the interface has
-no address, and no link\-level address is returned if the interface has an IP
-address assigned.  Also, the way of choosing either \fIifa_broadaddr\fP or
-\fIifa_dstaddr\fP differs on various systems.
-.SH 注意
-The addresses returned on Linux will usually be the IPv4 and IPv6 addresses
-assigned to the interface, but also one \fBAF_PACKET\fP address per interface
-containing lower\-level details about the interface and its physical layer.
-In this case, the \fIifa_data\fP field may contain a pointer to a \fIstruct
-net_device_stats\fP, defined in \fI<linux/netdevice.h>\fP, which contains
-various interface attributes and statistics.
-.SH 例
-The program below demonstrates the use of \fBgetifaddrs\fP(), \fBfreeifaddrs\fP(),
-and \fBgetnameinfo\fP(3).  Here is what we see when running this program on one
-system:
-.in +4n
-.nf
-
-$ \fB./a.out\fP
-lo      address family: 17 (AF_PACKET)
-eth0    address family: 17 (AF_PACKET)
-lo      address family: 2 (AF_INET)
-        address: <127.0.0.1>
-eth0    address family: 2 (AF_INET)
-        address: <10.1.1.4>
-lo      address family: 10 (AF_INET6)
-        address: <::1>
-eth0    address family: 10 (AF_INET6)
-        address: <fe80::2d0:59ff:feda:eb51%eth0>
-.fi
-.in
-.SS "Program source"
-\&
-.nf
-#include <arpa/inet.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <ifaddrs.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-int
-main(int argc, char *argv[])
-{
-    struct ifaddrs *ifaddr, *ifa;
-    int family, s;
-    char host[NI_MAXHOST];
-
-    if (getifaddrs(&ifaddr) == \-1) {
-        perror("getifaddrs");
-        exit(EXIT_FAILURE);
-    }
-
-    /* Walk through linked list, maintaining head pointer so we
-       can free list later */
-
-    for (ifa = ifaddr; ifa != NULL; ifa = ifa\->ifa_next) {
-        if (ifa\->ifa_addr == NULL)
-            continue;
-
-        family = ifa\->ifa_addr\->sa_family;
-
-        /* Display interface name and family (including symbolic
-           form of the latter for the common families) */
-
-        printf("%s\t  address family: %d%s\en",
-                ifa\->ifa_name, family,
-                (family == AF_PACKET) ? " (AF_PACKET)" :
-                (family == AF_INET) ?   " (AF_INET)" :
-                (family == AF_INET6) ?  " (AF_INET6)" : "");
-
-        /* For an AF_INET* interface address, display the address */
-
-        if (family == AF_INET || family == AF_INET6) {
-            s = getnameinfo(ifa\->ifa_addr,
-                    (family == AF_INET) ? sizeof(struct sockaddr_in) :
-                                          sizeof(struct sockaddr_in6),
-                    host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
-            if (s != 0) {
-                printf("getnameinfo() failed: %s\en", gai_strerror(s));
-                exit(EXIT_FAILURE);
-            }
-            printf("\etaddress: <%s>\en", host);
-        }
-    }
-
-    freeifaddrs(ifaddr);
-    exit(EXIT_SUCCESS);
-}
-.fi
-.SH 関連項目
-\fBbind\fP(2), \fBgetsockname\fP(2), \fBsocket\fP(2), \fBpacket\fP(7), \fBifconfig\fP(8)
diff --git a/draft/man3/gets.3 b/draft/man3/gets.3
new file mode 100644 (file)
index 0000000..8ec8411
--- /dev/null
@@ -0,0 +1,98 @@
+.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\" Modified Wed Jul 28 11:12:07 1993 by Rik Faith (faith@cs.unc.edu)
+.\" Modified Fri Sep  8 15:48:13 1995 by Andries Brouwer (aeb@cwi.nl)
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETS 3 2012\-01\-18 GNU "Linux Programmer's Manual"
+.SH 名前
+fgetc, fgets, getc, getchar, gets, ungetc \- 文字と文字列の入力
+.SH 書式
+.nf
+\fB#include <stdio.h>\fP
+.sp
+\fBint fgetc(FILE *\fP\fIstream\fP\fB);\fP
+
+\fBchar *fgets(char *\fP\fIs\fP\fB, int \fP\fIsize\fP\fB, FILE *\fP\fIstream\fP\fB);\fP
+
+\fBint getc(FILE *\fP\fIstream\fP\fB);\fP
+
+\fBint getchar(void);\fP
+
+\fBchar *gets(char *\fP\fIs\fP\fB);\fP
+
+\fBint ungetc(int \fP\fIc\fP\fB, FILE *\fP\fIstream\fP\fB);\fP
+.fi
+.SH 説明
+\fBfgetc\fP()  は、 \fIstream\fP から次の文字を \fIunsigned char\fP として読み、 \fIint\fP
+にキャストして返す。ファイルの終わりやエラーとなった場合は \fBEOF\fP を返す。
+.PP
+\fBgetc\fP()  は \fBfgetc\fP()  と同様だが、 \fIstream\fP を複数回評価するマクロとして実装されているかもしれない。
+.PP
+\fBgetchar\fP()  は \fBgetc(\fP\fIstdin\fP\fB)\fP と同じである。
+.PP
+\fBgets\fP()  は、改行文字か \fBEOF\fP までの 1行を \fIstdin\fP から読み込み \fIs\fP が指すバッファに格納する
+(末尾の改行文字や \fBEOF\fP は NULL バイト (\(aq\e0\(aq) に置き換えられる)。 バッファオーバーランのチェックは行われない
+(下記の「バグ」を参照)。
+.PP
+\fBfgets\fP()  は \fIstream\fP から最大で \fIsize\fP \- 1 個の文字を読み込み、 \fIs\fP が指すバッファに格納する。読み込みは
+\fBEOF\fP または改行文字を読み込んだ後で停止する。 読み込まれた改行文字はバッファに格納される。 終端の NULL バイト
+(\(aq\e0\(aq)  が一つバッファの中の最後の文字の後に書き込まれる。
+.PP
+\fBungetc\fP()  は、後の read 操作で読めるように、 \fIc\fP を \fIunsigned char\fP にキャストして \fIstream\fP
+に書き戻す。 書き戻された文字は逆順に戻される; 書き戻しとして保証されているのは、一文字だけである。
+.PP
+ここで述べた関数や \fIstdio\fP ライブラリの入力関数を同じ入力ストリームに対して互いに混ぜて使うことができる。
+.PP
+これらの処理を停止せずに行いたいときは、 \fBunlocked_stdio\fP(3)  を参照のこと。
+.SH 返り値
+\fBfgetc\fP(), \fBgetc\fP(), \fBgetchar\fP()  は、文字を \fIunsigned char\fP として読んで \fIint\fP
+にキャストして返す。ファイルの終わりやエラーの場合は \fBEOF\fP を返す。
+.PP
+\fBgets\fP()  と \fBfgets\fP()  は、成功すると \fIs\fP を返し、エラーや 1 文字も読み込んでいないのにファイルの終わりになった
+場合に NULL を返す。
+.PP
+\fBungetc\fP()  は成功すると \fIc\fP を返し、エラーの場合は \fBEOF\fP を返す。
+.SH 準拠
+C89, C99, POSIX.1\-2001.
+
+LSB は \fBgets\fP() を非推奨としている。
+POSIX.1\-2008 では \fBgets\fP() に廃止予定の印が付けられている。
+ISO C11 では \fBgets\fP)() の規定が C 言語から削除されている。
+glibc バージョン 2.16 以降では、機能検査マシン \fB_ISOC11_SOURCE\fP が定義された
+場合、glibc ヘッダファイルでは \fBgets\fP)() の宣言が公開されない。
+.SH バグ
+\fBgets\fP()  は絶対に使用してはならない。 前もってデータを知ることなしに \fBgets\fP()  が何文字読むかを知ることはできず、
+\fBgets\fP()  がバッファの終わりを越えて書き込み続けるため、 \fBgets\fP()  を使うのは極めて危険である。
+これを利用してコンピュータのセキュリティが破られてきた。 代わりに \fBfgets\fP()  を使うこと。
+.PP
+入力ストリームのファイルディスクリプタに対して、 \fIstdio\fP ライブラリの入力関数と、低レベル呼び出しの \fBread\fP(2)
+を混ぜて呼び出す事は勧められない。 結果がどうなるかは分からず、おそらくあなたの 望んでいる結果にはならないだろう。
+.SH 関連項目
+\fBread\fP(2), \fBwrite\fP(2), \fBferror\fP(3), \fBfgetwc\fP(3), \fBfgetws\fP(3),
+\fBfopen\fP(3), \fBfread\fP(3), \fBfseek\fP(3), \fBgetline\fP(3), \fBgetwchar\fP(3),
+\fBputs\fP(3), \fBscanf\fP(3), \fBungetwc\fP(3), \fBunlocked_stdio\fP(3),
+\fBfeature_test_macros\fP(7)
diff --git a/draft/man3/insque.3 b/draft/man3/insque.3
new file mode 100644 (file)
index 0000000..0286ee6
--- /dev/null
@@ -0,0 +1,217 @@
+.\" peter memishian -- meem@gnu.ai.mit.edu
+.\" $Id: insque.3,v 1.2 1996/10/30 21:03:39 meem Exp meem $
+.\" and Copyright (c) 2010, Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" References consulted:
+.\"   Linux libc source code (5.4.7)
+.\"   Solaris 2.x, OSF/1, and HP-UX manpages
+.\"   Curry's "UNIX Systems Programming for SVR4" (O'Reilly & Associates 1996)
+.\"
+.\" Changed to POSIX, 2003-08-11, aeb+wh
+.\" mtk, 2010-09-09: Noted glibc 2.4 bug, added info on circular
+.\"    lists, added example program
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH INSQUE 3 2010\-09\-09 "" "Linux Programmer's Manual"
+.SH 名前
+insque, remque \- キューにアイテムを挿入/削除する
+.SH 書式
+.nf
+\fB#include <search.h>\fP
+.sp
+\fBvoid insque(void *\fP\fIelem\fP\fB, void *\fP\fIprev\fP\fB);\fP
+
+\fBvoid remque(void *\fP\fIelem\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+.ad l
+\fBinsque\fP(), \fBremque\fP():
+.RS 4
+_SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+.RE
+.ad
+.SH 説明
+関数 \fBinsque\fP() と \fBremque\fP() は双方向連結リスト (doubly\-linked list) を
+操作する。リスト中のそれぞれの要素は、最初の二つの要素がそれぞれ次と前への
+ポインタであるような構造体である。
+リンクリストは、線形 (linear) か環状 (circular) のどちらかになる
+(線形の場合には、リストの末尾では次へのポインタが NULL になり、
+リストの先頭では前へのポインタが NULL になる)。
+
+\fBinsque\fP() 関数は \fIelem\fP で示される要素を \fIprev\fP で示される
+要素の直後に挿入する。
+
+リストが線形の場合、\fIinsque(elem, NULL)\fP を呼び出すと、
+リストの最初の要素を挿入することができる。
+この呼び出しを行うと \fIelem\fP の次へのポインタと前へのポインタに
+共に NULL が設定される。
+
+リストが環状の場合、呼び出す側が、最初の要素の次へのポインタと前へのポインタ
+が自分自身を指し、また  \fBinsque\fP() の呼び出しで \fIprev\fP 引き数が最初の要素
+を指すように保証しなければならない。
+
+\fBremque\fP() 関数は \fIelem\fP で示される要素を双方向連結リストから取り除く。
+.SH 準拠
+POSIX.1\-2001.
+.SH 注意
+伝統的に (SunOS, Linux libc 4,5 では) これらの関数の引数は \fIstruct qelem
+*\fP型であり、これは以下のように定義されている。
+
+.in +4n
+.nf
+struct qelem {
+    struct qelem *q_forw;
+    struct qelem *q_back;
+    char          q_data[1];
+};
+.fi
+.in
+
+この定義は \fI<search.h>\fP をインクルードする前に \fB_GNU_SOURCE\fP を定義することで得られる。
+
+これらの関数のプロトタイプの置かれる場所は、UNIX の種類により異なる。
+上記は POSIX 版である。 \fI<string.h>\fP にあるシステムもある。
+Linux libc4 と libc5 ではプロトタイプは \fI<stdlib.h>\fP に置かれている。
+.SH バグ
+glibc 2.4 以前では \fIprev\fP に NULL を指定することができなかった。
+その結果、線形のリストを作成するためには、
+呼び出し側は、最初の呼び出しで、リストの最初の 2 つの要素を持ち、
+各要素の次へのポインタと前へのポインタを適切に初期化したリストを
+作成しなければならなかった。
+.SH 例
+次のプログラムは \fBinsque\fP() の使用法を示したものである。
+下記はプログラムの実行例である。
+.in +4n
+.nf
+
+$ \fB./a.out \-c a b c\fP
+Traversing completed list:
+    a
+    b
+    c
+That was a circular list
+.fi
+.in
+.SS プログラムのソース
+\&
+.nf
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <search.h>
+
+struct element {
+    struct element *forward;
+    struct element *backward;
+    char *name;
+};
+
+static struct element *
+new_element(void)
+{
+    struct element *e;
+
+    e = malloc(sizeof(struct element));
+    if (e == NULL) {
+        fprintf(stderr, "malloc() failed\en");
+        exit(EXIT_FAILURE);
+    }
+
+    return e;
+}
+
+int
+main(int argc, char *argv[])
+{
+    struct element *first, *elem, *prev;
+    int circular, opt, errfnd;
+
+    /* The "\-c" command\-line option can be used to specify that the
+       list is circular */
+
+    errfnd = 0;
+    circular = 0;
+    while ((opt = getopt(argc, argv, "c")) != \-1) {
+        switch (opt) {
+        case 'c':
+            circular = 1;
+            break;
+        default:
+            errfnd = 1;
+            break;
+        }
+    }
+
+    if (errfnd || optind >= argc) {
+        fprintf(stderr,  "Usage: %s [\-c] string...\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    /* Create first element and place it in the linked list */
+
+    elem = new_element();
+    first = elem;
+
+    elem\->name = argv[optind];
+
+    if (circular) {
+        elem\->forward = elem;
+        elem\->backward = elem;
+        insque(elem, elem);
+    } else {
+        insque(elem, NULL);
+    }
+
+    /* Add remaining command\-line arguments as list elements */
+
+    while (++optind < argc) {
+        prev = elem;
+
+        elem = new_element();
+        elem\->name = argv[optind];
+        insque(elem, prev);
+    }
+
+    /* Traverse the list from the start, printing element names */
+
+    printf("Traversing completed list:\en");
+    elem = first;
+    do {
+        printf("    %s\en", elem\->name);
+        elem = elem\->forward;
+    } while (elem != NULL && elem != first);
+
+    if (elem == first)
+        printf("That was a circular list\en");
+
+    exit(EXIT_SUCCESS);
+}
+.fi
diff --git a/draft/man3/perror.3 b/draft/man3/perror.3
new file mode 100644 (file)
index 0000000..20a8dcf
--- /dev/null
@@ -0,0 +1,92 @@
+.\" Copyright (c) 1994 Michael Haardt (michael@moria.de), 1994-06-04
+.\" Copyright (c) 1995 Michael Haardt
+.\"      (michael@cantor.informatik.rwth-aachen.de), 1995-03-16
+.\" Copyright (c) 1996 Andries Brouwer (aeb@cwi.nl), 1996-01-13
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" 1996-01-13 aeb: merged in some text contributed by Melvin Smith
+.\"   (msmith@falcon.mercer.peachnet.edu) and various other changes.
+.\" Modified 1996-05-16 by Martin Schulze (joey@infodrom.north.de)
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PERROR 3 2012\-04\-17 "" "Linux Programmer's Manual"
+.SH 名前
+perror \- システムエラーメッセージを出力する
+.SH 書式
+\fB#include <stdio.h>\fP
+.sp
+\fBvoid perror(const char *\fP\fIs\fP\fB);\fP
+.sp
+\fB#include <errno.h>\fP
+.sp
+\fBconst char *\fP\fIsys_errlist\fP\fB[];\fP
+.br
+\fBint \fP\fIsys_nerr\fP\fB;\fP
+.br
+\fBint \fP\fIerrno\fP\fB;\fP
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fIsys_errlist\fP, \fIsys_nerr\fP: _BSD_SOURCE
+.SH 説明
+関数 \fBperror\fP()  は、システムコールやライブラリ関数の呼び出しにおいて、最後に発生した
+エラーに関する説明メッセージを生成し、標準エラー出力に出力する。 (\fIs\fP が NULL でなく、 \fI*s\fP が NULL バイト
+(\(aq\e0\(aq) でない場合には) 引き数の文字列 \fIs\fP がまず出力され、続いてコロン、空白が出力され、
+それからメッセージと改行が出力される。
+
+このメッセージを最大限活用するためには、引き数文字列にエラーが発生した 関数名を入れておくとよい。 エラー番号は外部変数 \fIerrno\fP
+から取得される。 \fIerrno\fP はエラーが発生した時に設定され、 成功した呼び出しではクリアされない。
+
+大域変数のエラーリスト \fIsys_errlist\fP[] は \fIerrno\fP を添字とする配列で、この
+配列から改行無しのエラーメッセージが取得される。 テーブルでの最大のメッセージ
+番号は \fIsys_nerr\fP \-1 となる。 このテーブルを直接参照する際には注意すること。
+なぜなら、新しいエラー番号が \fIsys_errlist\fP[] に追加済とは限らないからである。
+現在では、\fIsys_errlist\fP[] の使用は非推奨となっている。
+
+
+システムコールが失敗した場合、通常、返り値として \-1 が返り、 \fIerrno\fP にエラーを識別する値が設定される (設定されるエラー番号は
+\fI<errno.h>\fP に記載されている)。 多くのライブラリ関数も同様の動作となる。 関数 \fBperror\fP()
+は、このエラーコードの可読なメッセージへの変換を行う。 \fIerrno\fP は、ライブラリ呼び出しが成功した後には未定義であることに注意が必要である:
+その呼び出し自身は成功したとしても、内部で呼び出した他のライブラリ関数が 失敗して、その結果をこの変数に設定することがあるからだ。
+よって、失敗した呼び出しの直後に \fBperror\fP()  を呼ばない場合には \fIerrno\fP の値を 保存しておかなければならない。
+.SH 準拠
+関数 \fBperror\fP()  と外部変数 \fIerrno\fP (\fBerrno\fP(3)  参照) は C89, 4.3BSD, POSIX.1\-2001
+に準拠している。 外部変数 \fIsys_nerr\fP と \fIsys_errlist\fP は BSD に準拠している。
+.SH 注意
+.\" and only when _BSD_SOURCE is defined.
+.\" When
+.\" .B _GNU_SOURCE
+.\" is defined, the symbols
+.\" .I _sys_nerr
+.\" and
+.\" .I _sys_errlist
+.\" are provided.
+外部変数 \fIsys_nerr\fP と \fIsys_errlist\fP は glibc で定義されているが、 \fI<stdio.h>\fP
+に含まれている。
+.SH 関連項目
+\fBerr\fP(3), \fBerrno\fP(3), \fBerror\fP(3), \fBstrerror\fP(3)
index 668477a..82444dc 100644 (file)
@@ -42,7 +42,7 @@
 .\"*******************************************************************
 .TH POPEN 3 2010\-02\-03 GNU "Linux Programmer's Manual"
 .SH 名前
-popen, pclose \- ã\83\97ã\83­ã\82»ã\82¹ã\81¨ã\81®å\85¥å\8a\9b\87ºå\8a\9bç\94¨ã\81®ã\83\91ã\82¤ã\83\97ã\83»ã\82¹ã\83\88ã\83ªã\83¼ã\83 
+popen, pclose \- プロセスとの入力/出力用のパイプストリーム
 .SH 書式
 .nf
 \fB#include <stdio.h>\fP
diff --git a/draft/man3/qsort.3 b/draft/man3/qsort.3
new file mode 100644 (file)
index 0000000..f3cb2d7
--- /dev/null
@@ -0,0 +1,124 @@
+.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" References consulted:
+.\"     Linux libc source code
+.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\"     386BSD man pages
+.\"
+.\" Modified 1993-03-29, David Metcalfe
+.\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu)
+.\" 2006-01-15, mtk, Added example program.
+.\" Modified 2012-03-08, Mark R. Bannister <cambridge@users.sourceforge.net>
+.\"                  and Ben Bacarisse <software@bsb.me.uk>
+.\"     Document qsort_r()
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH QSORT 3 2012\-03\-08 "" "Linux Programmer's Manual"
+.SH 名前
+qsort, qsort_r \- 配列を並べ変える
+.SH 書式
+.nf
+\fB#include <stdlib.h>\fP
+.sp
+\fBvoid qsort(void *\fP\fIbase\fP\fB, size_t \fP\fInmemb\fP\fB, size_t \fP\fIsize\fP\fB,\fP
+\fB           int (*\fP\fIcompar\fP\fB)(const void *, const void *));\fP
+.sp
+\fBvoid qsort_r(void *\fP\fIbase\fP\fB, size_t \fP\fInmemb\fP\fB, size_t \fP\fIsize\fP\fB,\fP
+\fB           int (*\fP\fIcompar\fP\fB)(const void *, const void *, void *),\fP
+\fB           void *\fP\fIarg\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+.ad l
+\fBqsort_r\fP(): _GNU_SOURCE
+.ad b
+.SH 説明
+\fBqsort\fP()  関数は、 \fInmemb\fP 個の大きさ \fIsize\fP の要素をもつ配列を並べ変える。 \fIbase\fP
+引き数は配列の先頭へのポインタである。
+.PP
+\fIcompar\fP をポインタとする比較関数によって、 配列の中身は昇順 (値の大きいものほど後に並ぶ順番) に並べられる。
+比較関数の引き数は比較されるふたつのオブジェクトのポインタである。
+.PP
+比較関数は、第一引き数が第二引き数に対して、 1) 小さい、2) 等しい、3) 大きいのそれぞれに応じて、 1) ゼロより小さい整数、2) ゼロ、3)
+ゼロより大きい整数の いずれかを返さなければならない。 二つの要素の比較結果が等しいとき、 並べ変えた後の配列では、これら二つの順序は規定されていない。
+.PP
+\fBqsort_r\fP() 関数は \fBqsort\fP() と同じだが、比較関数 \fIcompar\fP が第 3 引き数を
+取る点が異なる。ポインタが \fIarg\fP 経由で比較関数に渡される。
+これにより、比較関数は任意の引き数を渡すためにグローバル変数を使う必要がなくなり、
+そのため、リエントラント (再入可能) で安全にスレッドで使用できるようになる。
+.SH 返り値
+関数 \fBqsort\fP() と \fBqsort_r\fP() は値を返さない。
+.SH バージョン
+\fBqsort_r\fP() は glibc バージョン 2.8 で追加された。
+.SH 準拠
+\fBqsort\fP() 関数は SVr4, 4.3BSD, C89, C99 に準拠している。
+.SH 注意
+\fBqsort\fP() の \fIcompar\fP 引き数に使用するのに適しているライブラリルーチンと
+しては \fBalphasort\fP(3), \fBversionsort\fP(3) がある。 C の文字列を比較する場合、
+以下の例にあるように比較関数で \fBstrcmp\fP(3) を呼び出すこともできる。
+.SH 例
+使用例については、 \fBbsearch\fP(3)  にある例を参照すること。
+
+以下のプログラムに別の使用例を示す。このプログラムは、 コマンドライン引き数で指定された文字列の並び換えを行う。
+.sp
+.nf
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+static int
+cmpstringp(const void *p1, const void *p2)
+{
+    /* この関数の実際の引き数は "char 型へのポインタのポインタ" だが、
+       strcmp(3) の引き数は "char 型へのポインタ" である。
+       そこで、以下のようにキャストをしてからポインタの逆参照を行う。*/
+
+    return strcmp(* (char * const *) p1, * (char * const *) p2);
+}
+
+int
+main(int argc, char *argv[])
+{
+    int j;
+
+    if (argc < 2) {
+       fprintf(stderr, "Usage: %s <string>...\en", argv[0]);
+       exit(EXIT_FAILURE);
+    }
+
+    qsort(&argv[1], argc \- 1, sizeof(char *), cmpstringp);
+
+    for (j = 1; j < argc; j++)
+        puts(argv[j]);
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBsort\fP(1), \fBalphasort\fP(3), \fBstrcmp\fP(3), \fBversionsort\fP(3)
diff --git a/draft/man3/rcmd.3 b/draft/man3/rcmd.3
new file mode 100644 (file)
index 0000000..bfd7aaa
--- /dev/null
@@ -0,0 +1,123 @@
+.\"    $NetBSD: rcmd.3,v 1.9 1996/05/28 02:07:39 mrg Exp $
+.\"
+.\" Copyright (c) 1983, 1991, 1993
+.\"    The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" 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.
+.\"
+.\"     @(#)rcmd.3     8.1 (Berkeley) 6/4/93
+.\"
+.\" Contributed as Linux man page by David A. Holland, 970908
+.\" I have not checked whether the Linux situation is exactly the same.
+.\"
+.\" 2007-12-08, mtk, Converted from mdoc to man macros
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH RCMD 3 2012\-03\-29 Linux "Linux Programmer's Manual"
+.SH 名前
+rcmd, rresvport, iruserok, ruserok \- リモートコマンドにストリームを返す関数群
+.SH 書式
+.nf
+\fB#include <netdb.h> \ \ \fP/* Or <unistd.h> on some systems */
+.sp
+\fBint rcmd(char **\fP\fIahost\fP\fB, int \fP\fIinport\fP\fB, const char *\fP\fIlocuser\fP\fB, \fP
+\fB         const char *\fP\fIremuser\fP\fB, const char *\fP\fIcmd\fP\fB, int *\fP\fIfd2p\fP\fB);\fP
+.sp
+\fBint rresvport(int *\fP\fIport\fP\fB);\fP
+.sp
+\fBint iruserok(uint32_t \fP\fIraddr\fP\fB, int \fP\fIsuperuser\fP\fB, \fP
+\fB             const char *\fP\fIruser\fP\fB, const char *\fP\fIluser\fP\fB);\fP
+.sp
+\fBint ruserok(const char *\fP\fIrhost\fP\fB, int \fP\fIsuperuser\fP\fB, \fP
+\fB            const char *\fP\fIruser\fP\fB, const char *\fP\fIluser\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+\fBrcmd\fP(), \fBrresvport\fP(), \fBruserok\fP(): _BSD_SOURCE
+.SH 説明
+\fBrcmd\fP()  関数は、スーパーユーザーがリモートマシンでコマンドを実行するために 用いられる。このとき特権ポート番号をもとにした認証スキームが
+用いられる。 \fBrresvport\fP()  関数は、特権ポート空間のアドレスを持つソケットの ディスクリプターを返す。 \fBiruserok\fP()
+関数と \fBruserok\fP()  関数は、 \fBrcmd\fP()  でサービス要求を行ったクライアントの認証を行うために サーバーが用いる関数である。
+以上の 4 つの関数は、すべて同じファイルに記述されており、 \fBrshd\fP(8)  サーバーによって (他の関数とともに) 利用される。
+.PP
+\fBrcmd\fP()  関数は \fBgethostbyname\fP(3)  を用いて \fI*ahost\fP の参照を行う。ホストが存在しない場合は \-1
+を返す。 見つかった場合は \fI*ahost\fP にホストの標準名 (standard name) をセットして、 予約されているインターネットポート
+\fIinport\fP 経由でサーバーへの接続を確立する。
+.PP
+接続に成功したら、インターネットドメインに存在するタイプ \fBSOCK_STREAM\fP のソケットが呼び出しもとに返される。
+このソケットの相手側はリモートコマンドの \fIstdin\fP および \fIstdout\fP に接続される。 \fIfd2p\fP
+がゼロでない場合は、制御プロセスへの接続がもう一つ用意され、 そのディスクリプターが \fI*fd2p\fP にセットされる。
+制御プロセスはリモートコマンドからの標準エラー出力 (unit 2) を このチャンネルに返す。 また制御プロセスはこの接続から受け取ったバイトデータを
+UNIX シグナルの番号として扱い、リモートコマンドのプロセス グループへとシグナルを送る。 \fIfd2p\fP がゼロの場合は、 \fIstderr\fP
+(リモートコマンドの unit 2) は \fIstdout\fP と一緒にまとめられる。またこの場合はリモートプロセスへ
+任意のシグナルを送ることはできなくなる。 ただし帯域外 (out\-of\-band) データを用いれば、
+リモートプロセスの注意を引くことはできるかもしれない。
+.PP
+プロトコルの詳細は \fBrshd\fP(8)  に記述されている。
+.PP
+\fBrresvport\fP()  関数は特権アドレスにバインドされたソケットを取得するために用いられる。 このソケットは \fBrcmd\fP()
+などの関数での利用に適している。インターネットポートの特権ポートは、 0 から 1023 の範囲である。スーパーユーザーだけがこれらのアドレスを
+ソケットにバインドすることができる。
+.PP
+\fBiruserok\fP()  と \fBruserok\fP()  関数は、まず以下の引数を取る: リモートホスト (\fBiruserok\fP()  は IP
+アドレスで、 \fBruserok\fP()  はホスト名で指定)、 2 つのユーザー名、ローカルユーザーの名前が
+スーパーユーザーのものであるかどうかを示すフラグ、である。 もしユーザーが\fBスーパーユーザーではない\fP場合は、これらの関数は
+\fI/etc/hosts.equiv\fP ファイルをチェックする。ファイルが見つからなかったり、 内容のチェックに失敗した場合には、
+ローカルユーザーのホームディレクトリにある \fI.rhosts\fP ファイルをチェックして、サービス要求が許可されているかどうか調べる。
+.PP
+このファイルが存在しなかったり、 通常ファイル (regular file) ではなかったり、 指定ユーザーまたはスーパーユーザー以外の所有だったり、
+所有者以外から書き込み可能だったりした場合には、 このチェックは自動的に失敗する。 マシンの名前が \fIhosts.equiv\fP にリストされていたり、
+ホストとリモートユーザーの名前が \fI.rhosts\fP ファイルに書かれていた場合には 0 が返される。 それ以外の場合には、
+\fBiruserok\fP()  と \fBruserok\fP()  は \-1 を返す。 (\fBgethostname\fP(2)  によって取得される)
+ローカルドメインがリモートのドメインと同じ場合は、 マシンの名前だけを指定すればよい。
+.PP
+リモートホストの IP アドレスがわかっている場合は、 \fBruserok\fP()  よりも \fBiruserok\fP()\fBを用いる方が良いだろう。\fP
+\fBruserok\fP()  はリモートホストの所属するドメインの DNS サーバーが信頼できなくても 使用できるからである。
+.SH 返り値
+\fBrcmd\fP()  関数は成功すると有効なソケットディスクリプターを返す。 失敗すると \-1 を返し、標準エラー出力に診断メッセージを 表示する。
+.PP
+\fBrresvport\fP()  関数は、成功するとバインドされた有効なソケットディスクリプターを返す。 失敗すると \-1 を返し、グローバル変数
+\fIerrno\fP をエラーの原因に対応する値にセットする。 エラーコード \fBEAGAIN\fP
+は、この関数においては「すべてのネットワークポートが使用中」 という意味を表す。
+.SH 準拠
+POSIX.1\-2001 にはない。 BSD 系、Solaris や他の多くのシステムに存在する。 これらの関数は 4.2BSD で登場した。
+.SH バグ
+.\" Bug filed 25 Nov 2007:
+.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=5399
+\fBiruserok\fP() は glibc バージョン 2.12 以降のヘッダでのみ宣言されている。
+.SH 関連項目
+\fBrlogin\fP(1), \fBrsh\fP(1), \fBintro\fP(2), \fBrexec\fP(3), \fBrexecd\fP(8),
+\fBrlogind\fP(8), \fBrshd\fP(8)
diff --git a/draft/man3/scandirat.3 b/draft/man3/scandirat.3
new file mode 100644 (file)
index 0000000..3cc61cd
--- /dev/null
@@ -0,0 +1,84 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (c) 2012, Mark R. Bannister <cambridge@users.sourceforge.net>
+.\"        based on text in mkfifoat.3 Copyright (c) 2006, Michael Kerrisk
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SCANDIRAT 3 2012\-03\-17 Linux "Linux Programmer's Manual"
+.SH 名前
+scandirat \- ディレクトリのファイルディスクリプタからの相対パスで指定されたディレクトリを走査する
+.SH 書式
+.nf
+\fB#define _GNU_SOURCE\fP         /* feature_test_macros(7) 参照 */
+
+\fB#include <fcntl.h>\fP          /* AT_* 定数の定義 */
+\fB#include <dirent.h>\fP
+.sp
+.fi
+\fBint scandirat(int \fP\fIdirfd\fP\fB, const char *\fP\fIdirp\fP\fB,\fP \fBstruct dirent
+***\fP\fInamelist\fP\fB,\fP
+.nf
+.RS
+\fBint (*\fP\fIfilter\fP\fB)(const struct dirent *),\fP
+\fBint (*\fP\fIcompar\fP\fB)(const struct dirent **, const struct dirent **));\fP
+.RE
+.fi
+.SH 説明
+\fBscandirat\fP() システムコールは \fBscandir\fP() と全く同様の動作をする。
+差分についてこのマニュアルページで説明する。
+
+\fIdirp\fP で指定されたパス名が相対パスの場合、ファイルディスクリプタ \fIdirfd\fP
+が参照するディレクトリからの相対パスと解釈される
+(これに対して、\fBscandir\fP(3) の場合は、相対パス名は、呼び出したプロセスの
+カレントワーキングディレクトリからの相対パスと解釈される)。
+
+\fIdirp\fP が相対パスで \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、
+\fIdirp\fP は (\fBscandir\fP(3) と同様に) 呼び出したプロセスのカレントワーキング
+ディレクトリからの相対パスと解釈される。
+
+\fIdirp\fP が絶対パスの場合、\fIdirfd\fP は無視される。
+.SH 返り値
+成功した場合は、 \fBscandirat\fP() は選択されたディレクトリエントリ数を返す。
+エラーの場合、 \-1 が返され、 \fIerrno\fP にエラーを示す値が設定される。
+.SH エラー
+\fBscandir\fP(3) で発生するのと同じエラーが \fBscandirat\fP() でも発生する。
+\fBscandirat\fP() では追加で以下のエラーも発生する:
+.TP 
+\fBEBADF\fP
+\fIdirfd\fP が有効なファイルディスクリプタではない。
+.TP 
+\fBENOTDIR\fP
+\fIdirp\fP が相対パスで、\fIdirfd\fP がディレクトリ以外のファイルを参照している
+ファイルディスクリプタである。
+.SH バージョン
+\fBscandirat\fP()  は glibc バージョン 2.15 で追加された。
+.SH 準拠
+この関数は GNU による拡張である。
+.SH 注意
+\fBscandirat\fP() が必要な理由については \fBopenat\fP(2) を参照すること。
+.SH 関連項目
+\fBopenat\fP(2), \fBscandir\fP(3), \fBpath_resolution\fP(7)
diff --git a/draft/man3/scanf.3 b/draft/man3/scanf.3
new file mode 100644 (file)
index 0000000..cd41cf2
--- /dev/null
@@ -0,0 +1,360 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" 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.
+.\"
+.\"     @(#)scanf.3    6.14 (Berkeley) 1/8/93
+.\"
+.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu
+.\" modified to resemble the GNU libio setup used in the Linux libc
+.\" used in versions 4.x (x>4) and 5   Helmut.Geyer@iwr.uni-heidelberg.de
+.\" Modified, aeb, 970121
+.\" 2005-07-14, mtk, added description of %n$ form; various text
+.\"    incorporated from the GNU C library documentation ((C) The
+.\"    Free Software Foundation); other parts substantially rewritten.
+.\"
+.\" 2008-06-23, mtk
+.\"     Add ERRORS section.
+.\"     Document the 'a' and 'm' modifiers for dynamic string allocation.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SCANF 3 2011\-09\-28 GNU "Linux Programmer's Manual"
+.SH 名前
+scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf \- 書式付き入力変換
+.SH 書式
+.nf
+\fB#include <stdio.h>\fP
+
+\fBint scanf(const char *\fP\fIformat\fP\fB, ...);\fP
+\fBint fscanf(FILE *\fP\fIstream\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP
+\fBint sscanf(const char *\fP\fIstr\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP
+.sp
+\fB#include <stdarg.h>\fP
+
+\fBint vscanf(const char *\fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP
+\fBint vsscanf(const char *\fP\fIstr\fP\fB, const char *\fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP
+\fBint vfscanf(FILE *\fP\fIstream\fP\fB, const char *\fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP
+.fi
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.ad l
+.sp
+\fBvscanf\fP(), \fBvsscanf\fP(), \fBvfscanf\fP():
+.RS 4
+_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L;
+.br
+or \fIcc \-std=c99\fP
+.ad
+.RE
+.SH 説明
+\fBscanf\fP()  関数グループは、以下に述べるように、 \fIformat\fP に従って入力を読み込むものである。 この書式には \fI「変換指定」
+(conversion specifications)\fP を含めることができ、変換指定があれば、その変換の結果は \fIformat\fP に続く
+\fIpointer\fP 引き数が指す場所に格納される。 それぞれの \fIpointer\fP 引き数の型は、対応する変換指定が返す値に
+適合していなければならない。
+
+\fIformat\fP 中の変換指定の個数が \fIpointer\fP 引き数の数より多かった場合の結果は未定義である。 \fIpointer\fP
+引き数の数が変換指定の個数よりも多かった場合、 余分な \fIpointer\fP 引き数の評価は行われるが、それ以外は行われず無視される。
+
+\fBscanf\fP()  関数は標準入力ストリーム \fIstdin\fP からの入力を読み込む。 \fBfscanf\fP()  はストリームポインタ
+\fIstream\fP からの入力を読み込む。 \fBsscanf\fP()  は文字列ポインタ \fIstr\fP で示された文字列からの入力を読み込む。
+.PP
+\fBvfscanf\fP()  関数は \fBvfprintf\fP(3)  と同様に、ストリームポインタ \fIstream\fP
+からの入力をポインタの可変長引き数リストを用いて読み込む (\fBstdarg\fP(3)  を参照)。 \fBvscanf\fP()
+関数は、可変長引き数のリストに基づき標準入力からの読み取りを行う。 \fBvsscanf\fP()  関数はそのリストに基づき文字列から読み取る。
+これらの関係は \fBvprintf\fP(3)  と \fBvsprintf\fP(3)  関数の関係と同様である。
+.PP
+\fIformat\fP 文字列は \fI「命令」 (directive)\fP の列で構成される。命令は入力文字の系列をどのように処理するかを指示する
+ものである。ある命令の処理が失敗すると、入力はそれ以上読み込まれず、 \fBscanf\fP()  は返る。「失敗」は \fI「入力の失敗」 (input
+failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれかである。
+入力の失敗は入力文字が使用できなかったことを意味し、 一致の失敗は入力が不適切であったこと (下記参照) を意味する。
+
+命令は以下のいずれかである:
+.TP 
+\(bu
+ホワイトスペース (スペース、タブ、改行など; \fBisspace\fP(3)  参照) の列。
+この命令は、入力中の任意の個数のホワイトスペースに一致する。 (「何もなし」にも一致する)。
+.TP 
+\(bu
+通常文字 (つまり、ホワイトスペースと \(aq%\(aq 以外の文字)。 この文字は入力の次の文字に正確に一致しなければならない。
+.TP 
+\(bu
+変換指定。変換指定は \(aq%\(aq (パーセント) 文字で始まる。 入力された文字の系列はこの指定にもとづいて変換され、 変換結果は対応する
+\fIpointer\fP 引き数が指す場所に格納される。 入力の次の文字が変換指定と一致しない場合は、変換は失敗する \(emこれが \fI「一致の失敗」
+(matching failure)\fP である。
+.PP
+\fIformat\fP 中の各々の \fI「変換指定」\fP は文字 \(aq%\(aq か文字系列 "\fB%\fP\fIn\fP\fB$\fP" (違いについては後述)
+で始まり、以下の要素が続く。
+.TP 
+\(bu
+代入抑制文字 \(aq*\(aq (省略可能)。 \fBscanf\fP()  は変換指定に指示された通り入力を読み込むが、その入力は捨てられる。 対応する
+\fIpointer\fP 引き数は必要なく、 \fBscanf\fP()  が返す代入が成功した数にこの指定は含まれない。
+.TP 
+\(bu
+文字 \(aqa\(aq (省略可能)。これは文字列変換とともに使用され、これを使うと
+呼び出し元が入力を保持する対応するバッファを確保する必要がなくなる。 代わりに \fBscanf\fP()
+が必要な大きさのバッファを確保し、このバッファのアドレスを 対応する \fIpointer\fP 引き数に代入する。 \fIpointer\fP 引き数は
+\fIchar *\fP 型の変数へのポインタでなければならない (変数自体は呼び出し前に初期化されている必要はない)。
+呼び出し元は、不要になった時点で、このバッファを \fBfree\fP(3)  すべきである。この機能は GNU による拡張である。 C99 は
+\(aqa\(aq 文字を変換指定として使用している (こちらも GNU の実装と同じように使用することができる)。
+.TP 
+\(bu
+\fI「最大フィールド幅」\fP を指定する 10進数 (省略可能)。 この最大値に達するか、一致しない文字が見つかるか、のどちらかに
+なると、文字の読み込みを停止する。 ほとんどの変換では、先頭のホワイトスペース文字は捨てられ (例外については後述する)、
+捨てられたこれらの文字は最大フィールド幅の計算には含まれない。 文字列の入力変換では、入力の末尾を示す終端の NULL バイト
+(\(aq\e0\(aq)  も格納されるが、最大フィールド幅にはこの終端バイトは含まれない。
+.TP 
+\(bu
+\fI「型修飾子」 (type modifier characters)\fP (省略可能)。 例えば、型修飾子 \fBl\fP を \fB%d\fP
+などの整数変換と一緒に使うと、対応する \fIpointer\fP 引き数が \fIint\fP ではなく \fIlong int\fP を参照していることを指定できる。
+.TP 
+\(bu
+\fI「変換指定」\fP : 実行すべき入力変換の種類を指定する。
+.PP
+\fIformat\fP 中の変換指定は、\(aq%\(aq で始まるか、 "\fB%\fP\fIn\fP\fB$\fP" で始まるかの、いずれかの形式である。 これら
+2つの形式を同じ \fIformat\fP 文字列に混ぜることはできない。但し、"\fB%\fP\fIn\fP\fB$\fP" を 含む文字列に \fB%%\fP と \fB%*\fP
+を含めることはできる。 \fIformat\fP に \(aq%\(aq 指定が含まれている場合、各々の \(aq%\(aq 指定と 後続の
+\fIpointer\fP 引き数はその順番通りに対応する。 "\fB%\fP\fIn\fP\fB$\fP" 形式 (POSIX.1\-2001 では規定されているが、C99
+にはない)  では、 \fIn\fP は 10進数であり、変換後の入力を \fIformat\fP の後ろの \fIn\fP 番目の \fIpointer\fP
+引き数が参照する場所に格納することを指定する。
+.SS 変換
+変換指定には、以下の \fI「型修飾子」\fP を入れることができる。
+.TP 
+\fBh\fP
+変換が \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, \fBn\fP のいずれかであり、次のポインタが (\fIint\fP ではなく)
+\fIshort int\fP か \fIunsigned short int\fP へのポインタであることを示す。
+.TP 
+\fBhh\fP
+\fBh\fP と同じだが、次のポインタが \fIsigned char\fP か \fIunsigned char\fP へのポインタであることを示す。
+.TP 
+\fBj\fP
+\fBh\fP と同じだが、次のポインタが \fIintmax_t\fP か \fIuintmax_t\fP へのポインタであることを示す。 この修飾子は C99
+で導入された。
+.TP 
+\fBl\fP
+.\" This use of l was introduced in Amendment 1 to ISO C90.
+変換が \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, \fBn\fP か \fBn\fP のいずれかであり次のポインタが (\fIint\fP
+ではなく)  \fIlong int\fP か \fIunsigned long int\fP へのポインタであること、または、変換が \fBe\fP, \fBf\fP,
+\fBg\fP のうちのひとつであり次のポインタが (\fIfloat\fP ではなく)  \fIdouble\fP へのポインタであることのいずれかであることを示す。
+\fBl\fP 文字を二つ指定すると、 \fBL\fP と同じ意味となる。 \fB%c\fP や \fB%s\fP とともに使用すると、
+パラメータはそれぞれワイド文字やワイド文字列へのポインタであると みなされる。
+.TP 
+\fBL\fP
+.\" MTK, Jul 05: The following is no longer true for modern
+.\" ANSI C (i.e., C99):
+.\" (Note that long long is not an
+.\" ANSI C
+.\" type. Any program using this will not be portable to all
+.\" architectures).
+\fBe\fP, \fBf\fP, \fBg\fP 変換で、次のポインタが \fIlong double\fP へのポインタであることを示す。もしくは、 \fBd\fP, \fBi\fP,
+\fBo\fP, \fBu\fP, \fBx\fP 変換で、次のポインタが \fIlong long\fP へのポインタであることのいずれかであることを示す。
+.TP 
+\fBq\fP
+\fBL\fP と同一である。 この修飾子は ANSI C には存在しない。
+.TP 
+\fBt\fP
+\fBh\fP と同様だが、次のポインタが \fIptrdiff_t\fP へのポインタであることを示す。 この修飾子は C99 で導入された。
+.TP 
+\fBz\fP
+\fBh\fP と同様だが、次のポインタが \fIsize_t\fP へのポインタであることを示す。 この修飾子は C99 で導入された。
+.PP
+以下の \fI「変換指定子」\fP が利用可能である。
+.TP 
+\fB%\fP
+文字 \(aq%\(aq に対応する。 書式文字列の中の \fB%\&%\fP は単一の文字 \(aq%\(aq に対応する。 変換は行われず
+(但し、先頭のホワイトスペース文字は捨てられる)、 変数への代入は生じない。
+.TP 
+\fBd\fP
+符号つきの 10進の整数に対応する。 次のポインタは \fIint\fP へのポインタでなければならない。
+.TP 
+\fBD\fP
+\fIld\fP と同一である。これは以前の仕様との互換性だけのためにある。 (注意: これは libc4 の場合だけである。 libc5 や glibc
+では \fB%D\fP は暗黙のうちに無視され、古いプログラムにおいて謎に満ちた失敗の原因となる。)
+.TP 
+\fBi\fP
+符号つき整数に対応する。 次のポインタは \fIint\fP へのポインタでなければならない。 この整数は \fI0x\fP または \fI0X\fP で開始する場合には
+16 進数、 \fI0\fP で開始する場合には 8 進数、その他の場合には 10進数として読み込まれる。
+この変換で使用される文字は、これらの基数に対応しているものだけである。
+.TP 
+\fBo\fP
+符号なしの 8 進の整数に対応する。 次のポインタは \fIunsigned int\fP でなければならない。
+.TP 
+\fBu\fP
+符号なしの 10進の整数に対応する。 次のポインタは \fIunsigned int\fP へのポインタでなければならない。
+.TP 
+\fBx\fP
+符号なしの 16 進の整数に対応する。 次のポインタは \fIunsigned int\fP へのポインタでなければならない。
+.TP 
+\fBX\fP
+\fBx\fP と同一である。
+.TP 
+\fBf\fP
+符号つき浮動小数点実数に対応する。 次のポインタは \fIfloat\fP へのポインタでなければならない。
+.TP 
+\fBe\fP
+\fBf\fP と同一である。
+.TP 
+\fBg\fP
+\fBf\fP と同一である。
+.TP 
+\fBE\fP
+\fBf\fP と同一である。
+.TP 
+\fBa\fP
+(C99)  \fBf\fP と同一である。
+.TP 
+\fBs\fP
+ホワイトスペースではない文字で構成された文字列に対応する。 次のポインタは文字の配列へのポインタでなければならず、 その文字配列は、入力された文字列と
+(自動的に追加される) 終端の NULL バイト (\(aq\e0\(aq) を格納するのに十分な大きさでなければならない。
+文字列の入力は、ホワイトスペースが入力されるか、最大フィールド幅に 達するか、のどちらかが起こると停止される。
+.TP 
+\fBc\fP
+\fI「最大フィールド幅」\fP (デフォルトは 1) で指定された幅の文字の列に対応する。 次のポインタは \fIchar\fP
+へのポインタで、すべての文字を格納するのに十分な領域が なければならない (終端の NULL バイトは追加されない)。
+通常行われる先頭のホワイトスペースの読み飛ばしは行われない。 先頭のホワイトスペースを読み飛ばすためには、
+フォーマット文の中で明示的にスペースを使用すれば良い。
+.TP 
+\fB\&[\fP
+格納された文字列のうちから取り出された、 指定された文字の集合で構成される空ではない文字の列に対応する。 次のポインタは \fIchar\fP
+へのポインタでなければならず、 そこには文字列中のすべての文字と終端の NULL バイト を格納するための十分な領域がなければならない。
+通常行われる先頭のホワイトスペースの読み飛ばしは行われない。 この文字列は特別な集合の中の文字で構成されている。 この集合は 開き括弧 \fB[\fP
+と閉じ括弧 \fB]\fP の間の文字で定義される。 開き括弧のあとの最初の文字が曲アクセント記号 (\fB^\fP)
+の場合、集合はこれらの文字を含まないものとなる。 閉じ括弧を集合に含ませるためには、この文字を開き括弧または
+曲アクセント記号のあとの最初の文字にすればよい。 つまり、他の位置に閉じ括弧を置くと文字の集合が終る。 ハイフン \fB\-\fP もまた特殊文字である。
+二つの異なる文字の間に置かれた時、この文字は、 その間にある全ての文字を集合に加える。 ハイフン自体を含ませるためには、
+括弧が閉じる前の最後の一文字をハイフンにすればよい。 例えば、 \fB[^]0\-9\-]\fP は「閉じ括弧、0 〜 9、ハイフンの 3
+種類を除く全ての文字」の集合を意味する。 この文字列は 集合に含まれていない (曲アクセントの場合には含まれる) 文字の
+出現または確保された領域が使い切られた時に終了する。
+.TP 
+\fBp\fP
+(\fBprintf\fP(3)  の \fB%p\fP で印字されるような) ポインタ値に対応する。 次のポインタは \fIvoid\fP
+へのポインタへのポインタでなければならない。
+.TP 
+\fBn\fP
+どんな入力も必要としない。 そのかわりに、 入力からここまで消費された文字数が次のポインタで指定された場所に 格納される。 このポインタは \fIint\fP
+へのポインタでなければならない。 変換を抑制するのであれば \fB*\fP 代入抑制文字を使って抑制することができるのだが、
+この変換指定子は変換では「ない」。 C 言語の標準規格では「実行の完了時に返される代入の回数は \fB%n\fP 命令の実行では増加しない」となっているが、
+正誤表の内容はこれと矛盾するようである。おそらく、 \fB%n\fP 変換が返り値に与える影響についてはどのような仮定もしないのが 賢明であろう。
+.SH 返り値
+これらの関数は、一致と代入が成功した入力要素の個数を返す。 返される値は渡された変換の個数よりも少ないこともあり、 最初に一致の失敗があった場合には 0
+になることもある。
+
+最初の変換が成功する前に入力の最後に達して、一致の失敗が起こった場合には、 \fBEOF\fP が返される。また、 読み込みエラーが発生した場合にも
+\fBEOF\fP が返される。読み込みエラーの場合には、そのストリームの エラー指示子がセットされ (\fBferror\fP(3)  参照)、 \fIerrno\fP
+にエラーを示す値がセットされる。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+\fIstream\fP に対応するファイルディスクリプタが nonblocking となっており、 読み込み操作は停止 (block) することになる。
+.TP 
+\fBEBADF\fP
+\fIstream\fP に対応するファイルディスクリプタが無効であるが、 読み込み用にオープンされていない。
+.TP 
+\fBEILSEQ\fP
+入力されたバイト列が有効な文字を構成していない。
+.TP 
+\fBEINTR\fP
+読み込み操作がシグナルにより割り込まれた。 \fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
+引き数が十分でない。または \fIformat\fP が NULL である。
+.TP 
+\fBENOMEM\fP
+メモリ不足。
+.TP 
+\fBERANGE\fP
+整数変換の結果が、対応する整数型に格納できるサイズを越えてしまう。
+.SH 準拠
+\fBfscanf\fP(), \fBscanf\fP(), \fBsscanf\fP()  関数は C89, C99, POSIX.1\-2001 に準拠している。
+これらの標準では、エラー \fBERANGE\fP は規定されていない。
+.PP
+\fBq\fP 指定子は \fIlong long\fP の 4.4BSD での記述方法である。 一方、整数変換での \fBll\fP または \fBL\fP の使用は GNU
+での拡張である。
+.PP
+これらの関数の Linux 版は \fIGNU\fP \fIlibio\fP ライブラリーを元にしている。 より簡潔な説明には \fIGNU\fP \fIlibc
+(glibc\-1.08)\fP の \fIinfo\fP 文書に目を通すこと。
+.SH 注意
+.\" This feature seems to be present at least as far back as glibc 2.0.
+GNU C ライブラリ (glibc) では非標準のオプションをサポートしており、 このオプションを使うと変換指定子 \fB%s\fP や
+\fB%a[\fP\fIrange\fP\fB]\fP への入力文字列に対して十分な大きさの文字列をライブラリが動的に確保する ようになる。
+この機能を使用するには、長さ修飾子として \fBa\fP を指定する (したがって、全体としては \fB%as\fP や \fB%a[\fP\fIrange\fP\fB]\fP
+となる)。 以下の例にあるように、呼び出し側は返された文字列を \fBfree\fP(3)  しなければならない。
+.in +4n
+.nf
+
+char *p;
+int n;
+
+errno = 0;
+n = scanf("%a[a\-z]", &p);
+if (n == 1) {
+    printf("read: %s\en", p);
+    free(p);
+} else if (errno != 0) {
+    perror("scanf");
+} else {
+    fprintf(stderr, "No matching characters\en");
+}
+.fi
+.in
+.PP
+上記の例にあるように、 \fBscanf\fP()  が文字列の読み込みに成功した場合にだけ、 \fBfree\fP(3)  を呼び出す必要がある。
+.PP
+\fIgcc \-std=c99\fP や \fIgcc \-D_ISOC99_SOURCE\fP でコンパイルしたプログラムでは (\fB_GNU_SOURCE\fP
+も同時に指定していない場合)、 \fBa\fP 修飾子は利用できない。 上記の場合、 \fBa\fP は (上述の通り) 浮動小数点数を示す変換指定子と解釈される。
+
+バージョン 2.7 以降では、glibc は \fBa\fP 修飾子と同じ目的で \fBm\fP 修飾子も提供している。 \fBm\fP 修飾子は以下の利点がある。
+.IP * 2
+\fB%c\fP 変換指定子にも適用できる (例えば \fB%3mc\fP)。
+.IP *
+浮動小数点変換指定子としての \fB%a\fP との紛らわしさが避けられる (また \fIgcc \-std=c99\fP などの影響も避けられる)。
+.IP *
+POSIX.1 標準の次の改訂版で規定される。
+.SH バグ
+全ての関数は、完全に C89 に準拠している。しかし 追加で \fBq\fP と \fBa\fP 指定子が提供されており、同様に \fBL\fP と \fBl\fP
+指定子の付加的な振る舞いもある。後者は、 C89 で定義された指定子の振る舞いを変更するものなので、 バグとみなされるかもしれない。
+.PP
+ANSI C で定義された型修飾子と変換指定子の組み合わせの中には 意味をなさないものがある (例えば、 \fB%Ld\fP)。 これらが指定された場合、
+Linux 上でははっきりと定義された振る舞いをするかもしれないが、 他のアーキテクチャでも同様になっているとは限らない。 それゆえに、ほとんどの場合、
+ANSI C で定義されていない修飾子を使用した方が良い。 すなわち、 \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP 変換や
+\fBll\fP と組み合わせる場合には、 \fBL\fP の代わりに \fBq\fP を使用した方が良い。
+.PP
+\fBq\fP の使用方法は 4.4BSD と同じではない。 4.4BSD では \fBq\fP は \fBL\fP と同等に浮動小数の変換に使用される。
+.SH 関連項目
+\fBgetc\fP(3), \fBprintf\fP(3)  \fBsetlocale\fP(3), \fBstrtod\fP(3), \fBstrtol\fP(3),
+\fBstrtoul\fP(3),
index cf70ec9..2f8ac5d 100644 (file)
@@ -57,7 +57,7 @@ __fsetlocking, __fwritable, __fwriting, _flushlbf \- 標準入出力ファイル
 Solaris では、 \fIFILE\fP 構造体の内部へポータブルなかたちで アクセスできる手段が導入されており、これらは glibc
 でも実装されている。
 .LP
-\fB__fbufsize\fP()  é\96¢æ\95°ã\81¯ã\80\81æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\81\8c使ç\94¨ã\81\97ã\81¦ã\81\84ã\82\8bã\83\90ã\83\83ã\83\95ã\82¡ã\83»ã\82µã\82¤ã\82ºã\82\92è¿\94ã\81\99ã\80\82
+\fB__fbufsize\fP()  関数は、指定されたストリームが使用しているバッファサイズを返す。
 .LP
 \fB__fpending\fP()  関数は、出力バッファに入っているデータのバイト数を返す。
 ワイドキャラクタを扱うストリームの場合、ワイドキャラクタ単位で計算される。 バッファが読み出しモードの場合や読み出し専用で開かれている場合の
index 8b24216..003e3fe 100644 (file)
@@ -41,7 +41,7 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 .sp
 \fBtempnam\fP(): _BSD_SOURCE || _SVID_SOURCE
 .SH 説明
-\fBtempnam\fP()  é\96¢æ\95°ã\81¯ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\81¨ã\81\97ã\81¦æ­£ã\81\97ã\81\84æ\96\87å­\97å\88\97ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82 ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\82\92æ\8c\81ã\81¤ã\83\95ã\82¡ã\82¤ã\83«ã\81¯ã\80\81 \fBtempnam\fP()
+\fBtempnam\fP()  関数はファイル名として正しい文字列へのポインタを返す。 このファイル名を持つファイルは、 \fBtempnam\fP()
 がチェックした時点においては存在しない (しなかった)。 \fIpfx\fP が NULL でない 5 バイト以内の文字列であれば、
 生成されるパス名のうちのファイル名の部分は \fIpfx\fP から始まるものになる。 生成されるディレクトリの部分は、「適切」でなければならない
 (大抵の場合、「適切」であるためにはまず少なくとも 書き込み可能でなければならない)。
index c1756a2..db2536f 100644 (file)
@@ -94,13 +94,13 @@ or \fIcc\ \-std=c99\fP
 .TP 
 \fBs\fP
 もし \fBl\fP 修飾子が存在しない場合、 \fIconst\ char\ *\fP 引き数は初期状態より始まるマルチバイト文字列を含んだ char
-型の配列へのポインター(文字列へのポインター)とみなされる。 配列の文字は(最初のバイト前に初期状態で変換を開始し、それぞれの文字を
+型の配列へのポインタ(文字列へのポインタ)とみなされる。 配列の文字は(最初のバイト前に初期状態で変換を開始し、それぞれの文字を
 \fBmbrtowc\fP(3)  関数によって)ワイド文字へと変換される。結果のワイド文字は終端の
 ナルワイド文字の手前までが書き込まれる。精度(precision)が指定された 場合、指定された数字を超えるワイド文字は書き込まれない。精度は
 書き込まれる \fIバイト\fP 数や \fI画面上の位置\fP ではなく \fIワイド文字\fP の数を指定することに注意すること。
 精度がない場合には配列の終端にナル文字を含む必要がある。 精度を指定する場合には、配列の最後に到着する前に変換されたワイド文字の
 数がそれに到達するよう、精度は十分に小さな数でなければならない。 もし \fBl\fP 修飾子が存在する場合、 \fIconst\ wchar_t\ *\fP
-å¼\95ã\81\8dæ\95°ã\81¯ã\83¯ã\82¤ã\83\89æ\96\87å­\97ã\81®é\85\8då\88\97ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81¨ã\81¿ã\81ªã\81\95ã\82\8cã\82\8bã\80\82 é\85\8då\88\97ã\81®ã\83¯ã\82¤ã\83\89æ\96\87å­\97å\88\97ã\81¯çµ\82端ã\81®ã\83\8aã\83«ã\83¯ã\82¤ã\83\89æ\96\87å­\97ã\81®æ\89\8bé\96\93ã\81¾ã\81§å\87ºå\8a\9bã\81\95ã\82\8cã\82\8bã\80\82
+引き数はワイド文字の配列へのポインタとみなされる。 配列のワイド文字列は終端のナルワイド文字の手間まで出力される。
 もし精度が指定された場合には指定された精度以上の文字は出力されない。 精度を指定しない場合には終端のナルワイド文字を含む必要がある。
 精度を指定する場合にはそれはワイド文字の配列の大きさよりも小さくな ければならない。
 .SH 返り値
diff --git a/draft/man5/core.5 b/draft/man5/core.5
new file mode 100644 (file)
index 0000000..f34843e
--- /dev/null
@@ -0,0 +1,286 @@
+.\" Copyright (c) 2006, 2008 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH CORE 5 2012\-01\-17 Linux "Linux Programmer's Manual"
+.SH 名前
+core \- コアダンプファイル
+.SH 説明
+ある種のシグナルを受けた場合のデフォルトのアクションは、 プロセスを終了し (terminate)、 \fIコアダンプファイル (core dump
+file)\fP を生成することである。コアダンプファイルは、ディスク上に生成される 終了時のプロセスのメモリイメージを内容とするファイルである。
+このイメージをデバッガ (例えば \fBgdb\fP(1))  に読み込んで、 プログラムが終了した時点のプログラムの状態を検査することができる。
+どのシグナルを受けたときにプロセスがコアダンプを生成するかのリストは \fBsignal\fP(7)  に書かれている。
+
+プロセスはソフト・リソース制限 \fBRLIMIT_CORE\fP を設定することで、「コアダンプ」シグナルを受信した際に生成される
+コアダンプファイルのサイズに上限を課すことができる。詳細は \fBgetrlimit\fP(2)  を参照。
+
+コアダンプファイルが生成されない状況がいくつかある:
+.IP * 3
+プロセスがコアファイルを書き込む許可を持たない場合 (デフォルトでは、コアファイルは \fIcore\fP
+という名前で、カレント・ワーキング・ディレクトリに生成される。 命名規則の詳細は下記を参照)。
+コアファイルを生成しようとしたディレクトリが書き込み可能でない場合、 もしくは同じ名前のファイルが存在し、そのファイルが書き込み可能でも
+通常のファイルでもない場合 (例えば、ディレクトリやシンボリックリンク)、 コアファイルの生成は失敗する。
+.IP *
+コアダンプに使おうとしたのと同じ名前の (書き込み可能な、通常の) ファイルが すでに存在し、そのファイルに対するハードリンクが 2個以上ある場合。
+.IP *
+コアダンプファイルを生成しようとしたファイルシステムがフルであるか、 inode が全て使用されているか、読み込み専用でマウントされている場合。
+または、そのユーザのディスク使用量がそのファイルシステムの クオータ (quota) に達している。
+.IP *
+コアダンプファイルを生成しようとしたディレクトリが存在しない場合。
+.IP *
+プロセス毎のリソース制限 \fBRLIMIT_CORE\fP (コアファイルのサイズ) か \fBRLIMIT_FSIZE\fP (ファイルサイズ) が 0
+に設定されている場合。 \fBgetrlimit\fP(2)  やシェルの \fIulimit\fP コマンドのドキュメント (\fBcsh\fP(1)  の
+\fIlimit\fP)  を参照。
+.IP *
+プロセスが実行したバイナリファイルの読み出し許可が有効になっていない場合。
+.IP *
+.\" FIXME . Perhaps relocate discussion of /proc/sys/fs/suid_dumpable
+.\" and PR_SET_DUMPABLE to this page?
+プロセスが実行している set\-user\-ID (set\-group\-ID) プログラムの所有者の ユーザ (グループ) が、プロセスの実 UID (実
+GID) と異なる場合 (但し、 \fBprctl\fP(2)  \fBPR_SET_DUMPABLE\fP 操作の説明と、 \fBproc\fP(5)  の
+\fI/proc/sys/fs/suid_dumpable\fP ファイルの説明も参照のこと)。
+.SS コアダンプファイルの名前
+デフォルトでは、コアダンプファイルの名前は \fIcore\fP となるが、コアダンプファイルの名前を決めるのに使われるテンプレートを
+\fI/proc/sys/kernel/core_pattern\fP ファイルに定義することで、ファイル名を変更することができる
+(\fI/proc/sys/kernel/core_pattern\fP は Linux 2.6 および 2.4.21 以降で利用できる)。 テンプレートには
+% 指示子 (specifier) を入れることができる。 これはコアファイルが生成される際に、以下の値に置き換えられる。
+.PP
+.RS 4
+.PD 0
+.TP  4
+%%
+1 つの % 文字
+.TP 
+%p
+ダンプされたプロセスのプロセスID (PID)
+.TP 
+%u
+ダンプされたプロセスの実ユーザ ID (real UID)
+.TP 
+%g
+ダンプされたプロセスの実グループ ID (real GID)
+.TP 
+%s
+ダンプを引き起こしたシグナルの番号
+.TP 
+%t
+ダンプ時刻、紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC))  からの秒数。
+.TP 
+%h
+ホスト名 (\fBuname\fP(2) で返される \fInodename\fP と同じ)
+.TP 
+%e
+実行ファイル名 (パス名のプレフィックスは含まれない)
+.TP 
+%E
+実行ファイルのパス名。スラッシュ (\(aq/\(aq) は感嘆符 (\(aq!\(aq) に置き換えられる。
+.TP 
+%c
+クラッシュしたプロセスのコアファイルのサイズに関するソフトリソース上限 (Linux 2.6.24 以降)
+.PD
+.RE
+.PP
+テンプレートの末尾に 1 個だけ % がある場合、 その % はコアファイル名には含められない。また、上で列挙されて いない %
+と文字の組み合わせがあった場合も同様である。 テンプレートにおける他の文字は、 コアファイル名としてそのまま使われる。 テンプレートには
+\(aq/\(aq 文字を入れることができ、 ディレクトリ名の区切り文字と解釈される。 結果として生成されるコアファイル名の最大サイズは 128
+バイトである (2.6.19 より前のカーネルでは 64 バイト)。 このファイルのデフォルト値は "core" である。 以前のものとの互換性のため、
+\fI/proc/sys/kernel/core_pattern\fP に "%p" が含まれず、 かつ
+\fI/proc/sys/kernel/core_uses_pid\fP (下記参照) が 0 でない場合は、.PID がコアファイル名に追加される。
+
+バージョン 2.4 以降の Linux では コアダンプファイルの名前を制御する原始的な方法も提供されている。
+\fI/proc/sys/kernel/core_uses_pid\fP ファイルに値 0 が書かれている場合、コアダンプファイルは単純に \fIcore\fP
+という名前になる。このファイルに 0 以外の値が書かれている場合、 コアダンプファイルは \fIcore.PID\fP
+という形式の名前になり、ファイル名にプロセス ID が含まれる。
+.SS コアダンプのプログラムへのパイプ
+カーネル 2.6.19 以降では、Linux は \fI/proc/sys/kernel/core_pattern\fP
+ファイルの別の構文をサポートしている。 このファイルの最初の文字がパイプ記号 (\fB|\fP) であれば、
+その行の残りの部分は実行するプログラムとして解釈される。 コアダンプは、ディスク上のファイルに書き込まれるのではなく、
+プログラムの標準入力として渡される。 以下の点に注意すること。
+.IP * 3
+プログラムは絶対パス名 (もしくはルートディレクトリ \fI/\fP からの 相対パス名) で指定されなければならない。 また、'|'
+文字の直後から始めなければならない。
+.IP *
+プログラムを実行するために生成されるプロセスは、 ユーザ、グループとも \fIroot\fP として実行される。
+.IP *
+コマンドライン引き数をプログラムに与えることができ (カーネル 2.6.24 以降)、 引き数はホワイトスペースで区切る (1行の最大長は 128
+バイトが上限である)。
+.IP *
+コマンドライン引き数には、上記のリストにある % 指示子を含めることができる。 例えば、ダンプされるプロセスの PID を渡すには、 引き数に
+\fI%p\fP を指定する。
+.SS どのマッピングをコアダンプに書き込むかを制御する
+カーネル 2.6.23 以降では、Linux 固有のファイル \fI/proc/PID/coredump_filter\fP を使って、対応するプロセス ID
+を持つプロセスに対してコアダンプが行われる 際に、どのメモリセグメントをコアダンプファイルに書き込むかを制御できる。
+
+このファイルの値はメモリマッピング種別 (\fBmmap\fP(2)  参照) のビットマスクである。
+マスク内のあるビットがセットされると、そのビットに対応する種別の メモリマッピングがダンプされる。セットされていないものはダンプされない。
+このファイルの各ビットは以下の意味を持つ。
+.PP
+.PD 0
+.RS 4
+.TP 
+bit 0
+無名のプライベートマッピング (anonymous private mappings) をダンプする。
+.TP 
+bit 1
+無名の共有マッピング (anonymous shared mappings) をダンプする。
+.TP 
+bit 2
+ファイルと関連付けられたプライベートマッピング (file\-backed private mappings) をダンプする。
+.TP 
+bit 3
+.\" file-backed shared mappings of course also update the underlying
+.\" mapped file.
+ファイルと関連付けられた共有マッピング (file\-backed shared mappings) をダンプする。
+.TP 
+bit 4 (Linux 2.6.24 以降)
+ELF ヘッダをダンプする。
+.TP 
+bit 5 (Linux 2.6.28 以降)
+プライベートなヒュージページ (private huge page) をダンプする。
+.TP 
+bit 6 (Linux 2.6.28 以降)
+共有されたヒュージページ (shared huge page) をダンプする。
+.RE
+.PD
+.PP
+デフォルトでは、ビット 0, 1, 4, 5 がセットされる。 (ビット 4 がセットされるのは、カーネルが設定オプション
+\fBCONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS\fP を有効にして作成された場合である)。 このファイルの値は 16
+進形式で表示される (したがって、デフォルト値は 33 と表示される)。
+
+\fIcoredump_filter\fP の値に関わらず、フレームバッファなどの memory\-mapped I/O に関する
+ページは決してダンプされず、仮想 DSO ページは常にダンプされる。
+
+\fBfork\fP(2)  で作成される子プロセスは親プロセスの \fIcoredump_filter\fP の値を継承する。 \fBexecve\fP(2)
+の前後で \fIcoredump_filter\fP の値は保持される。
+
+例のように、プログラムを実行する前に親シェルの \fIcoredump_filter\fP を設定しておくと役立つことがある。
+
+.in +4n
+.nf
+$\fB echo 0x7 > /proc/self/coredump_filter\fP
+$\fB ./some_program\fP
+.fi
+.in
+.PP
+このファイルが提供されるのは、カーネルが設定オプション \fBCONFIG_ELF_CORE\fP を有効にして作成された場合だけである。
+.SH 注意
+\fBgdb\fP(1)  の \fIgcore\fP コマンドを使用すると、実行中のプロセスのコアダンプを取得できる。
+
+.\" Always including the PID in the name of the core file made
+.\" sense for LinuxThreads, where each thread had a unique PID,
+.\" but doesn't seem to serve any purpose with NPTL, where all the
+.\" threads in a process share the same PID (as POSIX.1 requires).
+.\" Probably the behavior is maintained so that applications using
+.\" LinuxThreads continue appending the PID (the kernel has no easy
+.\" way of telling which threading implementation the userspace
+.\" application is using). -- mtk, April 2006
+マルチスレッドプロセス (より正確には、 \fBclone\fP(2)  の \fBCLONE_VM\fP で生成された別プロセスとメモリを共有しているプロセス)
+がコアダンプを生成する場合、 コアファイル名にプロセス ID が必ず付加される。 ただし、
+\fI/proc/sys/kernel/core_pattern\fP の %p 指定によりコアファイル名のどこか他の場所にプロセス ID が
+すでに含まれている場合は、プロセス ID が末尾に付加されない。 (この機能がまず役に立つのは LinuxThreads 実装を利用している場合である。
+LinuxThreads 実装では、プロセス内の個々のスレッドは異なるプロセス ID を持つ。)
+.SH 例
+以下のプログラムは \fI/proc/sys/kernel/core_pattern\fP ファイルのパイプ構文の使用例を示している。
+以下のシェルのセッションはこのプログラムの使用例を示すものである (コンパイルして \fIcore_pattern_pipe_test\fP
+という名前の実行ファイルを作成している)。
+.PP
+.in +4n
+.nf
+$\fB cc \-o core_pattern_pipe_test core_pattern_pipe_test.c\fP
+$\fB su\fP
+Password:
+#\fB echo "|$PWD/core_pattern_pipe_test %p UID=%u GID=%g sig=%s" > \e\fP
+\fB/proc/sys/kernel/core_pattern\fP
+#\fB exit\fP
+$\fB sleep 100\fP
+\fB^\e\fP                     # type control\-backslash
+Quit (core dumped)
+$\fB cat core.info\fP
+argc=5
+argc[0]=</home/mtk/core_pattern_pipe_test>
+argc[1]=<20575>
+argc[2]=<UID=1000>
+argc[3]=<GID=100>
+argc[4]=<sig=3>
+Total bytes in core dump: 282624
+.fi
+.in
+.SS プログラムのソース
+\&
+.nf
+/* core_pattern_pipe_test.c */
+
+#define _GNU_SOURCE
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define BUF_SIZE 1024
+
+int
+main(int argc, char *argv[])
+{
+    int tot, j;
+    ssize_t nread;
+    char buf[BUF_SIZE];
+    FILE *fp;
+    char cwd[PATH_MAX];
+
+    /* Change our current working directory to that of the
+       crashing process */
+
+    snprintf(cwd, PATH_MAX, "/proc/%s/cwd", argv[1]);
+    chdir(cwd);
+
+    /* Write output to file "core.info" in that directory */
+
+    fp = fopen("core.info", "w+");
+    if (fp == NULL)
+        exit(EXIT_FAILURE);
+
+    /* Display command\-line arguments given to core_pattern
+       pipe program */
+
+    fprintf(fp, "argc=%d\en", argc);
+    for (j = 0; j < argc; j++)
+        fprintf(fp, "argc[%d]=<%s>\en", j, argv[j]);
+
+    /* Count bytes in standard input (the core dump) */
+
+    tot = 0;
+    while ((nread = read(STDIN_FILENO, buf, BUF_SIZE)) > 0)
+        tot += nread;
+    fprintf(fp, "Total bytes in core dump: %d\en", tot);
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBbash\fP(1), \fBgdb\fP(1), \fBgetrlimit\fP(2), \fBmmap\fP(2), \fBprctl\fP(2),
+\fBsigaction\fP(2), \fBelf\fP(5), \fBproc\fP(5), \fBpthreads\fP(7), \fBsignal\fP(7)
diff --git a/draft/man5/elf.5 b/draft/man5/elf.5
new file mode 100644 (file)
index 0000000..73672d5
--- /dev/null
@@ -0,0 +1,1356 @@
+.\"    $OpenBSD: elf.5,v 1.12 2003/10/27 20:23:58 jmc Exp $
+.\"Copyright (c) 1999 Jeroen Ruigrok van der Werven
+.\"All rights reserved.
+.\"
+.\"Redistribution and use in source and binary forms, with or without
+.\"modification, are permitted provided that the following conditions
+.\"are met:
+.\"1. Redistributions of source code must retain the above copyright
+.\"   notice, this list of conditions and the following disclaimer.
+.\"2. Redistributions in binary form must reproduce the above copyright
+.\"   notice, this list of conditions and the following disclaimer in the
+.\"   documentation and/or other materials provided with the distribution.
+.\"
+.\"THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\"ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\"ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\"FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\"DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\"OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\"HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\"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.
+.\"
+.\"    $FreeBSD: src/share/man/man5/elf.5,v 1.21 2001/10/01 16:09:23 ru Exp $
+.\"
+.\" Slightly adapted - aeb, 2004-01-01
+.\" 2005-07-15, Mike Frysinger <vapier@gentoo.org>, various fixes
+.\" 2007-10-11, Mike Frysinger <vapier@gentoo.org>, various fixes
+.\" 2007-12-08, mtk, Converted from mdoc to man macros
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH ELF 5 2010\-06\-19 Linux "Linux Programmer's Manual"
+.SH 名前
+elf \- 実行可能リンクフォーマット (ELF) ファイルのフォーマット
+.SH 書式
+.nf
+.\" .B #include <elf_abi.h>
+\fB#include <elf.h>\fP
+.fi
+.SH 説明
+ヘッダファイル \fI<elf.h>\fP は ELF 実行可能バイナリファイルのフォーマットを定義する。
+これらのファイルとしては、通常の実行可能ファイル・ 再配置可能オブジェクトファイル・コアファイル・共有ライブラリがある。
+.PP
+ELF ファイルフォーマットを使う実行可能ファイルは、 ELF ヘッダの後にプログラムヘッダテーブルまたは セクションヘッダテーブル (またはその両方)
+が続く構成である。 ELF ヘッダは常にファイルのオフセット 0 にある。 プログラムヘッダテーブルとセクションヘッダテーブルの
+ファイル内でのオフセットは、ELF ヘッダに定義されている。 この 2 つのテーブルはファイルの残りの部分の詳細を記述する。
+.PP
+.\" Applications which wish to process ELF binary files for their native
+.\" architecture only should include
+.\" .I <elf_abi.h>
+.\" in their source code.
+.\" These applications should need to refer to
+.\" all the types and structures by their generic names
+.\" "Elf_xxx"
+.\" and to the macros by
+.\" ELF_xxx".
+.\" Applications written this way can be compiled on any architecture,
+.\" regardless of whether the host is 32-bit or 64-bit.
+.\" .PP
+.\" Should an application need to process ELF files of an unknown
+.\" architecture, then the application needs to explicitly use either
+.\" "Elf32_xxx"
+.\" or
+.\" "Elf64_xxx"
+.\" type and structure names.
+.\" Likewise, the macros need to be identified by
+.\" "ELF32_xxx"
+.\" or
+.\" "ELF64_xxx".
+.\" .PP
+このヘッダファイルは上記のヘッダを C 言語の構造体で記述し、 また動的セクション・再配置可能セクション・シンボルテーブルの構造体も 含んでいる。
+.PP
+以下の型は N ビットアーキテクチャで使われる (N=32,64 であり \fIElfN\fP は \fIElf32\fP または \fIElf64\fP を表し、
+\fIuintN_t\fP は \fIuint32_t\fP または \fIuint64_t\fP を表す):
+.in +4n
+.nf
+
+.\" Elf32_Size  Unsigned object size
+ElfN_Addr       符号なしのプログラムアドレス, uintN_t
+ElfN_Off        符号なしのファイルオフセット, uintN_t
+ElfN_Section    符号なしのセクションインデックス, uint16_t
+ElfN_Versym     符号なしのバージョンシンボル情報, uint16_t
+Elf_Byte        unsigned char
+ElfN_Half       uint16_t
+ElfN_Sword      int32_t
+ElfN_Word       uint32_t
+ElfN_Sxword     int64_t
+ElfN_Xword      uint64_t
+.fi
+.in
+.PP
+(注意: *BSD での用語は少し異なる。 \fIElf64_Half\fP は \fIElf32_Half\fP の 2 倍であり、
+\fIElf64Quarter\fP が \fIuint16_t\fP に用いられる。 混乱を避けるため、以下では、これらの型はサイズが自明な型に置き換えてある。)
+.PP
+このファイルフォーマットが定義する全てのデータ構造体は、 関連するクラスの "自然な" サイズと配置の指針に従う。
+必要な場合、データ構造体では明示的なパディング (padding, 詰め込み)  が行なわれる。これは 4 バイトオブジェクトに対する 4
+バイト配置を保証するためや、 構造体のサイズを 4 の倍数にするためなどである。
+.PP
+ELF ヘッダは型 \fIElf32_Ehdr\fP または \fIElf64_Ehdr\fP で記述される:
+.in +4n
+.nf
+
+#define EI_NIDENT 16
+
+typedef struct {
+    unsigned char e_ident[EI_NIDENT];
+    uint16_t      e_type;
+    uint16_t      e_machine;
+    uint32_t      e_version;
+    ElfN_Addr     e_entry;
+    ElfN_Off      e_phoff;
+    ElfN_Off      e_shoff;
+    uint32_t      e_flags;
+    uint16_t      e_ehsize;
+    uint16_t      e_phentsize;
+    uint16_t      e_phnum;
+    uint16_t      e_shentsize;
+    uint16_t      e_shnum;
+    uint16_t      e_shstrndx;
+} ElfN_Ehdr;
+.fi
+.in
+.PP
+.\" .Bl -tag -width "e_phentsize"
+フィールドは以下の意味を持つ:
+.TP  12
+\fIe_ident\fP
+このバイト配列は、プロセッサやファイルの他の部分には依存せずに、 ファイルを解釈 (interpret) するために指定される。
+この配列内のすべてのものは、接頭辞 \fBEI_\fP で始まるマクロの名前が付き、接頭辞 \fBELF\fP で始まる値を持つ。 以下のマクロが定義されている:
+.RS 12
+.\" .Bl -tag -width "EI_VERSION" \" EI_ABIVERSION
+.TP  12
+\fBEI_MAG0\fP
+マジックナンバーの第 1 バイト。 \fBELFMAG0\fP で埋めなければならない。 (0: 0x7f)
+.TP 
+\fBEI_MAG1\fP
+マジックナンバーの第 2 バイト。 \fBELFMAG1\fP で埋めなければならない。 (1: \(aqE\(aq)
+.TP 
+\fBEI_MAG2\fP
+マジックナンバーの第 3 バイト。 \fBELFMAG2\fP で埋めなければならない。 (2: \(aqL\(aq)
+.TP 
+\fBEI_MAG3\fP
+マジックナンバーの第 4 バイト。 \fBELFMAG3\fP で埋めなければならない。 (3: \(aqF\(aq)
+.TP 
+\fBEI_CLASS\fP
+第 5 バイトは、このバイナリのアーキテクチャを示す:
+.RS 12
+.\" .Bl -tag -width "ELFCLASSNONE" -compact
+.TP  14
+.PD 0
+\fBELFCLASSNONE\fP
+このクラスは不正である。
+.TP 
+\fBELFCLASS32\fP
+32 ビットアーキテクチャを定義する。 ファイルと仮想アドレス空間が 4 ギガバイトまでのマシンをサポートする。
+.TP 
+\fBELFCLASS64\fP
+64 ビットアーキテクチャを定義する。
+.PD
+.RE
+.\" .El
+.TP 
+\fBEI_DATA\fP
+.\" .Bl -tag -width "ELFDATA2LSB" -compact
+第 6 バイトはファイル内のプロセッサ固有データの データエンコーディングを指定する。 現在のところ以下のエンコーディングがサポートされている:
+.RS 12
+.TP  14
+.PD 0
+\fBELFDATANONE\fP
+不明なデータフォーマット。
+.TP 
+\fBELFDATA2LSB\fP
+2 の補数、リトルエンディアン。
+.TP 
+\fBELFDATA2MSB\fP
+2 の補数、ビッグエンディアン。
+.PD
+.RE
+.\" .El
+.TP 
+.PD 0
+\fBEI_VERSION\fP
+.\" .Bl -tag -width "EV_CURRENT" -compact
+ELF 仕様のバージョン番号:
+.RS 12
+.TP  14
+\fBEV_NONE\fP
+不正なバージョン。
+.TP 
+\fBEV_CURRENT\fP
+現在のバージョン。
+.PD
+.RE
+.\".El
+.TP 
+\fBEI_OSABI\fP
+.\" .Bl -tag -width "ELFOSABI_STANDALONE" -compact
+このバイトはオブジェクトのターゲットとなる オペレーティングシステムと ABI を示す。 他の ELF 構造体のフィールドには、
+プラットフォーム固有の意味を持つフラグや値を持つものもある; これらのフィールドの解釈は、このバイトの値によって決定される。 例えば:
+.RS 12
+.TP  20
+.PD 0
+\fBELFOSABI_NONE\fP
+.\" 0
+ELFOSABI_SYSV と同じ。
+.TP 
+\fBELFOSABI_SYSV\fP
+.\" 0
+.\" synonym: ELFOSABI_NONE
+UNIX System V ABI.
+.TP 
+\fBELFOSABI_HPUX\fP
+.\" 1
+HP\-UX ABI.
+.TP 
+\fBELFOSABI_NETBSD\fP
+.\" 2
+NetBSD ABI.
+.TP 
+\fBELFOSABI_LINUX\fP
+.\" 3
+.\" .TP
+.\" .BR ELFOSABI_HURD
+.\" Hurd ABI.
+.\" 4
+.\" .TP
+.\" .BR ELFOSABI_86OPEN
+.\" 86Open Common IA32 ABI.
+.\" 5
+Linux ABI.
+.TP 
+\fBELFOSABI_SOLARIS\fP
+.\" 6
+.\" .TP
+.\" .BR ELFOSABI_MONTEREY
+.\" Monterey project ABI. Now replaced by
+.\" ELFOSABI_AIX
+.\" 7
+Solaris ABI.
+.TP 
+\fBELFOSABI_IRIX\fP
+.\" 8
+IRIX ABI.
+.TP 
+\fBELFOSABI_FREEBSD\fP
+.\" 9
+FreeBSD ABI.
+.TP 
+\fBELFOSABI_TRU64\fP
+.\" 10
+.\" ELFOSABI_MODESTO
+.\" 11
+.\" ELFOSABI_OPENBSD
+.\" 12
+TRU64 UNIX ABI.
+.TP 
+\fBELFOSABI_ARM\fP
+.\" 97
+ARM アーキテクチャ ABI.
+.TP 
+\fBELFOSABI_STANDALONE\fP
+.\" 255
+.\" .El
+スタンドアロン (組み込み) ABI.
+.PD
+.RE
+.TP 
+\fBEI_ABIVERSION\fP
+このバイトはオブジェクトがターゲットとしている ABI のバージョンを示す。 このフィールドは互換性のない ABI
+のバージョンを区別するために使われる。 このバージョン番号の解釈は、 \fBEI_OSABI\fP フィールドで識別される ABI に依存する。
+この仕様に準拠するアプリケーションは、値 0 を使う。
+.TP 
+\fBEI_PAD\fP
+.\" As reported by Yuri Kozlov and confirmed by Mike Frysinger, EI_BRAND is
+.\" not in GABI (http://www.sco.com/developers/gabi/latest/ch4.eheader.html)
+.\" It looks to be a BSDism
+.\" .TP
+.\" .BR EI_BRAND
+.\" Start of architecture identification.
+パディングの開始。 これらのバイトは予約されており、0 に設定されている。 これらを読み込むプログラムは、これらのバイトを無視すべきである。
+現在使われていないバイトに意味が与えられる場合、 \fBEI_PAD\fP の値は将来変更されるかもしれない。
+.TP 
+\fBEI_NIDENT\fP
+.\" .El
+\fIe_ident\fP 配列のサイズ。
+.RE
+.TP 
+\fIe_type\fP
+この構造体のメンバはオブジェクトファイルタイプを示す:
+.RS 12
+.\" .Bl -tag -width "ET_NONE" -compact
+.TP  12
+.PD 0
+\fBET_NONE\fP
+不明なタイプ。
+.TP 
+\fBET_REL\fP
+再配置可能ファイル。
+.TP 
+\fBET_EXEC\fP
+実行可能ファイル。
+.TP 
+\fBET_DYN\fP
+共有オブジェクト。
+.TP 
+\fBET_CORE\fP
+コアファイル。
+.PD
+.RE
+.\" .El
+.TP 
+\fIe_machine\fP
+このメンバは個々のファイルに必要とされるアーキテクチャを指定する。 例:
+.RS 12
+.\" .Bl -tag -width "EM_MIPS_RS4_BE" -compact
+.TP  12
+.PD 0
+\fBEM_NONE\fP
+.\" 0
+不明なマシン。
+.TP 
+\fBEM_M32\fP
+.\" 1
+AT&T WE 32100.
+.TP 
+\fBEM_SPARC\fP
+.\" 2
+Sun Microsystems SPARC.
+.TP 
+\fBEM_386\fP
+.\" 3
+Intel 80386.
+.TP 
+\fBEM_68K\fP
+.\" 4
+Motorola 68000.
+.TP 
+\fBEM_88K\fP
+.\" 5
+.\" .TP
+.\" .BR EM_486
+.\" Intel 80486.
+.\" 6
+Motorola 88000.
+.TP 
+\fBEM_860\fP
+.\" 7
+Intel 80860.
+.TP 
+\fBEM_MIPS\fP
+.\" 8
+.\" EM_S370
+.\" 9
+.\" .TP
+.\" .BR EM_MIPS_RS4_BE
+.\" MIPS RS4000 (big-endian only). Deprecated.
+.\" 10
+.\" EM_MIPS_RS3_LE (MIPS R3000 little-endian)
+.\" 10
+MIPS RS3000 (ビッグエンディアンのみ)。
+.TP 
+\fBEM_PARISC\fP
+.\" 15
+HP/PA.
+.TP 
+\fBEM_SPARC32PLUS\fP
+.\" 18
+拡張命令セット付き SPARC。
+.TP 
+\fBEM_PPC\fP
+.\" 20
+PowerPC.
+.TP 
+\fBEM_PPC64\fP
+.\" 21
+PowerPC 64\-bit.
+.TP 
+\fBEM_S390\fP
+.\" 22
+IBM S/390
+.TP 
+\fBEM_ARM\fP
+.\" 40
+Advanced RISC Machines
+.TP 
+\fBEM_SH\fP
+.\" 42
+Renesas SuperH
+.TP 
+\fBEM_SPARCV9\fP
+.\" 43
+SPARC v9 64\-bit.
+.TP 
+\fBEM_IA_64\fP
+.\" 50
+Intel Itanium
+.TP 
+\fBEM_X86_64\fP
+.\" 62
+AMD x86\-64
+.TP 
+\fBEM_VAX\fP
+.\" 75
+.\" EM_CRIS
+.\" 76
+.\" .TP
+.\" .BR EM_ALPHA
+.\" Compaq [DEC] Alpha.
+.\" .TP
+.\" .BR EM_ALPHA_EXP
+.\" Compaq [DEC] Alpha with enhanced instruction set.
+DEC Vax.
+.PD
+.RE
+.\" .El
+.TP 
+\fIe_version\fP
+.\" .Bl -tag -width "EV_CURRENT" -compact
+このメンバはファイルバージョンを示す:
+.RS 12
+.TP  12
+.PD 0
+\fBEV_NONE\fP
+不正なバージョン。
+.TP 
+\fBEV_CURRENT\fP
+.\" .El
+現在のバージョン。
+.PD
+.RE
+.TP 
+\fIe_entry\fP
+このメンバは、システムが最初に制御を渡す、 つまりプロセスを開始する仮想アドレスを指定する。 ファイルにエントリポイントが関連付けられていない場合、
+このメンバには 0 が入る。
+.TP 
+\fIe_phoff\fP
+このメンバはプログラムヘッダテーブルの ファイルオフセット (バイト単位) を保持する。 ファイルにプログラムヘッダテーブルがない場合、 このメンバには
+0 が入る。
+.TP 
+\fIe_shoff\fP
+このメンバはセクションヘッダテーブルの ファイルオフセット (バイト単位) を保持する。 ファイルにセクションヘッダテーブルがない場合、 このメンバには
+0 が入る。
+.TP 
+\fIe_flags\fP
+このメンバはファイルに関連付けられたプロセッサ固有のフラグを保持する。 フラグの名前は EF_`machine_flag' という形式である。
+現在のところフラグは定義されていない。
+.TP 
+\fIe_ehsize\fP
+このメンバは ELF ヘッダサイズ (バイト単位) を保持する。
+.TP 
+\fIe_phentsize\fP
+このメンバはこのファイルのプログラムヘッダテーブルの 1 エントリあたりのサイズ (バイト単位) を保持する; 全てのエントリは同じサイズである。
+.TP 
+\fIe_phnum\fP
+このメンバはプログラムヘッダテーブルにあるエントリの数を保持する。 よって \fIe_phentsize\fP と \fIe_phnum\fP の積がテーブルサイズ
+(バイト単位) になる。 ファイルにプログラムヘッダがない場合、 \fIe_phnum\fP は値 0 を保持する。
+.IP
+.\" This is a Linux extension, added in Linux 2.6.34.
+.\" .Bl -tag -width "PN_XNUM"
+プログラムヘッダテーブルのエントリー数が \fBPN_XNUM\fP (0xffff) 以上の場合、
+このメンバは \fBPN_XNUM\fP (0xffff) になり、プログラムヘッダテーブルの
+エントリーの実際の数は、セクションヘッダテーブルの最初のエントリーの
+\fIsh_info\fP メンバに格納される。それ以外の場合、セクションヘッダテーブルの
+最初のエントリーの \fIsh_info\fP メンバには値 0 が格納される。
+.RS 12
+.TP  9
+\fBPN_XNUM\fP
+\fIe_phnum\fP が保持できる最大値を表し、 0xffff に定義されている。 \fIe_phnum\fP
+はプログラムヘッダの実際の数がどこに割り当てられているかを示す。
+.PD
+.RE
+.\" .El
+.IP
+.TP 
+\fIe_shentsize\fP
+このメンバはセクションヘッダのサイズ (バイト単位) を保持する。 セクションヘッダはセクションヘッダテーブルの 1 つのエントリである;
+全てのエントリは同じサイズである。
+.TP 
+\fIe_shnum\fP
+このメンバはセクションヘッダテーブルにあるエントリの数を保持する。 よって \fIe_shentsize\fP と \fIe_shnum\fP
+の積はセクションヘッダテーブルのサイズ (バイト単位) になる。 ファイルにセクションヘッダテーブルがない場合、 \fIe_shnum\fP は値 0
+を保持する。
+.IP
+セクションヘッダテーブルのエントリー数が \fBSHN_LORESERVE\fP (0xff00) 以上の場合、
+\fIe_shnum\fP には値 0 が入り、セクションヘッダテーブルのエントリーの実際の数は
+セクションヘッダテーブルの最初のエントリーの \fIsh_size\fP メンバに格納される。
+それ以外の場合、セクションヘッダテーブルの最初のエントリーの \fIsh_info\fP メンバ
+には値 0 が格納される。
+.TP 
+\fIe_shstrndx\fP
+このメンバはセクション名文字列テーブルに関連付けられたエントリの セクションヘッダテーブルインデックスを保持する。
+ファイルにセクション名文字列テーブルがない場合、 このメンバは値 \fBSHN_UNDEF\fP を保持する。 \fBSHN_UNDEF\fP.
+.IP
+セクション名前文字列テーブルのインデックスが \fBSHN_LORESERVE\fP (0xff00) 以上の
+場合、このメンバには \fBSHN_XINDEX\fP (0xffff) が入り、セクション名前文字列
+テーブルの実際のインデックスはセクションヘッダテーブルの最初のエントリーの
+\fIsh_link\fP メンバに格納される。それ以外の場合、セクションヘッダテーブルの
+最初のエントリーの \fIsh_link\fP メンバには値 0 が格納される。
+.RS 12
+.\" .Bl -tag -width "SHN_LORESERVE"
+.TP  14
+\fBSHN_UNDEF\fP
+この値は未定義・存在しない・無関係その他、 意味のないセクションの参照であることを表す。 例えば、セクション番号 \fBSHN_UNDEF\fP
+に関連づけて「定義」されたシンボルは、「未定義」なシンボルである。
+.TP 
+\fBSHN_LORESERVE\fP
+この値は予約済みのインデックス領域の下限を指定する。
+.TP 
+\fBSHN_LOPROC\fP
+この値以上で \fBSHN_HIPROC\fP 以下の値はプロセッサ固有の意味に予約されている。
+.TP 
+\fBSHN_HIPROC\fP
+この値以下で \fBSHN_HIPROC\fP 以上の値はプロセッサ固有の意味に予約されている。
+.TP 
+\fBSHN_ABS\fP
+この値は対応する参照の絶対値を指定する。 例えば、セクション番号 \fBSHN_ABS\fP に関連づけられたシンボルは絶対値を保持し、再配置に影響されない。
+.TP 
+\fBSHN_COMMON\fP
+このセクションに関連して定義されたシンボルは、 Fortran の COMMON や C の未割り当て external 変数のような、
+共通シンボルである。
+.TP 
+\fBSHN_HIRESERVE\fP
+この値は予約されたインデックスの範囲の上限を指定する。 \fBSHN_LORESERVE\fP と \fBSHN_HIRESERVE\fP は含まれる。
+この値はセクションヘッダテーブルを参照しない。 つまり、セクションヘッダテーブルは 予約されたインデックスのエントリを \fI含まない 。\fP
+.RE
+.\" .El
+.\" .El
+.PP
+実行可能ファイルまたは共有オブジェクトファイルのプログラムヘッダテーブルは、 システムによるプログラム実行準備に必要な、
+セグメント等の情報を記述する構造体の配列である。 オブジェクトファイルの \fIセグメント\fP には 1 つ以上の \fIセクション\fP が含まれる。
+プログラムヘッダは実行可能ファイルと共有オブジェクトファイルでのみ意味を持つ。 ファイルは自身のプログラムヘッダサイズを ELF ヘッダの
+\fIe_phentsize\fP メンバと \fIe_phnum\fP メンバで指定する。 ELF プログラムヘッダは \fIElf32_Phdr\fP 型または
+\fIElf64_Phdr\fP 型で記述される (どちらになるかはアーキテクチャ依存):
+.in +4n
+.nf
+
+typedef struct {
+    uint32_t   p_type;
+    Elf32_Off  p_offset;
+    Elf32_Addr p_vaddr;
+    Elf32_Addr p_paddr;
+    uint32_t   p_filesz;
+    uint32_t   p_memsz;
+    uint32_t   p_flags;
+    uint32_t   p_align;
+} Elf32_Phdr;
+.fi
+.in
+.in +4n
+.nf
+
+typedef struct {
+    uint32_t   p_type;
+    uint32_t   p_flags;
+    Elf64_Off  p_offset;
+    Elf64_Addr p_vaddr;
+    Elf64_Addr p_paddr;
+    uint64_t   p_filesz;
+    uint64_t   p_memsz;
+    uint64_t   p_align;
+} Elf64_Phdr;
+.fi
+.in
+.PP
+.\" .Bl -tag -width "p_offset"
+32 ビットと 64 ビットのプログラムヘッダの主な違いは、構造体における \fIp_flags\fP メンバの位置にある。
+.TP  12
+\fIp_type\fP
+.\" .Bl -tag -width "PT_DYNAMIC"
+Phdr 構造体のこのメンバは、 この配列要素がどのような種類のセグメントを記述しているか、 またはこの配列要素の情報をどのように解釈するか、を表す。
+.RS 12
+.TP  12
+\fBPT_NULL\fP
+この配列要素は使用されておらず、その他のメンバの値は未定義である。 これにより、このプログラムヘッダのエントリは無視される。
+.TP 
+\fBPT_LOAD\fP
+この配列要素は \fIp_filesz\fP と \fIp_memsz\fP で記述されるロード可能セグメントを指定する。
+このファイルからのバイトデータが、このメモリセグメントの先頭からマップされる。 セグメントのメモリサイズ \fISy\fPp_memsz がファイルサイズ
+\fISy\fPp_filesz より大きい場合、 「余った」バイトは値 0 となり、 そのセグメント初期化データの後ろに置かれると定められている。
+ファイルサイズはメモリサイズより大きくてはいけない。 プログラムヘッダテーブルのロード可能セグメントエントリは、 \fIp_vaddr\fP
+メンバの昇順にソートされて出現する。
+.TP 
+\fBPT_DYNAMIC\fP
+この配列要素は動的リンク情報を指定する。
+.TP 
+\fBPT_INTERP\fP
+この配列要素は、インタプリタとして起動されるパス名 (NULL 文字終端)  の位置とサイズを指定する。 このセグメント型は
+(共有オブジェクトにもあるかも知れないが)  実行可能ファイルでのみ意味を持つ。 ただし、このセグメント型は 1 つのファイルに 2
+回以上出現してはならない。 もし存在する場合、このセグメント型は 全てのロード可能セグメントエントリより前になければならない。
+.TP 
+\fBPT_NOTE\fP
+この配列要素は補足情報 (auxiliary information) の位置とサイズを指定する。
+.TP 
+\fBPT_SHLIB\fP
+このセグメント型は予約されているが、意味は指定されていない。 この型の配列要素を保持するプログラムは ABI に準拠しない。
+.TP 
+\fBPT_PHDR\fP
+この配列要素は、もし存在しているならば、 ファイルおよびプログラムのメモリイメージ双方における プログラムヘッダテーブル自身の位置とサイズを指定する。
+このセグメント型は 1 つのファイルに 2 回以上出現してはならない。 さらに、このセグメント型が存在してもよいのは、プログラムヘッダテーブルが
+プログラムのメモリイメージの一部である場合のみである。 もし存在する場合、これは全てのロード可能セグメントエントリより 前になければならない。
+.TP 
+\fBPT_LOPROC\fP
+この値以上で \fBPT_HIPROC\fP 以下の値はプロセッサ固有の意味に予約されている。
+.TP 
+\fBPT_HIPROC\fP
+この値以下で \fBPT_LOPROC\fP 以上の値はプロセッサ固有の意味に予約されている。
+.TP 
+\fBPT_GNU_STACK\fP
+.\" .El
+GNU 拡張であり、Linux カーネルが \fIp_flags\fP のメンバーにセットされたフラグ経由でスタックの状態を制御するために使用する。
+.RE
+.TP 
+\fIp_offset\fP
+このメンバは、セグメントの先頭バイトがある (ファイル先頭からの) オフセットを保持する。
+.TP 
+\fIp_vaddr\fP
+このメンバは、セグメントの先頭バイトがある メモリの仮想アドレスを保持する。
+.TP 
+\fIp_paddr\fP
+物理アドレスが意味をもつシステムでは、 このメンバはセグメントの物理アドレスとして予約されている。 BSD ではこのメンバは使用されない。0
+でなければならない。
+.TP 
+\fIp_filesz\fP
+このメンバはセグメントのファイルイメージのバイト数を保持する。 これは 0 でもよい。
+.TP 
+\fIp_memsz\fP
+このメンバはセグメントのメモリイメージのバイト数を保持する。 これは 0 でもよい。
+.TP 
+\fIp_flags\fP
+.\" .Bl -tag -width "PF_X" -compact
+このメンバはセグメントに関連するフラグのビットマップを保持する:
+.RS 12
+.TP 
+.PD 0
+\fBPF_X\fP
+実行可能セグメント。
+.TP 
+\fBPF_W\fP
+書き込み可能セグメント.
+.TP 
+\fBPF_R\fP
+読み込み可能セグメント。
+.PD
+.RE
+.\" .El
+.IP
+テキストセグメントは一般にフラグ \fBPF_X\fP と \fBPF_R\fP を持つ。 データセグメントは一般に \fBPF_X\fP, \fBPF_W\fP,
+\fBPF_R\fP を持つ。
+.TP 
+\fIp_align\fP
+.\" .El
+このメンバは、セグメントがメモリおよびファイルにおいて配置 (align)  される値を保持する。
+ロード可能プロセスセグメントは、ページサイズを法として \fIp_vaddr\fP と \fIp_offset\fP と合同でなければならない
+(訳注:「p_vaddr mod ページサイズ = p_offset mod ページサイズ」 でなければならない)。。 0 と 1
+という値は配置が必要ないことを意味する。 それ以外の場合、 \fIp_align\fP は正で 2 の整数乗でなければならず、 \fIp_vaddr\fP は
+\fIp_align\fP を法として \fIp_offset\fP と合同でなければならない (訳注:「p_vaddr mod p_align =
+p_offset mod p_align」でなければならない)。
+.PP
+ファイルのセクションヘッダテーブルには、 全てのファイルセクションの場所が記述されている。 セクションヘッダテーブルは \fIElf32_Shdr\fP
+構造体または \fIElf64_Shdr\fP 構造体の配列である。 ELF ヘッダの \fIe_shoff\fP メンバはファイルの先頭から
+セクションヘッダテーブルへのバイトオフセットである。 \fIe_shnum\fP はセクションヘッダテーブルに含まれるエントリの数を保持する。
+\fIe_shentsize\fP は各エントリのサイズ (バイト単位) を保持する。
+.PP
+.\" .Bl -tag -width "SHN_LORESERVE"
+セクションヘッダテーブルインデックスは、この配列の添字である。
+いくつかのセクションヘッダテーブルインデックスは予約されている。予約されて
+いるのは、最初のエントリーと、\fBSHN_LORESERVE\fP と \fBSHN_HIRESERVE\fP の間の
+インデックスである。
+最初のエントリーは、ELF 拡張で \fIe_phnum\fP, \fIe_shnum\fP, \fIe_strndx\fP に使用
+される。それ以外の場合、最初のエントリーの各フィールドには 0 が設定される。
+オブジェクトファイルにはこれらの特別なインデックスに対応するセクションはない。
+.RS
+.TP  14
+\fBSHN_UNDEF\fP
+この値は未定義・不明・無関係・無意味なセクション参照の印となる。
+.TP 
+\fBSHN_LORESERVE\fP
+この値は予約済みのインデックス領域の下限を指定する。
+.TP 
+\fBSHN_LOPROC\fP
+この値以上で \fBSHN_HIPROC\fP 以下の値はプロセッサ固有の意味に予約されている。
+.TP 
+\fBSHN_HIPROC\fP
+この値以下で \fBSHN_HIPROC\fP 以上の値はプロセッサ固有の意味に予約されている。
+.TP 
+\fBSHN_ABS\fP
+この値は対応する参照の絶対値を指定する。 例えば、セクション番号 \fBSHN_ABS\fP に関連して定義されているシンボルは、
+絶対値を保持しているので、再配置に影響されない。
+.TP 
+\fBSHN_COMMON\fP
+このセクションに関連して定義されているシンボルは、 FORTRAN の COMMON や C の未割り当て外部変数のような共通シンボルである。
+.TP 
+\fBSHN_HIRESERVE\fP
+この値は予約済みのインデックス領域の上限を指定する。 システムは \fBSHN_LORESERVE\fP と \fBSHN_HIRESERVE\fP
+を含む範囲を予約する。 セクションヘッダテーブルは予約されたインデックスに対応するエントリを持たない。
+.RE
+.\" .El
+.PP
+セクションヘッダは以下の構造体を持つ:
+.in +4n
+.nf
+
+typedef struct {
+    uint32_t   sh_name;
+    uint32_t   sh_type;
+    uint32_t   sh_flags;
+    Elf32_Addr sh_addr;
+    Elf32_Off  sh_offset;
+    uint32_t   sh_size;
+    uint32_t   sh_link;
+    uint32_t   sh_info;
+    uint32_t   sh_addralign;
+    uint32_t   sh_entsize;
+} Elf32_Shdr;
+.fi
+.in
+.in +4n
+.nf
+
+typedef struct {
+    uint32_t   sh_name;
+    uint32_t   sh_type;
+    uint64_t   sh_flags;
+    Elf64_Addr sh_addr;
+    Elf64_Off  sh_offset;
+    uint64_t   sh_size;
+    uint32_t   sh_link;
+    uint32_t   sh_info;
+    uint64_t   sh_addralign;
+    uint64_t   sh_entsize;
+} Elf64_Shdr;
+.fi
+.in
+.PP
+.\" .Bl -tag -width "sh_addralign"
+32 ビットと 64 ビットのセクションヘッダには実際の違いはない。
+.TP  10
+\fIsh_name\fP
+このメンバはセクション名を定める。 この値はセクションヘッダ文字列テーブルセクションのインデックスであり、 NULL
+文字で終端された文字列の場所を示す。
+.TP 
+\fIsh_type\fP
+.\" .Bl -tag -width "SHT_PROGBITS"
+このメンバはセクションの内容と意味が含まれるカテゴリを示す。
+.RS 10
+.TP  15
+\fBSHT_NULL\fP
+この値はセクションヘッダが不活性であることを示す。 これは関連するセクションを持たない。 このセクションヘッダの他のメンバは、未定義の値を持つ。
+.TP 
+\fBSHT_PROGBITS\fP
+このセクションはプログラムにより定義される情報を保持する。 この情報の形式と意味は、ひとえにプログラムによって決定される。
+.TP 
+\fBSHT_SYMTAB\fP
+このセクションはシンボルテーブルを保持する。 一般には \fBSHT_SYMTAB\fP はリンク編集のためのシンボルを提供するが、 動的リンクにも使われる。
+完全なシンボルテーブルとして、動的リンクには不要な 多くのシンボルを保持できる。 オブジェクトファイルも \fBSHT_DYNSYM\fP
+セクションを持つことができる。
+.TP 
+\fBSHT_STRTAB\fP
+このセクションは文字列テーブルを保持する。 オブジェクトファイルは複数の文字列テーブルセクションを持つことができる。
+.TP 
+\fBSHT_RELA\fP
+このセクションは明示的な加数 (addend) を持つ再配置エントリを保持する。 再配置エントリの型は、オブジェクトファイルの 32 ビットクラスでは
+\fIElf32_Rela\fP である。 オブジェクトファイルは複数の再配置セクションを持つことができる。
+.TP 
+\fBSHT_HASH\fP
+このセクションはシンボルハッシュテーブルを保持する。 動的リンクされるオブジェクトは、 シンボルハッシュテーブルを含んでいなければならない。
+オブジェクトファイルは 1 つのハッシュテーブルのみを持つことができる。
+.TP 
+\fBSHT_DYNAMIC\fP
+このセクションは動的リンクの情報を保持する。 オブジェクトファイルは 1 つの動的セクションのみを持つことができる。
+.TP 
+\fBSHT_NOTE\fP
+このセクションはファイルに何らかの印を付ける情報を保持する。
+.TP 
+\fBSHT_NOBITS\fP
+このタイプのセクションはファイルの領域を使わないという以外は、 \fBSHT_PROGBITS\fP と似ている。 このセクションは 1 バイトも含まないが、
+\fIsh_offset\fP メンバは概念的なファイルオフセットを持つ。
+.TP 
+\fBSHT_REL\fP
+このセクションは明示的な加数を持たない再配置オフセットを保持する。 再配置オフセットの型は、オブジェクトファイルの 32 ビットクラスでは
+\fIElf32_Rel\fP である。 オブジェクトファイルは複数の再配置セクションを持つことができる。
+.TP 
+\fBSHT_SHLIB\fP
+このセクションは予約されているが、意味は指定されていない。
+.TP 
+\fBSHT_DYNSYM\fP
+このセクションは動的リンクシンボルの最小セットを保持する。 オブジェクトファイルは \fBSHT_SYMTAB\fP セクションも含むことができる。
+.TP 
+\fBSHT_LOPROC\fP
+この値以上で \fBSHT_HIPROC\fP 以下の範囲はプロセッサ固有の意味に予約されている。
+.TP 
+\fBSHT_HIPROC\fP
+この値以下で \fBSHT_LOPROC\fP 以上の範囲はプロセッサ固有の意味に予約されている。
+.TP 
+\fBSHT_LOUSER\fP
+この値はアプリケーションプログラムのために予約される インデックス範囲の下限を指定する。
+.TP 
+\fBSHT_HIUSER\fP
+.\" .El
+この値はアプリケーションプログラムのために予約される インデックス範囲の上限を指定する。 \fBSHT_LOUSER\fP から \fBSHT_HIUSER\fP
+の間のセクションタイプは、 現在または将来のシステム定義セクションタイプと衝突することなく、 アプリケーションで使用することができる。
+.RE
+.TP 
+\fIsh_flags\fP
+.\" .Bl -tag -width "SHF_EXECINSTR" -compact
+様々な属性を記述するための 1 ビットのフラグをサポートするセクション。 フラグビットが \fIsh_flags\fP
+に設定された場合、そのセクションについての属性は "オン" になる。 それ以外の場合、属性が "オフ" であるか属性が適用されない。 未定義の属性は 0
+に設定される。
+.RS 10
+.TP  15
+\fBSHF_WRITE\fP
+このセクションはプロセス実行中に書き込み可能なデータを含む。
+.TP 
+\fBSHF_ALLOC\fP
+このセクションはプロセス実行中にメモリを使用する。 制御セクションの中には、オブジェクトファイルのメモリイメージには 存在しないものもある。
+そうしたセクションの場合、この属性はオフである。
+.TP 
+\fBSHF_EXECINSTR\fP
+このセクションは実行可能なマシン命令を含む。
+.TP 
+\fBSHF_MASKPROC\fP
+このマスクに含まれる全てのビットはプロセッサ固有の意味に予約されている。
+.RE
+.\" .El
+.TP 
+\fIsh_addr\fP
+このセクションがプロセスのメモリイメージにある場合、 このメンバはセクションの最初のバイトが存在するアドレスを保持する。 それ以外の場合、このメンバは
+0 である。
+.TP 
+\fIsh_offset\fP
+このメンバの値は、ファイルの先頭からセクションの最初のバイトへの バイトオフセットを保持する。 セクションタイプ \fBSHT_NOBITS\fP
+はファイルの領域を全く使用せず、このタイプの \fIsh_offset\fP メンバはファイルの概念的な位置を示す。
+.TP 
+\fIsh_size\fP
+このメンバはセクションのサイズ (バイト単位) を保持する。 セクションタイプが \fBSHT_NOBITS\fP でない限り、そのセクションはファイル中の
+\fIsh_size\fP バイトを使用する。 タイプが \fBSHT_NOBITS\fP のセクションはサイズが 0 でないが、ファイルの領域を使用しない。
+.TP 
+\fIsh_link\fP
+このメンバは、セクションヘッダテーブルインデックスリンクを保持する。 この解釈はセクションタイプに依存する。
+.TP 
+\fIsh_info\fP
+このメンバは追加情報を保持する。 この解釈はセクションタイプに依存する。
+.TP 
+\fIsh_addralign\fP
+アドレス配置に制約があるセクションもある。 セクションが倍長語 (doubleword) を保持する場合、
+システムは全てのセクションについて倍長語の配置を保証しなければならない。 つまり、 \fIsh_addr\fP の値は \fIsh_addralign\fP
+の値を法として 0 と合同でなければならない (訳注:「sh_addr mod sh_addralign = 0 でなければならない)。 2 の 0
+乗と正の整数乗のみが許可される。 0 または 1 はセクションの配置に制約がないことを意味する。
+.TP 
+\fIsh_entsize\fP
+.\" .El
+シンボルテーブルのような固定サイズエントリのテーブルを保持する セクションもある。 このようなセクションでは、 このメンバは各エントリのサイズ
+(バイト単位) を表す。 このメンバが 0 の場合、 そのセクションは固定サイズエントリのテーブルを保持しない。
+.PP
+.\" .Bl -tag -width ".shstrtab"
+さまざまなセクションにプログラム情報・制御情報が保持される:
+.TP  10
+\&\fI.bss\fP
+このセクションはプログラムのメモリイメージに配置される 非初期化データを保持する。 定義上、システムはプログラムの実行開始時に、データを 0
+で初期化する。 このセクションのタイプは \fBSHT_NOBITS\fP である。 属性タイプは \fBSHF_ALLOC\fP と \fBSHF_WRITE\fP
+である。
+.TP 
+\&\fI.comment\fP
+このセクションはバージョン制御情報を保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。 属性タイプは使用されない。
+.TP 
+\&\fI.ctors\fP
+このセクションは C++ コンストラクタ関数への初期化されたポインタを保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。
+属性タイプは \fBSHF_ALLOC\fP と \fBSHF_WRITE\fP である。
+.TP 
+\&\fI.data\fP
+このセクションはプログラムのメモリイメージに配置される 初期化済みデータを保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。
+属性タイプは \fBSHF_ALLOC\fP と \fBSHF_WRITE\fP である。
+.TP 
+\&\fI.data1\fP
+このセクションはプログラムのメモリイメージに配置される 初期化済みデータを保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。
+属性タイプは \fBSHF_ALLOC\fP と \fBSHF_WRITE\fP である。
+.TP 
+\&\fI.debug\fP
+このセクションはシンボリックデバッグ用の情報を保持する。 その内容は指定されていない。 このセクションのタイプは \fBSHT_PROGBITS\fP
+である。 属性タイプは使用されない。
+.TP 
+\&\fI.dtors\fP
+このセクションは C++ デストラクタ関数への初期化されたポインタを保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。
+属性タイプは \fBSHF_ALLOC\fP と \fBSHF_WRITE\fP である。
+.TP 
+\&\fI.dynamic\fP
+このセクションは動的リンク情報を保持する。 このセクションの属性は \fBSHF_ALLOC\fP ビットを含む。 \fBSHF_WRITE\fP
+ビットが設定されるか否かはプロセッサによる。 このセクションのタイプは \fBSHT_DYNAMIC\fP である。 上記の属性を参照すること。
+.TP 
+\&\fI.dynstr\fP
+このセクションは動的リンクに必要な文字列を保持する。 最も一般的には、この文字列はシンボルテーブルエントリと 関連づけられた名前を表す。
+このセクションのタイプは \fBSHT_STRTAB\fP である。 使用される属性タイプは \fBSHF_ALLOC\fP である。
+.TP 
+\&\fI.dynsym\fP
+このセクションは動的リンクシンボルテーブルを保持する。 このセクションのタイプは \fBSHT_DYNSYM\fP である。 使用される属性タイプは
+\fBSHF_ALLOC\fP である。
+.TP 
+\&\fI.fini\fP
+このセクションはプロセス終了コードに置かれる実行可能命令を保持する。 プロセスが正常に終了した場合、システムはこのセクションにある
+コードを配置して実行する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。 使用される属性タイプは \fBSHF_ALLOC\fP と
+\fBSHF_EXECINSTR\fP である。
+.TP 
+\&\fI.gnu.version\fP
+このセクションはバージョン・シンボル・テーブルを保持する。 その内容は \fIElfN_Half\fP 要素の配列である。 このセクションのタイプは
+\fBSHT_GNU_versym\fP である。 使用される属性タイプは \fBSHF_ALLOC\fP である。
+.TP 
+\&\fI.gnu.version_d\fP
+このセクションはバージョンシンボルの定義を保持する。 その内容は \fIElfN_Verdef\fP 構造体のテーブルである。 このセクションのタイプは
+\fBSHT_GNU_verdef\fP である。 使用される属性タイプは \fBSHF_ALLOC\fP である。
+.TP 
+\&\fI.gnu.version_r\fP
+このセクションはバージョンシンボルが必要とする要素を保持する。 その内容は \fIElfN_Verneed\fP 構造体のテーブルである。
+このセクションのタイプは \fBSHT_GNU_versym\fP である。 使用される属性タイプは \fBshf_alloc\fP である。
+.TP 
+\&\fI.got\fP
+このセクションはグローバルオフセットテーブルを保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。
+属性はプロセッサ毎に異なる。
+.TP 
+\&\fI.hash\fP
+このセクションはシンボルハッシュテーブルを保持する。 セクションのタイプは \fBSHT_HASH\fP である。 使用される属性は \fBSHF_ALLOC\fP
+である。
+.TP 
+\&\fI.init\fP
+このセクションはプロセス初期化コードに配置される実行可能命令を保持する。 プログラムが実行を開始すると、
+システムはメインプログラムエントリポイントを呼び出す前に、 このセクションにあるコードを配置して実行する。 このセクションはのタイプは
+\fBSHT_PROGBITS\fP である。 使用される属性は \fBSHF_ALLOC\fP と \fBSHF_EXECINSTR\fP である。
+.TP 
+\&\fI.interp\fP
+このセクションはプログラムインタプリタのパス名を保持する。 ファイルにこのセクションを含むロード可能セグメントがある場合、 そのセクションの属性には
+\fBSHF_ALLOC\fP ビットが含まれる。 それ以外の場合このビットはオフになる。 このセクションのタイプは \fBSHT_PROGBITS\fP である。
+.TP 
+\&\fI.line\fP
+このセクションはシンボリックデバッグのための行番号情報を保持する。 ここにはプログラムソースコードとマシンコードの対応関係が記述される。
+内容は指定されていない。 このセクションのタイプは \fBSHT_PROGBITS\fP である。 属性タイプは使用されない。
+.TP 
+\&\fI.note\fP
+このセクションは "Note Section" 形式で情報を保持する。このセクションのタイプ
+は \fBSHT_NOTE\fP である。属性タイプは使用されない。通常 OpenBSD ネイティブ実行
+可能ファイルは自身を識別するために \fI.note.openbsd.ident\fP セクションを持つ。
+これによりカーネルは、ファイルをロードする際に 互換 ELF バイナリエミュレーショ
+ンテストを回避できる。
+.TP 
+\&\fI.note.GNU\-stack\fP
+このセクションは Linux のオブジェクトファイルで スタック属性を宣言するのに使用される。 セクションのタイプは \fBSHT_PROGBITS\fP
+である。使用される属性は \fBSHF_EXECINSTR\fP だけである。この属性は GNU リンカに対して オブジェクトファイルが実行可能なスタック
+(executable stack) を必要とする 示すものである。
+.TP 
+\&\fI.plt\fP
+このセクションは手続き (procedure) リンクテーブルを保持する。 このセクションのタイプは \fBSHT_PROGBITS\fP である。
+属性はプロセッサ毎に異なる。
+.TP 
+\&\fI.relNAME\fP
+このセクションは以下に記述される再配置情報を保持する。 ファイルが再配置を含むロード可能セグメントを持っている場合、 このセクションの属性は
+\fBSHF_ALLOC\fP ビットを含む。 それ以外の場合、そのビットはオフである。 慣例として、 "NAME"
+は再配置が適用されるセクションが指定される。 よって \fB.text\fP についての再配置セクションは、通常は \fB.rel.text\fP
+という名前を持つ。 このセクションのタイプは \fBSHT_REL\fP である。
+.TP 
+\&\fI.relaNAME\fP
+このセクションは以下に記述される再配置情報を保持する。 ファイルが再配置を含むロード可能セグメントを持っている場合、 このセクションの属性は
+\fBSHF_ALLOC\fP ビットを含む。 それ以外の場合、そのビットはオフである。 慣例として、 "NAME"
+は再配置が適用されるセクションが指定される。 よって \fB.text\fP についての再配置セクションは、通常は \fB.rela.text\fP
+という名前を持つ。 このセクションのタイプは \fBSHT_RELA\fP である。
+.TP 
+\&\fI.rodata\fP
+このセクションはリードオンリーのデータを保持する。 このデータはプロセスイメージにおける書き込み不可能なセグメントに置かれる。 このセクションのタイプは
+\fBSHT_PROGBITS\fP である。 使用される属性は \fBSHF_ALLOC\fP である。
+.TP 
+\&\fI.rodata1\fP
+このセクションはリードオンリーのデータを保持する。 このデータはプロセスイメージにおける書き込み不可能なセグメントに置かれる。 このセクションのタイプは
+\fBSHT_PROGBITS\fP である。 使用される属性は \fBSHF_ALLOC\fP である。
+.TP 
+\&\fI.shstrtab\fP
+このセクションはセクション名を保持する。 このセクションのタイプは \fBSHT_STRTAB\fP である。 属性タイプは使用されない。
+.TP 
+\&\fI.strtab\fP
+このセクションは文字列を保持する。 最も一般的なのは、シンボルテーブルエントリに関連づけられた 名前を表す文字列である。
+ファイルがシンボル文字列テーブルを含むロード可能セグメントを持つ場合、 セクションの属性は \fBSHF_ALLOC\fP ビットを含む。
+それ以外の場合、そのビットはオフである。 このセクションのタイプは \fBSHT_STRTAB\fP である。
+.TP 
+\&\fI.symtab\fP
+このセクションはシンボルテーブルを保持する。 ファイルがシンボルテーブルを含むロード可能セグメントを持つ場合、 セクションの属性は
+\fBSHF_ALLOC\fP ビットを含む。 それ以外の場合、ビットはオフである。 このセクションのタイプは \fBSHT_SYMTAB\fP である。
+.TP 
+\&\fI.text\fP
+.\" .El
+このセクションはプログラムの "テキスト" または実行可能命令を保持する。 セクションのタイプは \fBSHT_PROGBITS\fP である。
+使用される属性は \fBSHF_ALLOC\fP と \fBSHF_EXECINSTR\fP である。
+.PP
+文字列テーブルセクションは NULL 文字で終端されたキャラクタ配列 (通常文字列と呼ばれるもの) を保持する。 オブジェクトファイルはこれらの文字列を
+シンボル名とセクション名を表すために使う。 文字列は、文字列テーブルセクションへのインデックスとして参照される。 インデックス 0
+の最初のバイトは、NULL バイト (\(aq\e0\(aq) を 保持すると定義されている。 同様に文字列テーブルの最後のバイトも NULL
+文字を保持すると定義されている。 これは全ての文字列が NULL バイトで終端されていることを保証するためである。
+.PP
+オブジェクトファイルのシンボルテーブルは、 プログラムのシンボル定義と参照を配置または再配置するのに 必要な情報を保持する。
+.in +4n
+.nf
+
+typedef struct {
+    uint32_t      st_name;
+    Elf32_Addr    st_value;
+    uint32_t      st_size;
+    unsigned char st_info;
+    unsigned char st_other;
+    uint16_t      st_shndx;
+} Elf32_Sym;
+.fi
+.in
+.in +4n
+.nf
+
+typedef struct {
+    uint32_t      st_name;
+    unsigned char st_info;
+    unsigned char st_other;
+    uint16_t      st_shndx;
+    Elf64_Addr    st_value;
+    uint64_t      st_size;
+} Elf64_Sym;
+.fi
+.in
+.PP
+.\" .Bl -tag -width "st_value"
+32 ビット版と 64 ビット版は同じメンバを持ち、単に順番が異なるだけである。
+.TP  10
+\fIst_name\fP
+このメンバはオブジェクトファイルのシンボル文字列テーブルの インデックスを保持する。 シンボル文字列テーブルはシンボル名の文字表現を保持する。 この値が
+0 でない場合、シンボル名を得るための文字テーブルインデックスを表す。 それ以外の場合、シンボルテーブルは名前を持たない。
+.TP 
+\fIst_value\fP
+このメンバは関連づけられたシンボルの値を表す。
+.TP 
+\fIst_size\fP
+多くのシンボルにはそれに関連づけられたサイズがある。 シンボルがサイズを持たない場合、またはサイズが不明な場合、 このメンバは 0 である。
+.TP 
+\fIst_info\fP
+.\" .Bl -tag -width "STT_SECTION"
+このメンバはシンボルのタイプとバインディング (binding) 属性を指定する:
+.RS 10
+.TP  12
+\fBSTT_NOTYPE\fP
+シンボルのタイプが定義されていない。
+.TP 
+\fBSTT_OBJECT\fP
+シンボルはデータオブジェクトに関連づけられている。
+.TP 
+\fBSTT_FUNC\fP
+シンボルは関数またはその他の実行コードに関連づけられている。
+.TP 
+\fBSTT_SECTION\fP
+シンボルはセクションに関連づけられている。 このタイプのシンボルテーブルエントリは、 主として再配置のために存在し、通常は \fBSTB_LOCAL\fP
+バインディングを持つ。
+.TP 
+\fBSTT_FILE\fP
+慣例として、シンボルの名前は オブジェクトファイルに関連づけられたソースファイルの名前を指定する。 ファイルシンボルは \fBSTB_LOCAL\fP
+バインディングを持ち、そのセクションインデックスは \fBSHN_ABS\fP である。 ファイルシンボルは、ファイルに他の \fBSTB_LOCAL\fP
+シンボルがある場合は、それよりも先に来る。
+.TP 
+\fBSTT_LOPROC\fP
+この値以上で \fBSTT_HIPROC\fP 以下の範囲はプロセッサ固有の意味に予約されている。
+.TP 
+\fBSTT_HIPROC\fP
+.\" .El
+.\" .Bl -tag -width "STB_GLOBAL"
+この値以下で \fBSTT_LOPROC\fP 以上の範囲はプロセッサ固有の意味に予約されている。
+.TP 
+\fBSTB_LOCAL\fP
+局所的シンボルはその定義を含むオブジェクトファイルの外からは見えない。 同じ名前の局所的シンボルは、お互いに影響を受けることなく、
+複数のファイルに存在できる。
+.TP 
+\fBSTB_GLOBAL\fP
+大域的シンボルは結びつけられている全てのオブジェクトファイルから見える。 1 つのファイルで大域的シンボルが定義されていたら、
+他のファイルでは同じシンボルへの参照は未定義でなければならない。
+.TP 
+\fBSTB_WEAK\fP
+弱シンボルは大域的シンボルに似ているが、その定義は優先度が低い。
+.TP 
+\fBSTB_LOPROC\fP
+この値以上で \fBSTB_HIPROC\fP 以下の範囲はプロセッサ固有の意味に予約されている。
+.TP 
+\fBSTB_HIPROC\fP
+この値以下で \fBSTB_LOPROC\fP 以上の範囲はプロセッサ固有の意味に予約されている。
+.IP
+バインディングとタイプフィールドを パックしたりアンパックしたりするマクロがある:
+.IP
+\fBELF32_ST_BIND\fP(info)  または \fBELF64_ST_BIND\fP(info)  \fIst_info\fP
+の値からバインディングを取り出す。
+.IP
+\fBELF32_ST_TYPE\fP(info)  または \fBELF64_ST_TYPE\fP(info)
+.br
+\fIst_info\fP の値からタイプを取り出す。
+.IP
+\fBELF32_ST_INFO\fP(bind, type)  または \fBELF64_ST_INFO\fP(bind, type)
+.br
+バインディングとタイプを \fIst_info\fP の値に変換する。
+.RE
+.\" .El
+.TP 
+\fIst_other\fP
+.\" .Bl -tag -width "STV_PROTECTED"
+このメンバはシンボルの visibility (見える範囲) を規定する。
+.RS 10
+.TP  16
+.PD 0
+\fBSTV_DEFAULT\fP
+デフォルトのシンボル visibility ルール。
+.TP 
+\fBSTV_INTERNAL\fP
+プロセッサ固有の隠しクラス。
+.TP 
+\fBSTV_HIDDEN\fP
+シンボルは他のモジュールからは利用できない。
+.TP 
+\fBSTV_PROTECTED\fP
+横取りできず (not preemptible)、公開されない。
+.PD
+.PP
+visibility 種別を抽出するためのマクロがある。
+.PP
+\fBELF32_ST_VISIBILITY\fP(other)  または \fBELF64_ST_VISIBILITY\fP(other)
+.RE
+.\" .El
+.TP 
+\fIst_shndx\fP
+.\" .El
+各シンボルテーブルエントリは、いくつかのセクションに関連して "定義されている"。 このメンバは関連するセクションヘッダテーブルインデックスを保持する。
+.PP
+再配置はシンボル参照とシンボル定義を結合するプロセスである。 再配置可能ファイルはセクションの内容をどのように修正するかに関する
+情報を持たなければならない。 これにより、実行可能ファイルと共有オブジェクトファイルは
+プロセスのプログラムイメージについての正しい情報を持つことができる。 再配置エントリは以下のようなデータである。
+.PP
+加数を必要としない再配置構造体。
+.in +4n
+.nf
+
+typedef struct {
+    Elf32_Addr r_offset;
+    uint32_t   r_info;
+} Elf32_Rel;
+.fi
+.in
+.in +4n
+.nf
+
+typedef struct {
+    Elf64_Addr r_offset;
+    uint64_t   r_info;
+} Elf64_Rel;
+.fi
+.in
+.PP
+加数を必要とする再配置構造体。
+.in +4n
+.nf
+
+typedef struct {
+    Elf32_Addr r_offset;
+    uint32_t   r_info;
+    int32_t    r_addend;
+} Elf32_Rela;
+.fi
+.in
+.in +4n
+.nf
+
+typedef struct {
+    Elf64_Addr r_offset;
+    uint64_t   r_info;
+    int64_t    r_addend;
+} Elf64_Rela;
+.fi
+.in
+.\" .Bl -tag -width "r_offset"
+.TP  12
+\fIr_offset\fP
+このメンバは再配置動作が適用される位置を与える。 再配置可能ファイルの場合、この値はセクションの先頭から 再配置で影響を受ける格納単位 (storage
+unit) までのバイトオフセットである。 実行可能ファイルまたは共有オブジェクトの場合、 この値は再配置で影響を受ける格納単位の仮想アドレスである。
+.TP 
+\fIr_info\fP
+このメンバは、再配置が行われなければならないシンボルテーブルインデックスと、 適用される再配置のタイプの両方を与える。
+再配置タイプはプロセッサ毎に異なる。 テキストが再配置エントリの再配置タイプ またはシンボルテーブルインデックスを参照している場合、 それぞれエントリの
+\fIr_info\fP メンバに対して、それぞれ \fBELF_[32|64]_R_TYPE\fP と \fBELF[32|64]_R_SYM\fP
+を適用した結果を意味する。
+.TP 
+\fIr_addend\fP
+.\" .El
+このメンバは定数の加数を指定する。 この加数は再配置可能フィールドに格納される値を計算するために使われる。
+.PP
+\&.dynamic セクションは、関連する動的リンク情報を保持している 一連の構造体を保持する。 d_tag メンバは d_un の解釈を制御する。
+.in +4n
+.nf
+
+typedef struct {
+    Elf32_Sword    d_tag;
+    union {
+        Elf32_Word d_val;
+        Elf32_Addr d_ptr;
+    } d_un;
+} Elf32_Dyn;
+extern Elf32_Dyn _DYNAMIC[];
+.fi
+.in
+.in +4n
+.nf
+
+typedef struct {
+    Elf64_Sxword    d_tag;
+    union {
+        Elf64_Xword d_val;
+        Elf64_Addr  d_ptr;
+    } d_un;
+} Elf64_Dyn;
+extern Elf64_Dyn _DYNAMIC[];
+.fi
+.in
+.\" .Bl -tag -width "d_tag"
+.TP  10
+\fId_tag\fP
+.\" .Bl -tag -width "DT_SYMBOLIC"
+このメンバは以下の値を持つことができる:
+.RS 10
+.TP  12
+\fBDT_NULL\fP
+動的セクションの終りのマーク
+.TP 
+\fBDT_NEEDED\fP
+必要なライブラリの名前への文字列テーブルオフセット
+.TP 
+\fBDT_PLTRELSZ\fP
+PLT 再配置 (reloc) テーブルのサイズ (バイト単位)
+.TP 
+\fBDT_PLTGOT\fP
+PLT と GOT (または何れか一方) のアドレス
+.TP 
+\fBDT_HASH\fP
+シンボルハッシュテーブルのアドレス
+.TP 
+\fBDT_STRTAB\fP
+文字列テーブルのアドレス
+.TP 
+\fBDT_SYMTAB\fP
+シンボルテーブルのアドレス
+.TP 
+\fBDT_RELA\fP
+Rela 再配置テーブルのアドレス
+.TP 
+\fBDT_RELASZ\fP
+Rela テーブルのサイズ (バイト単位)
+.TP 
+\fBDT_RELAENT\fP
+Rela テーブルエントリのサイズ (バイト単位)
+.TP 
+\fBDT_STRSZ\fP
+文字列テーブルのサイズ (バイト単位)
+.TP 
+\fBDT_SYMENT\fP
+シンボルテーブルエントリのサイズ (バイト単位)
+.TP 
+\fBDT_INIT\fP
+初期化関数のアドレス
+.TP 
+\fBDT_FINI\fP
+終了関数のアドレス
+.TP 
+\fBDT_SONAME\fP
+共有オブジェクトの名前への文字列テーブルオフセット
+.TP 
+\fBDT_RPATH\fP
+ライブラリ検索パスへの文字列テーブルオフセット (推奨されない)
+.TP 
+\fBDT_SYMBOLIC\fP
+リンカがシンボルの実行可能ファイルより前に この共有オブジェクトを検索した場合は、警告を出す。
+.TP 
+\fBDT_REL\fP
+Rel 再配置テーブルのアドレス
+.TP 
+\fBDT_RELSZ\fP
+Rel テーブルのサイズ (バイト単位)
+.TP 
+\fBDT_RELENT\fP
+Rel テーブルエントリのサイズ (バイト単位)
+.TP 
+\fBDT_PLTREL\fP
+PLT が参照する再配置テーブルのタイプ (Rela または Rel)
+.TP 
+\fBDT_DEBUG\fP
+デバッグのために使用されている。内容は定義されていない。
+.TP 
+\fBDT_TEXTREL\fP
+これが指定されていない場合、 書き込み不可のセグメントには再配置は適用されない。
+.TP 
+\fBDT_JMPREL\fP
+PLT 専用の再配置エントリのアドレス
+.TP 
+\fBDT_BIND_NOW\fP
+実行可能ファイルに制御を譲る前に、 全ての再配置を処理するように動的リンカに指示する。
+.TP 
+\fBDT_RUNPATH\fP
+ライブラリ検索パスへの文字列テーブルオフセット
+.TP 
+\fBDT_LOPROC\fP
+プロセッサ固有の意味の開始
+.TP 
+\fBDT_HIPROC\fP
+プロセッサ固有の意味の終了
+.RE
+.\" .El
+.TP 
+\fId_val\fP
+このメンバは様々な意味に解釈される整数値である。
+.TP 
+\fId_ptr\fP
+このメンバはプログラムの仮想アドレスを表す。 これらのアドレスを解釈する際に、 実際のアドレスは元々のファイルの値と
+メモリの基底アドレスから計算される。 ファイルにはこれらのアドレスを修正するための 再配置エントリを含めてはならない。
+.TP 
+\fI_DYNAMIC\fP
+.\" .El
+\&.dynamic セクションにある全ての動的構造体を含む配列。 これは自動的にリンカに渡される。
+.SH 注意
+.\" OpenBSD
+.\" ELF support first appeared in
+.\" OpenBSD 1.2,
+.\" although not all supported platforms use it as the native
+.\" binary file format.
+ELF は System V で初めて登場した。 ELF 自体は System V で初めて登場した。 ELF フォーマットは採択された標準である。
+.PP
+.\" .SH AUTHORS
+.\" The original version of this manual page was written by
+.\" .An Jeroen Ruigrok van der Werven
+.\" .Aq asmodai@FreeBSD.org
+.\" with inspiration from BSDi's
+.\" .Bsx
+.\" .Nm elf
+.\" man page.
+\fIe_phnum\fP, \fIe_shnum\fP, \fIe_strndx\fP に対する拡張は、いずれも Linux での拡張で
+ある。Sun, BSD, AMD64 もこれに対応している。詳しい情報は、関連項目を参照。
+.SH 関連項目
+\fBas\fP(1), \fBgdb\fP(1), \fBld\fP(1), \fBobjdump\fP(1), \fBexecve\fP(2), \fBcore\fP(5)
+.PP
+Hewlett\-Packard, \fIElf\-64 Object File Format\fP.
+.PP
+Santa Cruz Operation, \fISystem V Application Binary Interface\fP.
+.PP
+UNIX System Laboratories, "Object Files", \fIExecutable and Linking Format
+(ELF)\fP.
+.PP
+Sun Microsystems, \fILinker and Libraries Guide\fP.
+.PP
+AMD64 ABI Draft, \fISystem V Application Binary Interface AMD64 Architecture
+Processor Supplement\fP.
+.PP
diff --git a/draft/man5/filesystems.5 b/draft/man5/filesystems.5
new file mode 100644 (file)
index 0000000..59b06f4
--- /dev/null
@@ -0,0 +1,146 @@
+.\" Copyright 1996 Daniel Quinlan (Daniel.Quinlan@linux.org)
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" 2007-12-14 mtk Added Reiserfs, XFS, JFS.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH FILESYSTEMS 5 2010\-05\-24 Linux "Linux Programmer's Manual"
+.nh
+.SH 名前
+filesystems \- Linux のファイルシステム種別: minix, ext, ext2, ext3, ext4,
+Reiserfs, XFS, JFS, xia, msdos, umsdos, vfat, ntfs, proc, nfs, iso9660,
+hpfs, sysv, smb, ncpfs
+.SH 説明
+\fBproc\fP ファイルシステムが慣習どおりに \fI/proc\fP にマウントされている場合、 現在のカーネルがどのファイルシステムをサポートしているか
+知るためにはファイル \fI/proc/filesystems\fP を見ればよい。 必要なファイルシステムが現在のカーネルにサポートされて
+いない場合、適切なモジュールを組み込むか、それもだめならば カーネルを再コンパイルすること。
+
+ファイルシステムを使うためには、 \fIマウント\fP する必要がある。 \fBmount\fP(8)  を参照のこと。
+
+以下は利用可能なファイルシステムのうち、いくつかの簡単な説明である。
+.TP  10
+\fBminix\fP
+Minix オペレーティングシステムのファイルシステム。 Linux で動いた最初のファイルシステムでもある。これにはいくつか欠点がある。
+まず、パーティションのサイズが最大 64MB であること。他にも、短いファイル名 しか使えない、タイムスタンプが一つだけである、などなど。 フロッピーや
+RAM ディスクに便利なのでまだ残っている。
+.TP 
+\fBext\fP
+\fBminix\fP ファイルシステムの手の込んだ拡張である。これは第二拡張ファイルシステム (second extended file system :
+\fBext2\fP)  に完全にとって代わられ、カーネル 2.1.21 で取り除かれた。
+.TP 
+\fBext2\fP
+Linux の高性能なファイルシステムである。これは固定ディスクだけではなく リムーバブルディスクにもよく使われる。 拡張ファイルシステム
+(\fBext\fP)  の発展として第二拡張ファイルシステム (\fBext2\fP)  が設計された。この \fBext2\fP は Linux
+のファイルシステムの中で (スピードおよび CPU の使用量の面で) 最も よいパフォーマンスを発揮する。
+.TP 
+\fBext3\fP
+ext2 ファイルシステムにジャーナル機能をつけたものである。
+ext2 と ext3 は簡単に行きつ戻りつできる。
+.TP 
+\fBext4\fP
+ext3 の改良版であり、性能と信頼性のかなりの改善と、ボリューム、ファイル、
+ディレクトリのサイズの上限の大幅な拡張が行われている。
+.TP 
+\fBReiserfs\fP
+Hans Reiser によって設計されたジャーナリングファイルシステムである。
+カーネル 2.4.1 で Linux に統合された。
+.TP 
+\fBXFS\fP
+SGI により開発されたジャーナリングファイルシステムである。
+カーネル 2.4.20 で Linux に統合された。
+.TP 
+\fBJFS\fP
+IBM により開発されたジャーナリングファイルシステムである。
+カーネル 2.4.24 で Linux に統合された。
+.TP 
+\fBxiafs\fP
+は Minix ファイルシステムの拡張で、より安定し安全なファイルシステムとして 設計、実装された。これは、いらない複雑さは避けつつ必要な基本的機能を
+備えている。 \fBxia\fP ファイルシステムは、もはや開発もメンテナンスも行われていない。 カーネル 2.1.21 で取り除かれた。
+.TP 
+\fBmsdos\fP
+は DOS や Windows、いくらかの OS/2 コンピュータが使っているファイル システムである。 この \fBmsdos\fP
+ファイルシステムでは「8 文字の名前+ピリオド+3 文字の拡張子」より 長いファイル名はつけることができない。
+.TP 
+\fBumsdos\fP
+は DOS ファイルシステムを拡張した Linux のファイルシステムである。 これは DOS ファイルシステムのもとで、長いファイル名や
+UID/GID、POSIX 形式の パーミッション、(デバイスファイルや名前付きパイプなどの) 特殊ファイルを 使えるようにしたものである。DOS
+との互換性がある。
+.TP 
+\fBvfat\fP
+は Microsoft Windows95 と Windows NT が使う DOS ファイルシステムの拡張である。
+長いファイル名が使えるようになっている。
+.TP 
+\fBntfs\fP
+Microsoft Windows の FAT ファイルシステム (VFAT, FAT32) を置き換えるものである。
+信頼性、性能、容量効率の向上に加えて、ACL、ジャーナリング、暗号化などの機能が
+追加されている。
+.TP 
+\fBproc\fP
+はカーネルデータ構造へのインターフェイスとなる疑似ファイルシステムである。 これは \fI/dev/kmem\fP
+を読んで解釈することの代わりとして使うことができる。 このファイルシステムのファイルはディスクスペースを使用しない。 \fBproc\fP(5)
+を参照のこと。
+.TP 
+\fBiso9660\fP
+は ISO 9660 標準に沿った CD\-ROM のファイルシステムである。
+.RS
+.TP 
+\fBHigh Sierra\fP
+Linux はハイシェラ (High Sierra) をサポートしている。これは ISO 9660 標準が 決まるより前に使われていた CD\-ROM
+ファイルシステムである。Linux の \fBiso9660\fP ファイルシステムサポートがハイシェラファイルシステムを自動で 認識することができる。
+.TP 
+\fBRock Ridge\fP
+Linux はロックリッジ (Rock Ridge) 変換プロトコルで規定された システム使用
+共有プロトコルもサポートしている。これは UNIX ホ ストのファイルを \fBiso9660\fP
+ファイルシステムでより詳しく記述するために使用され、長いファイル名や UID/GID、
+POSIX 形式のパーミッション、デバイスファイル などの情報を提供する。Linux の
+\fBiso9660\fP ファイルシステムサポートがロックリッジファイルシステムを自動で
+認識することができる。
+.RE
+.TP 
+\fBhpfs\fP
+は OS/2 で使われる高性能ファイルシステム(High Performance Filesystem)である。
+このファイルシステムはドキュメントが入手できないため、 Linux では読み込み専用 (Read\-only) でしか使用できない。
+.TP 
+\fBsysv\fP
+は SystemV/Coherent ファイルシステムの Linux での実装である。 Xenix, SystemV/386, Coherent
+各ファイルシステムを使うことができる。
+.TP 
+\fBnfs\fP
+はネットワークファイルシステムである。 離れたコンピュータのディスクを使うことができる。
+.TP 
+\fBsmb\fP
+は SMB プロトコルをサポートしたネットワークファイルシステムである。 Windows for Workgroups, Windows NT, Lan
+Manager が使っている。
+.sp
+\fBsmb\fP ファイルシステムを使うためには ksmbfs パッケージに含まれる 特殊なマウントプログラムが必要である。 ksmbfs は
+\fIftp://sunsite.unc.edu/pub/Linux/system/Filesystems/smbfs\fP にある。
+.TP 
+\fBncpfs\fP
+は NCP プロトコルをサポートしたファイルシステムである。Novell NetWare が 使っている。
+.sp
+\fBncpfs\fP を使うためには \fIftp://linux01.gwdg.de/pub/ncpfs\fP にある特殊なプログラムが必要である。
+.SH 関連項目
+\fBproc\fP(5), \fBfsck\fP(8), \fBmkfs\fP(8), \fBmount\fP(8)
diff --git a/draft/man5/resolv.conf.5 b/draft/man5/resolv.conf.5
new file mode 100644 (file)
index 0000000..a302b39
--- /dev/null
@@ -0,0 +1,167 @@
+.\" Copyright (c) 1986 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms are permitted
+.\" provided that the above copyright notice and this paragraph are
+.\" duplicated in all such forms and that any documentation,
+.\" advertising materials, and other materials related to such
+.\" distribution and use acknowledge that the software was developed
+.\" by the University of California, Berkeley.  The name of the
+.\" University may not be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.\"    @(#)resolver.5  5.9 (Berkeley) 12/14/89
+.\"    $Id: resolver.5,v 8.6 1999/05/21 00:01:02 vixie Exp $
+.\"
+.\" Added ndots remark by Bernhard R. Link - debian bug #182886
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH RESOLV.CONF 5 2012\-02\-08 "" "Linux Programmer's Manual"
+.UC 4
+.SH 名前
+resolv.conf \- レゾルバ設定ファイル
+.SH 書式
+\fB/etc/resolv.conf\fP
+.SH 説明
+\fIresolver\fP は、インターネットのドメインネームシステム (DNS) へのアクセスを提供する C ライブラリのルーチン群である。
+レゾルバ設定ファイルには、レゾルバルーチンがプロセスによって最初に 起動されたときに読み込まれる情報が格納されている。
+このファイルは人間に可読なように設計されている。 キーワードと値のリストが含まれ、いろいろなタイプのレゾルバ情報を提供する。
+.LP
+普通に設定されたシステムでは、このファイルは必要ない。 問い合わせをされる唯一のネームサーバはローカルマシン上にある。
+ドメイン名はホスト名から決定され、 ドメインの検索パスはドメイン名から作成される。
+.LP
+この状態を変更するための設定オプションには、以下のようなものがある。
+.TP 
+\fBnameserver\fP ネームサーバの IP アドレス
+レゾルバが問い合わせをするネームサーバの (ドット表記の) インターネットアドレス。 このキーワード 1 つごとに 1 台づつ、 \fBMAXNS\fP 台
+(現状では 3 台、\fI<resolv.h>\fP を参照) までのネームサーバをリストできる。
+複数のサーバが指定された場合、レゾルバライブラリは リストされた順に問い合わせを行う。 \fBnameserver\fP エントリがない場合、
+デフォルトではローカルマシン上のネームサーバが使われる。 (ここで使われるアルゴリズムは以下のようなものである。
+はじめにネームサーバに問い合わせを試みる。 この問い合わせがタイムアウトになった場合、 次のネームサーバに問い合わせを試みる。
+これをネームサーバがなくなるまで続ける。 それでも応答がない場合は、リトライ最大回数に達するまで 全てのネームサーバに問い合わせを繰り返す。)
+.TP 
+\fBdomain\fP ローカルドメイン名
+このドメインにある名前の問い合わせのほとんどに、 このローカルドメインにおける短い名前を使用することができる。 \fBdomain\fP
+エントリがない場合、ドメイン名は \fBgethostname\fP(2)  で返されるローカルホスト名から決定され、 最初の \(aq.\(aq
+以降の全ての部分がドメイン名とされる。 このホスト名にもドメイン部を含んでいない場合、ルートドメインが仮定される。
+.TP 
+\fBsearch\fP ホスト名ルックアップのための検索リスト
+.\" When having a resolv.conv with a line
+.\"  search subdomain.domain.tld domain.tld
+.\" and doing a hostlookup, for example by
+.\"  ping host.anothersubdomain
+.\" it sends dns-requests for
+.\"  host.anothersubdomain.
+.\"  host.anothersubdomain.subdomain.domain.tld.
+.\"  host.anothersubdomain.domain.tld.
+.\" thus not only causing unnecessary traffic for the root-dns-servers
+.\" but broadcasting information to the outside and making man-in-the-middle
+.\" attacks possible.
+検索リストは通常ローカルドメイン名から決定される。 デフォルトでは、検索リストはローカルドメイン名のみである。 これを変更するには、\fIsearch\fP
+キーワードの後に 希望するドメイン検索パスをスペースまたはタブで区切ってリストすればよい。 ドットの数が \fIndots\fP (デフォルトでは 1)
+より少ないレゾルバの問い合わせは、 一致するものが見つかるまで検索パスの各要素を順に使って試す。 複数のサブドメインを持つ環境では、 第三者による攻撃
+(man\-in\-the\-middle attack) と ルート DNS サーバへの不必要なトラフィックを避けるために、 以下の \fBoptions
+ndots:\fP\fIn\fP を読んでほしい。 このプロセスは遅く、リストされたドメインがローカルのものでない場合、
+多大なネットワークトラフィックを発生させることに注意すること。 さらに、これらのドメインのいずれかひとつにでも適切なサーバがない場合、
+問い合わせがタイムアウトになる点にも注意すること。
+.IP
+現状では、検索リストは 6 ドメイン・計 256 文字に制限されている。
+.TP 
+\fBsortlist\fP
+このオプションを使うと、 \fBgethostbyname\fP(3)  で返されるアドレスをソートさせることができる。 sortlist は IP
+アドレスとネットマスクのペアで指定される。 ネットマスクは省略可能であり、 デフォルトではネットに対するデフォルトのネットマスクである。 IP
+アドレスとオプションのネットマスクのペアはスラッシュで区切る。 最大 10 組のペアを指定できる。 以下に例を示す。
+
+.in +4n
+sortlist 130.155.160.0/255.255.240.0 130.155.0.0
+.in
+.br
+.TP 
+\fBoptions\fP
+options により、レゾルバの内部変数を変更することができる。 書式は以下の通りである。
+.RS
+.IP
+\fBoptions\fP \fIoption\fP \fI...\fP
+.LP
+ここで \fIoption\fP は次のうちのいずれかである。
+.TP 
+\fBdebug\fP
+.\" Since glibc 2.2?
+\fI_res.options\fP に \fBRES_DEBUG\fP を設定する。
+.TP 
+\fBndots:\fP\fIn\fP
+.\" Since glibc 2.2
+「\fI最初の完全な名前での問い合わせ\fPが実行される前に、 \fBres_query\fP(3)  (\fBresolver\fP(3)  を参照)
+に与えられる名前に含まれているべきドットの数の閾値」を設定する。 \fIn\fP のデフォルトは 1 である。
+これは、名前にドットがある場合、\fIsearch list\fP の要素が付加される前に、
+その名前が完全な名前として最初に試されるということを意味している。 このオプションの値の上限は 15 であり、黙ってこの値まで切り詰められる。
+.TP 
+\fBtimeout:\fP\fIn\fP
+.\" Since glibc 2.2
+「レゾルバが他のネームサーバで問い合わせをリトライする前に、 リモートネームサーバからの応答を待つ時間」を設定する。 単位は秒で、デフォルトは
+\fBRES_TIMEOUT\fP である (現状では 5 秒、\fI<resolv.h>\fP を参照)。 このオプションの値の上限は 30
+であり、黙ってこの値まで切り詰められる。
+.TP 
+\fBattempts:\fP\fIn\fP
+「レゾルバが諦めて呼び出し元のアプリケーションにエラーを返すまでに、 ネームサーバに問い合わせを行う回数」を設定する。 デフォルトは
+\fBRES_DFLRETRY\fP 回である (現状では 2 回、\fI<resolv.h>\fP を参照)。 このオプションの値の上限は 5
+であり、黙ってこの値まで切り詰められる。
+.TP 
+\fBrotate\fP
+.\" Since glibc 2.2
+\fI_res.options\fP に RES_ROTATE を設定する。 リストされているネームサーバから選ぶときに、 ラウンドロビン (round
+robin) 選択を行わせる。 リストされている全てのサーバで問い合わせの負荷を分散する効果があり、 最初にリストされたサーバに全てのクライアントが
+毎回最初に問い合わせを行うわけではなくなる。
+.TP 
+\fBno\-check\-names\fP
+.\" since glibc 2.2
+\fI_res.options\fP に \fBRES_NOCHECKNAME\fP を設定する。 入ってくるホスト名とメールアドレスに、 アンダースコア
+(_)・ASCII 以外の文字・制御文字といった 不正な文字が含まれていないかを調べる 最近の BIND のチェックを無効にする。
+.TP 
+\fBinet6\fP
+.\" Since glibc 2.2
+\fI_res.options\fP に \fBRES_USE_INET6\fP を設定する。このオプションが設定されると、 \fBgethostbyname\fP(3)
+関数の内部で A レコードの問い合わせを行う前に AAAA レコードの問い合わせを行うようになる。 また、AAAA レコードは見つからないが A
+レコードセットが存在する場合に、 IPv4 の応答を IPv6「トンネル形式」にマップするようになる。
+.TP 
+\fBip6\-bytestring\fP (glibc 2.3.4 以降)
+\fI_res.options\fP に \fBRES_USE_BSTRING\fP を設定する。このオプションが設定されると、IPv6 アドレスの逆引きで
+RFC\ 2673 で規定された bit\-label 形式が使用されるようになる。 このオプションが設定されない場合、nibble 形式が使用される。
+.TP 
+\fBip6\-dotint\fP/\fBno\-ip6\-dotint\fP (glibc 2.3.4 以降)
+\fI_res.options\fP への \fBRES_NOIP6DOTINT\fP のセット/クリアを行う。 このオプションがクリアされると
+(\fBip6\-dotint\fP)、 IPv6 アドレスの逆引きが (非推奨の)  \fIip6.int\fP ゾーンで行われるようになり、
+このオプションがセットされると (\fBno\-ip6\-dotint\fP)、 IPv6 アドレスの逆引きがデフォルトの \fIip6.arpa\fP
+ゾーンで行われるようになる。 このオプションはデフォルトでセットされる。
+.TP 
+\fBedns0\fP (glibc 2.6 以降)
+\fI_res.options\fP に \fBRES_USE_EDNSO\fP をセットする。これにより、RFC\ 2671 で規定されている DNS
+拡張のサポートが有効になる。
+.RE
+.LP
+\fIdomain\fP と \fIsearch\fP キーワードは、互いに排他的である。 これらのキーワードが 2 つ以上記述されている場合、
+最後に記述されているものが有効になる。
+.LP
+システムの \fIresolv.conf\fP ファイルにある \fIsearch\fP キーワードは、 スペースで区切った検索ドメインのリストを 環境変数
+\fBLOCALDOMAIN\fP に設定することにより、各プロセス毎に上書きすることができる。
+.LP
+システムの \fIresolv.conf\fP ファイルにある \fIoptions\fP キーワードは、 上の \fBoptions\fP セクションで説明したように、
+スペースで区切ったレゾルバオプションのリストを 環境変数 \fBRES_OPTIONS\fP に設定することにより、各プロセス毎に修正することができる。
+.LP
+キーワードと値は同じ行に書かなければならない。 また、(\fBnameserver\fP のような) キーワードが行の先頭になければならない。
+値はキーワードの後にスペースで区切って続ける。
+
+セミコロン (;) かハッシュ文字 (#) で始まる行はコメントとして扱われる。
+.SH ファイル
+\fI/etc/resolv.conf\fP, \fI<resolv.h>\fP
+.SH 関連項目
+\fBgethostbyname\fP(3), \fBresolver\fP(3), \fBhostname\fP(7), \fBnamed\fP(8)
+.br
+BIND のネームサーバオペレーションガイド
diff --git a/draft/man5/tzfile.5 b/draft/man5/tzfile.5
new file mode 100644 (file)
index 0000000..892c5bc
--- /dev/null
@@ -0,0 +1,102 @@
+.\" @(#)tzfile.5       7.11
+.\" This file is in the public domain, so clarified as of
+.\" 1996-06-05 by Arthur David Olson <arthur_david_olson@nih.gov>.
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH TZFILE 5 2010\-08\-31 "" "Linux Programmer's Manual"
+.SH 名前
+tzfile \- タイムゾーンの情報
+.SH 書式
+\fB#include <tzfile.h>\fP
+.SH 説明
+\fBtzset\fP(3) によって用いられるタイムゾーン情報ファイルは、
+タイムゾーン情報ファイルであることを識別するための magic 文字列 "TZif" で始まり、
+ファイルフォーマットのバージョンを示す文字 (2005 年時点では
+ASCII NUL (\(aq\e0\(aq) か \(aq2\(aq のいずれか)、
+将来のための 15 バイトの予約領域 (値は 0) が続き、
+\fIlong\fP 型の 4 バイトの値が 6 個続く。
+この値は「標準」バイトオーダー (高位バイトが先に書かれる) で記述される。
+これらの値は、順に以下のようなものである。
+.TP 
+\fItzh_ttisgmtcnt\fP
+ファイルに記述されている UTC/local インジケータ (indicator) の個数。
+.TP 
+\fItzh_ttisstdcnt\fP
+ファイルに記述されている standard/wall インジケータの個数。
+.TP 
+\fItzh_leapcnt\fP
+ファイルに記述されている閏秒データの個数。
+.TP 
+\fItzh_timecnt\fP
+ファイルに記述されている「遷移時間 (transition time)」データの個数。
+.TP 
+\fItzh_typecnt\fP
+ファイルに記述されている「ローカル時間種別 (local time types)」データの個数
+(0 であってはいけない)。
+.TP 
+\fItzh_charcnt\fP
+ファイルに記述されている「タイムゾーン略式文字列 (timezone abbreviation string)」の個数。
+.PP
+上記のヘッダに続いて、4 バイトの \fIlong\fP 型の値が \fItzh_timecnt\fP 個続く。
+これらは昇順で格納される。それぞれの値は「標準」バイトオーダーで記述されている。
+それぞれは遷移時間 (\fBtime\fP(2) が返す値) として用いられ、
+遷移時間に応じてローカル時間の計算ルールが変化する。
+次に、\fIunsigned char\fP 型の 1 バイトの値が \fItzh_timecnt\fP 個続く。
+この値は、それぞれの遷移時間に、ファイル中に記載されている「ローカル時間」種別
+のどれが関連づけられているかを示す。
+これらの値は、(ファイル中でこの情報のすぐ後ろに置かれている) \fIttinifo\fP 構造体
+の配列 (要素数は \fItzh_typecnt\fP) に対するインデックスとして機能する。
+この構造体は以下のように定義されている:
+.in +4n
+.sp
+.nf
+struct ttinfo {
+    long         tt_gmtoff;
+    int          tt_isdst;
+    unsigned int tt_abbrind;
+};
+.in
+.fi
+.sp
+それぞれの構造体は、 4 バイトの \fIlong\fP 型の値 \fItt_gmtoff\fP、 1 バイトの値 \fItt_isdst\fP, 1 バイトの値
+\fItt_abbrind\fP から構成される。 それぞれの構造体において、 \fItt_gmtoff\fP は UTC に加えるべき秒数を与え、
+\fItt_isdst\fP は \fItm_isdst\fP を \fBlocaltime\fP(3)  にセットすべきかどうかを示し、 \fItt_abbrind\fP
+はファイル中で \fIttinfo\fP 構造体 (配列) のあとに置かれる タイムゾーン略式文字列の配列に対するインデックスである。
+.PP
+次には 4 バイト値のペアが \fItzh_leapcnt\fP 個続く。
+標準バイトオーダーで記述される。
+各ペアの最初の値は ( \fItime\fP(2) の返す形式で) 閏秒が起きる時刻を指定し、
+二番目の値はその時刻に加えるべき閏秒数の\fI全\fP秒数を指定する。
+これらのペアは時刻の古い順に記述する。
+.PP
+次には standard/wall インジケータが \fItzh_ttisstdcnt\fP 個置かれる。
+standard/wall インジケータはそれぞれ 1 バイトの値として格納される。
+これらは、ローカル時間種別に関連付けられた遷移時間が、標準時刻 (standard time)
+と壁時計時刻 (wall clock time) のどちらで指定されているかを示す。
+また、この値は、 POSIX 形式のタイムゾーン環境変数の処理において
+タイムゾーンファイルが使われる際にも利用される。
+.PP
+最後に UTC/local インジケータが \fItzh_ttisgmtcnt\fP 個置かれる。
+UTC/local インジケータはそれぞれ 1 バイトの値として格納される。
+これらは、ローカル時間種別に関連付けられた遷移時間が UTC とローカル時刻の
+どちらで指定されているかを示す。
+また、この値は、 POSIX 形式のタイムゾーン環境変数の処理において
+タイムゾーンファイルが使われる際にも利用される。
+.PP
+\fBlocaltime\fP(3) は、 \fItzh_timeout\fP が 0 であるか time 引数がファイルに記録され
+ていた最初の遷移時刻 よりも小さい場合には、 ファイルに最初に現れる標準時刻の
+\fIttinfo\fP 構造体を使う (または標準時刻の構造体がない場合は、単に最初の
+\fIttinfo\fP 構造体を使う)。
+.PP
+バージョン 2 形式のタイムゾーンファイルでは、上記のヘッダとデータの後に、
+第 2 のヘッダとデータが続く。形式は上記のヘッダとデータと同じで、
+遷移時間や閏秒の時刻に 8 バイトが使用される点だけが異なる。
+第 2 のヘッダとデータの後ろには改行で囲まれた POSIX の TZ 環境変数形式
+の文字列が置かれ、この文字列はファイル内の最後の遷移時間の後で時刻を
+処理する際に使用される
+(このような POSIX 表現が置かれない場合、改行の間には何も置かれない)。
+.SH 関連項目
+\fBctime\fP(3)
index 4fd8eee..e679d7a 100644 (file)
-'\" t
+.\" t
 .\" This man page is Copyright (C) 1999 Matthew Wilcox <willy@bofh.ai>.
 .\" Permission is granted to distribute possibly modified copies
 .\" of this page provided the header is included verbatim,
 .\" and in case of nontrivial modification author and date
 .\" of the modification is added to the header.
 .\" Modified June 1999 Andi Kleen
-.\" $Id: arp.7,v 1.9 2001/03/12 08:45:27 nakano Exp $
+.\" $Id: arp.7,v 1.10 2000/04/27 19:31:38 ak Exp $
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 1999-2001 NAKANO Takeo all rights reserved.
-.\" Translated 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated & Modified 2001-02-16, NAKANO Takeo
-.\" Updated 2008-12-26, Akihiro MOTOKI, LDP v3.14
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\"WORD                permanent               保存
-.\"WORD                neighbor cache entry    近傍キャッシュエントリ
-.\"WORD                stale                   古くなった
-.\"WORD                proxy arp               代理 arp
-.\"WORD                garbage collect (-or)   ガベージ・コレクト(コレクタ)
-.\"WORD                capability              権限
-.\"WORD                neighbor soliciation message    近傍要請メッセージ
-.\"WORD                network flooding        ネットワーク・フラッディング
-.\"WORD                thrashing               スラッシング
-.\"WORD                connection oriented     接続指向
-.\"WORD                forward progress        フォワードプログレス
-.\"
-.TH ARP 7 2008-11-25 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O arp \- Linux ARP kernel module.
+.\"*******************************************************************
+.TH ARP 7 2008\-11\-25 Linux "Linux Programmer's Manual"
 .SH 名前
 arp \- Linux ARP カーネルモジュール
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O This kernel protocol module implements the Address Resolution
-.\"O Protocol defined in RFC\ 826.
-.\"O It is used to convert between Layer2 hardware addresses
-.\"O and IPv4 protocol addresses on directly connected networks.
-.\"O The user normally doesn't interact directly with this module except to
-.\"O configure it;
-.\"O instead it provides a service for other protocols in the kernel.
-このカーネルプロトコルモジュールは、
-RFC\ 826 で定義されている Address Resolution Protocol を
-実装したものである。 ARP は、ダイレクトに接続されたネットワーク上で、
-第 2 層のハードウェアアドレスをIPv4 プロトコルアドレスに
-変換するために用いられる。ユーザーは設定の場合を除いて
-通常直接このモジュールに関ることはない。
+このカーネルプロトコルモジュールは、 RFC\ 826 で定義されている Address Resolution Protocol を
+実装したものである。 ARP は、ダイレクトに接続されたネットワーク上で、 第 2 層のハードウェアアドレスをIPv4 プロトコルアドレスに
+変換するために用いられる。ユーザーは設定の場合を除いて 通常直接このモジュールに関ることはない。
 これはカーネル内部の他のプロトコルにサービスを提供するものである。
-.PP
-.\"O A user process can receive ARP packets by using
-.\"O .BR packet (7)
-.\"O sockets.
-.\"O There is also a mechanism for managing the ARP cache
-.\"O in user-space by using
-.\"O .BR netlink (7)
-.\"O sockets.
-.\"O The ARP table can also be controlled via
-.\"O .BR ioctl (2)
-.\"O on any
-.\"O .B AF_INET
-.\"O socket.
-ユーザープロセスは、
-.BR packet (7)
-ソケットを用いれば ARP パケットを受信することができる。
-ARP キャッシュをユーザー空間で管理することもできる。
-これには
-.BR netlink (7)
-を用いる。 ARP テーブルも制御可能で、これには任意の
-.B AF_INET
-ソケットに
-.BR ioctl (2)
-を用いる。
-.PP
-.\"O The ARP module maintains a cache of mappings between hardware addresses
-.\"O and protocol addresses.
-.\"O The cache has a limited size so old and less
-.\"O frequently used entries are garbage-collected.
-.\"O Entries which are marked
-.\"O as permanent are never deleted by the garbage-collector.
-.\"O The cache can
-.\"O be directly manipulated by the use of ioctls and its behavior can be
-.\"O tuned by the
-.\"O .I /proc
-.\"O interfaces described below.
-ARP モジュールはハードウェアアドレスからプロトコルアドレスへの
-マッピングのキャッシュを管理する。キャッシュの大きさには制限が
-あるので、古いエントリや利用されないエントリはガベージコレクト
-される。 permanent (保存) マークがつけられたエントリは、
-決してガベージコレクタによって消去されない。
-ioctl を用いればキャッシュを直接操作することもできる。
-また後述の
-.I /proc
+
+ユーザープロセスは、 \fBpacket\fP(7)  ソケットを用いれば ARP パケットを受信することができる。 ARP
+キャッシュをユーザー空間で管理することもできる。 これには \fBnetlink\fP(7)  を用いる。 ARP テーブルも制御可能で、これには任意の
+\fBAF_INET\fP ソケットに \fBioctl\fP(2)  を用いる。
+
+ARP モジュールはハードウェアアドレスからプロトコルアドレスへの マッピングのキャッシュを管理する。キャッシュの大きさには制限が
+あるので、古いエントリや利用されないエントリはガベージコレクト される。 permanent (保存) マークがつけられたエントリは、
+決してガベージコレクタによって消去されない。 ioctl を用いればキャッシュを直接操作することもできる。 また後述の \fI/proc\fP
 インタフェースによりキャッシュの振る舞いを調整できる。
-.PP
-.\"O When there is no positive feedback for an existing mapping after some
-.\"O time (see the
-.\"O .I /proc
-.\"O interfaces below), a neighbor cache entry is considered stale.
-.\"O Positive feedback can be gotten from a higher layer; for example from
-.\"O a successful TCP ACK.
-.\"O Other protocols can signal forward progress
-.\"O using the
-.\"O .B MSG_CONFIRM
-.\"O flag to
-.\"O .BR sendmsg (2).
-.\"O When there is no forward progress, ARP tries to reprobe.
-.\"O It first tries to ask a local arp daemon
-.\"O .B app_solicit
-.\"O times for an updated MAC address.
-.\"O If that fails and an old MAC address is known, an unicast probe is send
-.\"O .B ucast_solicit
-.\"O times.
-.\"O If that fails too, it will broadcast a new ARP
-.\"O request to the network.
-.\"O Requests are only sent when there is data queued
-.\"O for sending.
-存在しているマッピングに対して、
-正のフィードバックが一定時間ない (後述の
-.I /proc
-インタフェースを見よ) と、
-近傍キャッシュエントリ (neighbor cache entry) は
-古くなった (stale) とみなされる。
-正のフィードバックは高位のレイヤーからも取得できる
-(例えば TCP ACK が成功した場合など)。
-他のプロトコルは、
-.BR sendmsg (2)
-に
-.B MSG_CONFIRM
-フラグを用いることによって、
-フォワードプログレス (forward progress) をシグナルできる。
-フォワードプログレスがなければ、
-ARP は再びプローブを試みる。
-まずローカルな arp デーモンに問合わせを行い、
-更新された MAC アドレスを取得しようとする。
-このリクエストに
-.B app_solicit
-回失敗すると、古い MAC アドレスがわかっている場合は、
-unicast のプローブが
-.B ucaset_solicit
-回送られる。これにも失敗すると、新しい ARP リクエスト
-をネットワークにブロードキャストする。
+
+存在しているマッピングに対して、 正のフィードバックが一定時間ない (後述の \fI/proc\fP インタフェースを見よ) と、 近傍キャッシュエントリ
+(neighbor cache entry) は 古くなった (stale) とみなされる。 正のフィードバックは高位のレイヤーからも取得できる
+(例えば TCP ACK が成功した場合など)。 他のプロトコルは、 \fBsendmsg\fP(2)  に \fBMSG_CONFIRM\fP
+フラグを用いることによって、 フォワードプログレス (forward progress) をシグナルできる。 フォワードプログレスがなければ、 ARP
+は再びプローブを試みる。 まずローカルな arp デーモンに問合わせを行い、 更新された MAC アドレスを取得しようとする。 このリクエストに
+\fBapp_solicit\fP 回失敗すると、古い MAC アドレスがわかっている場合は、 unicast のプローブが
+\fBucaset_solicit\fP 回送られる。これにも失敗すると、新しい ARP リクエスト をネットワークにブロードキャストする。
 リクエストは、データが送信キューになければ送られない。
-.PP
-.\"O Linux will automatically add a nonpermanent proxy arp entry when it
-.\"O receives a request for an address it forwards to and proxy arp is
-.\"O enabled on the receiving interface.
-.\"O When there is a reject route for the target, no proxy arp entry is added.
-Linux は、あるアドレスへのリクエストを受信・フォワードし、
-受信したインターフェースで代理 arp が有効になっている場合には、
-自動的にそのアドレスを nonpermanent な代理 arp エントリに追加する。
-そのターゲットに reject route があった場合には、
+
+Linux は、あるアドレスへのリクエストを受信・フォワードし、 受信したインターフェースで代理 arp が有効になっている場合には、
+自動的にそのアドレスを nonpermanent な代理 arp エントリに追加する。 そのターゲットに reject route があった場合には、
 代理 arp エントリは一切追加されない。
-.\"O .SS Ioctls
 .SS ioctl
-.\"O Three ioctls are available on all
-.\"O .B AF_INET
-.\"O sockets.
-.\"O They take a pointer to a
-.\"O .I struct arpreq
-.\"O as their argument.
-すべての
-.B AF_INET
-ソケットでは、 3 つの ioctl が使用できる。
-これらは
-.I struct arpreq
+すべての \fBAF_INET\fP ソケットでは、 3 つの ioctl が使用できる。 これらは \fIstruct arpreq\fP
 へのポインタを引数に取る。
 
 .in +4n
@@ -176,51 +57,18 @@ struct arpreq {
 .fi
 .in
 
-.\"O .BR SIOCSARP ", " SIOCDARP " and " SIOCGARP
-.\"O respectively set, delete and get an ARP mapping.
-.\"O Setting and deleting ARP maps are privileged operations and may
-.\"O only be performed by a process with the
-.\"O .B CAP_NET_ADMIN
-.\"O capability or an effective UID of 0.
-.BR SIOCSARP ", " SIOCDARP ", " SIOCGARP
-は、それぞれ ARP マッピングを設定・削除・取得する。
-ARP マップの設定と削除は特権が必要な操作であり、
-.B CAP_NET_ADMIN
-権限を持つプロセスか、実行ユーザー ID が 0 のプロセス
+\fBSIOCSARP\fP, \fBSIOCDARP\fP, \fBSIOCGARP\fP は、それぞれ ARP マッピングを設定・削除・取得する。 ARP
+マップの設定と削除は特権が必要な操作であり、 \fBCAP_NET_ADMIN\fP 権限を持つプロセスか、実行ユーザー ID が 0 のプロセス
 でなければ実行できない。
-.PP
-.\"O .I arp_pa
-.\"O must be an
-.\"O .B AF_INET
-.\"O address and
-.\"O .I arp_ha
-.\"O must have the same type as the device which is specified in
-.\"O .IR arp_dev .
-.\"O .I arp_dev
-.\"O is a zero-terminated string which names a device.
-.I arp_pa
-は
-.B AF_INET
-アドレスでなければならず、
-.I arp_ha
-は
-.I arp_dev
-で設定されたデバイスと同じタイプでなければならない。
-.I arp_dev
-はデバイスの名前を示す、ゼロで終端された文字列である。
+
+\fIarp_pa\fP は \fBAF_INET\fP アドレスでなければならず、 \fIarp_ha\fP は \fIarp_dev\fP
+で設定されたデバイスと同じタイプでなければならない。 \fIarp_dev\fP はデバイスの名前を示す、ゼロで終端された文字列である。
 .RS
 .TS
 tab(:) allbox;
 c s
 l l.
-\fIarp_flags\fR
-.\"O flag:meaning
-.\"O ATF_COM:Lookup complete
-.\"O ATF_PERM:Permanent entry
-.\"O ATF_PUBL:Publish entry
-.\"O ATF_USETRAILERS:Trailers requested
-.\"O ATF_NETMASK:Use a netmask
-.\"O ATF_DONTPUB:Don't answer
+\fIarp_flags\fP
 フラグ:意味
 ATF_COM:参照完了
 ATF_PERM:エントリを peramanent にする
@@ -232,330 +80,122 @@ ATF_DONTPUB:回答しない
 .RE
 
 .PP
-.\"O If the
-.\"O .B ATF_NETMASK
-.\"O flag is set, then
-.\"O .I arp_netmask
-.\"O should be valid.
-.\"O Linux 2.2 does not support proxy network ARP entries, so this
-.\"O should be set to 0xffffffff, or 0 to remove an existing proxy arp entry.
-.\"O .B ATF_USETRAILERS
-.\"O is obsolete and should not be used.
-.B ATF_NETMASK
-フラグがセットされているときには、
-.I arp_netmask
-が有効でなければならない。
-Linux 2.2 は代理ネットワーク ARP エントリをサポートしていないので、
-これは 0xffffffff にセットしておくか、あるいは
-現存の代理 arp エントリを削除したい場合には 0 にしておく必要がある。
-.B ATF_USETRAILERS
-は obsolete なので、用いるべきでない。
-.\"O .SS /proc interfaces
-.SS /proc インタフェース
-.\"O ARP supports a range of
-.\"O .I /proc
-.\"O interfaces to configure parameters on a global or per-interface basis.
-.\"O The interfaces can be accessed by reading or writing the
-.\"O .I /proc/sys/net/ipv4/neigh/*/*
-.\"O files.
-.\"O Each interface in the system has its own directory in
-.\"O .IR /proc/sys/net/ipv4/neigh/ .
-.\"O The setting in the "default" directory is used for all newly created
-.\"O devices.
-.\"O Unless otherwise specified, time-related sysctls are specified
-.\"O in seconds.
-ARP では、グローバルなパラメータやインターフェースごとのパラメータを
-.I /proc
-インタフェースを通して設定することができる。
-これらのインタフェースには、
-.I proc/sys/net/ipv4/neigh/*/*
-ファイルの読み書きによりアクセスできる。
-システムにあるそれぞれのインターフェースには、
-それぞれ対応するディレクトリが
-.I /proc/sys/net/ipv4/neigh/
-以下にある。
-"default" ディレクトリに対して設定をすると、
-それ以降生成されるデバイス全てに対してその設定が用いられる。
-特に指定がなければ、時間に関る sysctl の単位は秒である。
-.TP
-.\"O .IR anycast_delay " (since Linux 2.2)"
-.IR anycast_delay " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O The maximum number of jiffies to delay before replying to a
-.\"O IPv6 neighbor solicitation message.
-.\"O Anycast support is not yet implemented.
-.\"O Defaults to 1 second.
-IPv6 の近傍要請メッセージ (neighbor soliciation message)
-に応答するまでの最大遅延時間 (jiffy 単位)。
-anycast のサポートはまだ実装されていない。
-デフォルトは 1 秒。
-.TP
-.\"O .IR app_solicit " (since Linux 2.2)"
-.IR app_solicit " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O The maximum number of probes to send to the user space ARP daemon via
-.\"O netlink before dropping back to multicast probes (see
-.\"O .IR mcast_solicit ).
-.\"O Defaults to 0.
-ユーザー空間の ARP デーモンに netlink を用いて探索させる最大回数。
-これを越えるとマルチキャストによる探索に移行する
-.RI ( mcast_solicit
-を見よ)。
-.TP
-.\"O .IR base_reachable_time " (since Linux 2.2)"
-.IR base_reachable_time " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O Once a neighbor has been found, the entry is considered to be valid
-.\"O for at least a random value between
-.\"O .IR base_reachable_time "/2 and 3*" base_reachable_time /2.
-.\"O An entry's validity will be extended if it receives positive feedback
-.\"O from higher level protocols.
-.\"O Defaults to 30 seconds.
-近傍のホストがみつかると、そのエントリは
-.IR base_reachable_time "/2 から 3*" base_reachable_time /2
-の間のランダムな値の時間、有効であるとみなされる。
-エントリの有効性は、高位のプロトコルからポジティブなフィードバックを
-受け取ると延長される。デフォルトは 30 秒。
-.\"O This file is now obsolete in favor of
-.\"O .IR base_reachable_time_ms .
-このファイルは現在は非推奨であり、代わりに
-.I base_reachable_time_ms
+\fBATF_NETMASK\fP フラグがセットされているときには、 \fIarp_netmask\fP が有効でなければならない。 Linux 2.2
+は代理ネットワーク ARP エントリをサポートしていないので、 これは 0xffffffff にセットしておくか、あるいは 現存の代理 arp
+エントリを削除したい場合には 0 にしておく必要がある。 \fBATF_USETRAILERS\fP は obsolete なので、用いるべきでない。
+.SS "/proc インタフェース"
+ARP では、グローバルなパラメータやインターフェースごとのパラメータを \fI/proc\fP インタフェースを通して設定することができる。
+これらのインタフェースには、 \fIproc/sys/net/ipv4/neigh/*/*\fP ファイルの読み書きによりアクセスできる。
+システムにあるそれぞれのインターフェースには、 それぞれ対応するディレクトリが \fI/proc/sys/net/ipv4/neigh/\fP 以下にある。
+"default" ディレクトリに対して設定をすると、 それ以降生成されるデバイス全てに対してその設定が用いられる。 特に指定がなければ、時間に関る
+sysctl の単位は秒である。
+.TP 
+\fIanycast_delay\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+IPv6 の近傍要請メッセージ (neighbor soliciation message)  に応答するまでの最大遅延時間 (jiffy 単位)。
+anycast のサポートはまだ実装されていない。 デフォルトは 1 秒。
+.TP 
+\fIapp_solicit\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ユーザー空間の ARP デーモンに netlink を用いて探索させる最大回数。 これを越えるとマルチキャストによる探索に移行する
+(\fImcast_solicit\fP を見よ)。
+.TP 
+\fIbase_reachable_time\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+近傍のホストがみつかると、そのエントリは \fIbase_reachable_time\fP/2 から 3*\fIbase_reachable_time\fP/2
+の間のランダムな値の時間、有効であるとみなされる。 エントリの有効性は、高位のプロトコルからポジティブなフィードバックを
+受け取ると延長される。デフォルトは 30 秒。 このファイルは現在は非推奨であり、代わりに \fIbase_reachable_time_ms\fP
 を使うこと。
-.TP
-.\"O .IR base_reachable_time_ms " (since Linux 2.6.12)"
-.IR base_reachable_time_ms " (Linux 2.6.12 以降)"
-.\"O As for
-.\"O .IR base_reachable_time ,
-.\"O but measures time in milliseconds.
-.\"O Defaults to 30000 milliseconds.
-.I base_reachable_time
-と同じだが、時間をミリ秒単位で測る。
-デフォルトは 30000 ミリ秒である。
-.TP
-.\"O .IR delay_first_probe_time " (since Linux 2.2)"
-.IR delay_first_probe_time " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O Delay before first probe after it has been decided that a neighbor
-.\"O is stale.
-.\"O Defaults to 5 seconds.
-近傍ホストのエントリが古くなったと判断された後に
-最初に探索を行うまでの遅延時間。デフォルトは 5 秒。
-.TP
-.\"O .IR gc_interval " (since Linux 2.2)"
-.IR gc_interval " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O How frequently the garbage collector for neighbor entries
-.\"O should attempt to run.
-.\"O Defaults to 30 seconds.
-ガベージ・コレクタを近傍ホストエントリに対して実行させる頻度。
-デフォルトは 30 秒。
-.TP
-.\"O .IR gc_stale_time " (since Linux 2.2)"
-.IR gc_stale_time " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O Determines how often to check for stale neighbor entries.
-.\"O When a neighbor entry is considered stale, it is resolved again before
-.\"O sending data to it.
-.\"O Defaults to 60 seconds.
-古くなった近傍ホストエントリに対してチェックを行う頻度。
-近傍ホストエントリが古くなったとみなされると、そのエントリに
-データを送る前には再度解決が行われる。
-デフォルトは 60 秒。
-.TP
-.\"O .IR gc_thresh1 " (since Linux 2.2)"
-.IR gc_thresh1 " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O The minimum number of entries to keep in the ARP cache.
-.\"O The garbage collector will not run if there are fewer than
-.\"O this number of entries in the cache.
-.\"O Defaults to 128.
-ARP キャッシュに保存するエントリ数の最小値。
-この数より少ないエントリしかキャッシュになければ、
-ガベージ・コレクタは実行されない。
-デフォルトは 128。
-.TP
-.\"O .IR gc_thresh2 " (since Linux 2.2)"
-.IR gc_thresh2 " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O The soft maximum number of entries to keep in the ARP cache.
-.\"O The garbage collector will allow the number of entries to exceed
-.\"O this for 5 seconds before collection will be performed.
-.\"O Defaults to 512.
-ARP キャッシュに保存されるエントリ数のソフトな最大値。
-キャッシュのエントリがこの数を 5 秒間越えつづけると、
-ガベージ・コレクタが実行される。
+.TP 
+\fIbase_reachable_time_ms\fP (Linux 2.6.12 以降)
+\fIbase_reachable_time\fP と同じだが、時間をミリ秒単位で測る。 デフォルトは 30000 ミリ秒である。
+.TP 
+\fIdelay_first_probe_time\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+近傍ホストのエントリが古くなったと判断された後に 最初に探索を行うまでの遅延時間。デフォルトは 5 秒。
+.TP 
+\fIgc_interval\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ガベージ・コレクタを近傍ホストエントリに対して実行させる頻度。 デフォルトは 30 秒。
+.TP 
+\fIgc_stale_time\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+古くなった近傍ホストエントリに対してチェックを行う頻度。 近傍ホストエントリが古くなったとみなされると、そのエントリに
+データを送る前には再度解決が行われる。 デフォルトは 60 秒。
+.TP 
+\fIgc_thresh1\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ARP キャッシュに保存するエントリ数の最小値。 この数より少ないエントリしかキャッシュになければ、 ガベージ・コレクタは実行されない。 デフォルトは
+128。
+.TP 
+\fIgc_thresh2\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ARP キャッシュに保存されるエントリ数のソフトな最大値。 キャッシュのエントリがこの数を 5 秒間越えつづけると、 ガベージ・コレクタが実行される。
 デフォルトは 512。
-.TP
-.\"O .IR gc_thresh3 " (since Linux 2.2)"
-.IR gc_thresh3 " (Linux 2.2 以降)"
+.TP 
+\fIgc_thresh3\fP (Linux 2.2 以降)
 .\" Precisely: 2.1.79
-.\"O The hard maximum number of entries to keep in the ARP cache.
-.\"O The garbage collector will always run if there are more than
-.\"O this number of entries in the cache.
-.\"O Defaults to 1024.
-ARP キャッシュに保存されるエントリ数のハードな最大値。
-キャッシュのエントリがこの数を越えると、
-ガベージ・コレクタはただちに実行される。
+ARP キャッシュに保存されるエントリ数のハードな最大値。 キャッシュのエントリがこの数を越えると、 ガベージ・コレクタはただちに実行される。
 デフォルトは 1024。
-.TP
-.\"O .IR locktime " (since Linux 2.2)"
-.IR locktime " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O The minimum number of jiffies to keep an ARP entry in the cache.
-.\"O This prevents ARP cache thrashing if there is more than one potential
-.\"O mapping (generally due to network misconfiguration).
-.\"O Defaults to 1 second.
-ARP エントリをキャッシュに保存する時間の最小値 (jiffy 単位)。
-可能性のあるマッピングが一つ以上ある (たいていはネットワーク設定のミス)
-場合に、 ARP キャッシュのスラッシングが起きることを防ぐ。
-デフォルトは 1 秒。
-.TP
-.\"O .IR mcast_solicit " (since Linux 2.2)"
-.IR mcast_solicit " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O The maximum number of attempts to resolve an address by
-.\"O multicast/broadcast  before marking the entry as unreachable.
-.\"O Defaults to 3.
-エントリを unreachable マークする前に、
-アドレスをマルチキャスト/ブロードキャストで解決しようとする
-試行回数の最大値。
-デフォルトは 3。
-.TP
-.\"O .IR proxy_delay " (since Linux 2.2)"
-.IR proxy_delay " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O When an ARP request for a known proxy-ARP address is received, delay up to
-.\"O .I proxy_delay
-.\"O jiffies before replying.
-.\"O This is used to prevent network flooding in some cases.
-.\"O Defaults to 0.8 seconds.
-既知の代理 ARP アドレスに対して ARP リクエストを受信した場合に、
-応答前に最大
-.I proxy_delay
-jiffy まで遅延する。これは場合によって生じる
-ネットワーク・フラッディング (network flooding) を避けるために用いる。
-デフォルトは 0.8 秒。
-.TP
-.\"O .IR proxy_qlen " (since Linux 2.2)"
-.IR proxy_qlen " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O The maximum number of packets which may be queued to proxy-ARP addresses.
-.\"O Defaults to 64.
-代理 ARP アドレスに対してキューイングできる最大のパケット数。
-デフォルトは 64。
-.TP
-.\"O .IR retrans_time " (since Linux 2.2)"
-.IR retrans_time " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O The number of jiffies to delay before retransmitting a request.
-.\"O Defaults to 1 second.
-.\"O This file is now obsolete in favor of
-.\"O .IR retrans_time_ms .
-リクエストを再度送るまでの遅延時間 (jiffy 単位)。
-デフォルトは 1 秒。
-このファイルは現在は非推奨であり、代わりに
-.I retrans_time_ms
-を使うこと。
-.TP
-.\"O .IR retrans_time_ms " (since Linux 2.6.12)"
-.IR retrans_time_ms " (Linux 2.6.12 以降)"
-.\"O The number of milliseconds to delay before retransmitting a request.
-.\"O Defaults to 1000 milliseconds.
-リクエストを再度送るまでの遅延時間 (ミリ秒単位)。
-デフォルトは 1000 ミリ秒。
-.TP
-.\"O .IR ucast_solicit " (since Linux 2.2)"
-.IR ucast_solicit " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O The maximum number of attempts to send unicast probes before asking
-.\"O the ARP daemon (see
-.\"O .IR app_solicit ).
-.\"O Defaults to 3.
-ARP デーモンへの問い合わせを行う前に行う unicast 探索の最大試行数
-.RI ( app_solicit
-を見よ)。デフォルトは 3。
-.TP
-.\"O .IR unres_qlen " (since Linux 2.2)"
-.IR unres_qlen " (Linux 2.2 以降)"
-.\" Precisely: 2.1.79
-.\"O The maximum number of packets which may be queued for each unresolved
-.\"O address by other network layers.
-.\"O Defaults to 3.
-解決されていないアドレスに対して、
-他のネットワーク層からキューイングできる最大パケット数。
-デフォルトは 3。
-.\"O .SH VERSIONS
+.TP 
+\fIlocktime\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ARP エントリをキャッシュに保存する時間の最小値 (jiffy 単位)。 可能性のあるマッピングが一つ以上ある (たいていはネットワーク設定のミス)
+場合に、 ARP キャッシュのスラッシングが起きることを防ぐ。 デフォルトは 1 秒。
+.TP 
+\fImcast_solicit\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+エントリを unreachable マークする前に、 アドレスをマルチキャスト/ブロードキャストで解決しようとする 試行回数の最大値。 デフォルトは
+3。
+.TP 
+\fIproxy_delay\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+既知の代理 ARP アドレスに対して ARP リクエストを受信した場合に、 応答前に最大 \fIproxy_delay\fP jiffy
+まで遅延する。これは場合によって生じる ネットワーク・フラッディング (network flooding) を避けるために用いる。 デフォルトは 0.8
+秒。
+.TP 
+\fIproxy_qlen\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+代理 ARP アドレスに対してキューイングできる最大のパケット数。 デフォルトは 64。
+.TP 
+\fIretrans_time\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+リクエストを再度送るまでの遅延時間 (jiffy 単位)。 デフォルトは 1 秒。 このファイルは現在は非推奨であり、代わりに
+\fIretrans_time_ms\fP を使うこと。
+.TP 
+\fIretrans_time_ms\fP (Linux 2.6.12 以降)
+リクエストを再度送るまでの遅延時間 (ミリ秒単位)。 デフォルトは 1000 ミリ秒。
+.TP 
+\fIucast_solicit\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+ARP デーモンへの問い合わせを行う前に行う unicast 探索の最大試行数 (\fIapp_solicit\fP を見よ)。デフォルトは 3。
+.TP 
+\fIunres_qlen\fP (Linux 2.2 以降)
+.\" Precisely: 2.1.79
+解決されていないアドレスに対して、 他のネットワーク層からキューイングできる最大パケット数。 デフォルトは 3。
 .SH バージョン
-.\"O The
-.\"O .I struct arpreq
-.\"O changed in Linux 2.0 to include the
-.\"O .I arp_dev
-.\"O member and the ioctl numbers changed at the same time.
-.\"O Support for the old ioctls was dropped in Linux 2.2.
-Linux 2.0 で、
-.I struct arpreq
-に
-.I arp_dev
-メンバーが含まれるように変更があった。また同時に
-ioctl 番号も変更された。古い ioctl は
-Linux 2.2 で用いることができなくなった。
+Linux 2.0 で、 \fIstruct arpreq\fP に \fIarp_dev\fP メンバーが含まれるように変更があった。また同時に ioctl
+番号も変更された。古い ioctl は Linux 2.2 で用いることができなくなった。
 
-.\"O Support for proxy arp entries for networks (netmask not equal 0xffffffff)
-.\"O was dropped in Linux 2.2.
-.\"O It is replaced by automatic proxy arp setup by
-.\"O the kernel for all reachable hosts on other interfaces (when
-.\"O forwarding and proxy arp is enabled for the interface).
-ネットワークに対する代理 arp エントリ (netmask が 0xffffffff でない)
-は、 Linux 2.2 で用いることができなくなった。
-これはカーネルによって設定される、別のインターフェースにおける
-到達可能なすべてのホストに対する自動代理 arp によって置き換えられた
-(そのインターフェースでフォワーディングと代理 arp が有効になっている場合)。
+ネットワークに対する代理 arp エントリ (netmask が 0xffffffff でない)  は、 Linux 2.2
+で用いることができなくなった。 これはカーネルによって設定される、別のインターフェースにおける 到達可能なすべてのホストに対する自動代理 arp
+によって置き換えられた (そのインターフェースでフォワーディングと代理 arp が有効になっている場合)。
 
-.\"O The
-.\"O .I neigh/*
-.\"O interfaces did not exist before Linux 2.2.
-.I neigh/*
-の各インタフェースは Linux 2.2 以前には存在しない。
-.\"O .SH BUGS
+\fIneigh/*\fP の各インタフェースは Linux 2.2 以前には存在しない。
 .SH バグ
-.\"O Some timer settings are specified in jiffies, which is architecture-
-.\"O and kernel version-dependent; see
-.\"O .BR time (7).
-いくつかのタイマー設定は jiffy で指定されるが、
-jiffy はアーキテクチャやカーネルのバージョンに依存する。
-.BR time (7)
+いくつかのタイマー設定は jiffy で指定されるが、 jiffy はアーキテクチャやカーネルのバージョンに依存する。 \fBtime\fP(7)
 を参照のこと。
-.PP
-.\"O There is no way to signal positive feedback from user space.
-.\"O This means connection-oriented protocols implemented in user space
-.\"O will generate excessive ARP traffic, because ndisc will regularly
-.\"O reprobe the MAC address.
-.\"O The same problem applies for some kernel protocols (e.g., NFS over UDP).
-ユーザー空間からポジティブなフィードバックを送る方法が存在しない。
-つまり接続指向 (connection-oriented) のプロトコルをユーザー空間で
-実装すると、余計な ARP トラフィックの原因となる。
-なぜなら ndisc は定期的に MAC アドレスを再探索するからである。
-同様の問題はいくつかのカーネルプロトコル (NFS over UDP など) にも存在する。
-.PP
-.\"O This man page mashes IPv4 specific and shared between IPv4 and IPv6
-.\"O functionality together.
-この man ページでは IPv4 特有の機能と
-IPv4・IPv6 で共有される機能とがごっちゃになっている。
-.\"O .SH SEE ALSO
+
+ユーザー空間からポジティブなフィードバックを送る方法が存在しない。 つまり接続指向 (connection\-oriented)
+のプロトコルをユーザー空間で 実装すると、余計な ARP トラフィックの原因となる。 なぜなら ndisc は定期的に MAC
+アドレスを再探索するからである。 同様の問題はいくつかのカーネルプロトコル (NFS over UDP など) にも存在する。
+
+この man ページでは IPv4 特有の機能と IPv4・IPv6 で共有される機能とがごっちゃになっている。
 .SH 関連項目
-.BR capabilities (7),
-.BR ip (7)
+\fBcapabilities\fP(7), \fBip\fP(7)
 .PP
-.\"O RFC\ 826 for a description of ARP.
-.BR RFC\ 826 :
-ARP に関する説明
+\fBRFC\ 826\fP: ARP に関する説明
 .br
-.\"O RFC\ 2461 for a description of IPv6 neighbor discovery and the base
-.\"O algorithms used.
-.BR RFC\ 2461 :
-IPv6 neighbor discovery に関する説明と、
-利用されている基礎アルゴリズム
+\fBRFC\ 2461\fP: IPv6 neighbor discovery に関する説明と、 利用されている基礎アルゴリズム
 .LP
-.\"O Linux 2.2+ IPv4 ARP uses the IPv6 algorithms when applicable.
-Linux 2.2 以降の IPv4 ARP は、
-可能な場合は IPv6 のアルゴリズムを用いる。
+Linux 2.2 以降の IPv4 ARP は、 可能な場合は IPv6 のアルゴリズムを用いる。
diff --git a/draft/man7/capabilities.7 b/draft/man7/capabilities.7
deleted file mode 100644 (file)
index f935d2d..0000000
+++ /dev/null
@@ -1,1622 +0,0 @@
-.\" Copyright (c) 2002 by Michael Kerrisk <mtk.manpages@gmail.com>
-.\"
-.\" Permission is granted to make and distribute verbatim copies of this
-.\" manual provided the copyright notice and this permission notice are
-.\" preserved on all copies.
-.\"
-.\" Permission is granted to copy and distribute modified versions of this
-.\" manual under the conditions for verbatim copying, provided that the
-.\" entire resulting derived work is distributed under the terms of a
-.\" permission notice identical to this one.
-.\"
-.\" Since the Linux kernel and libraries are constantly changing, this
-.\" manual page may be incorrect or out-of-date.  The author(s) assume no
-.\" responsibility for errors or omissions, or for damages resulting from
-.\" the use of the information contained herein.  The author(s) may not
-.\" have taken the same level of care in the production of this manual,
-.\" which is licensed free of charge, as they might when working
-.\" professionally.
-.\"
-.\" Formatted or processed versions of this manual, if unaccompanied by
-.\" the source, must acknowledge the copyright and authors of this work.
-.\"
-.\" 6 Aug 2002 - Initial Creation
-.\" Modified 2003-05-23, Michael Kerrisk, <mtk.manpages@gmail.com>
-.\" Modified 2004-05-27, Michael Kerrisk, <mtk.manpages@gmail.com>
-.\" 2004-12-08, mtk Added O_NOATIME for CAP_FOWNER
-.\" 2005-08-16, mtk, Added CAP_AUDIT_CONTROL and CAP_AUDIT_WRITE
-.\" 2008-07-15, Serge Hallyn <serue@us.bbm.com>
-.\"     Document file capabilities, per-process capability
-.\"     bounding set, changed semantics for CAP_SETPCAP,
-.\"     and other changes in 2.6.2[45].
-.\"     Add CAP_MAC_ADMIN, CAP_MAC_OVERRIDE, CAP_SETFCAP.
-.\" 2008-07-15, mtk
-.\"     Add text describing circumstances in which CAP_SETPCAP
-.\"     (theoretically) permits a thread to change the
-.\"     capability sets of another thread.
-.\"     Add section describing rules for programmatically
-.\"     adjusting thread capability sets.
-.\"     Describe rationale for capability bounding set.
-.\"     Document "securebits" flags.
-.\"     Add text noting that if we set the effective flag for one file
-.\"     capability, then we must also set the effective flag for all
-.\"     other capabilities where the permitted or inheritable bit is set.
-.\"
-.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved.
-.\" Translated 2005-03-09, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" Updated 2005-11-04, Akihiro MOTOKI
-.\" Updated 2006-04-16, Akihiro MOTOKI, LDP v2.29
-.\" Updated 2006-07-20, Akihiro MOTOKI, LDP v2.34
-.\" Updated 2007-01-05, Akihiro MOTOKI, LDP v2.43
-.\" Updated 2008-12-24, Akihiro MOTOKI, LDP v3.15
-.\" Updated 2009-02-27, Akihiro MOTOKI, LDP v3.19
-.\" Updated 2010-04-11, Akihiro MOTOKI, LDP v3.24
-.\"
-.TH CAPABILITIES 7 2010-06-19 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.SH 名前
-.\"O capabilities \- overview of Linux capabilities
-capabilities \- Linux のケーパビリティ (capability) の概要
-.\"O .SH DESCRIPTION
-.SH 説明
-.\"O For the purpose of performing permission checks,
-.\"O traditional UNIX implementations distinguish two categories of processes:
-.\"O .I privileged
-.\"O processes (whose effective user ID is 0, referred to as superuser or root),
-.\"O and
-.\"O .I unprivileged
-.\"O processes (whose effective UID is nonzero).
-権限のチェックを行う観点から見ると、伝統的な UNIX の実装では
-プロセスは二つのカテゴリに分類できる:
-.I 特権
-プロセス (実効ユーザID が 0 のプロセス。ユーザID 0 は
-スーパーユーザや root と呼ばれる) と
-.I 非特権
-プロセス (実効ユーザID が 0 以外のプロセス) である。
-.\"O Privileged processes bypass all kernel permission checks,
-.\"O while unprivileged processes are subject to full permission
-.\"O checking based on the process's credentials
-.\"O (usually: effective UID, effective GID, and supplementary group list).
-非特権プロセスでは、プロセスの資格情報 (通常は、実効UID 、実効GID
-と追加のグループリスト) に基づく権限チェックが行われるのに対し、
-特権プロセスでは全てのカーネルの権限チェックがバイパスされる。
-
-.\"O Starting with kernel 2.2, Linux divides the privileges traditionally
-.\"O associated with superuser into distinct units, known as
-.\"O .IR capabilities ,
-.\"O which can be independently enabled and disabled.
-.\"O Capabilities are a per-thread attribute.
-バージョン 2.2 以降の Linux では、
-これまでスーパーユーザに結び付けられてきた権限を、
-いくつかのグループに分割している。これらのグループは
-.IR ケーパビリティ (capability)
-と呼ばれ、グループ毎に独立に有効、無効を設定できる。
-ケーパビリティはスレッド単位の属性である。
-.\"
-.\"O .SS Capabilities List
-.SS ケーパビリティのリスト
-.\"O The following list shows the capabilities implemented on Linux,
-.\"O and the operations or behaviors that each capability permits:
-以下のリストは、
-Linux で実装されているケーパビリティと
-各ケーパビリティが許可する操作と動作をまとめたものである。
-.TP
-.\"O .BR CAP_AUDIT_CONTROL " (since Linux 2.6.11)"
-.\"O Enable and disable kernel auditing; change auditing filter rules;
-.\"O retrieve auditing status and filtering rules.
-.BR CAP_AUDIT_CONTROL " (Linux 2.6.11 以降)"
-カーネル監査 (audit) の有効無効の切り替え、
-監査のフィルタ・ルールの変更、
-監査の状況やフィルタ・ルールの取得ができる。
-.TP
-.\"O .BR CAP_AUDIT_WRITE " (since Linux 2.6.11)"
-.BR CAP_AUDIT_WRITE " (Linux 2.6.11 以降)"
-.\"O Write records to kernel auditing log.
-カーネル監査のログにレコードを書き込む。
-.TP
-.B CAP_CHOWN
-.\"O Make arbitrary changes to file UIDs and GIDs (see
-.\"O .BR chown (2)).
-ファイルの UID とGID を任意に変更する
-.RB ( chown (2)
-参照)。
-.TP
-.B CAP_DAC_OVERRIDE
-.\"O Bypass file read, write, and execute permission checks.
-.\"O (DAC is an abbreviation of "discretionary access control".)
-ファイルの読み出し、書き込み、実行の権限チェックをバイパスする
-(DAC は "discretionary access control (任意のアクセス制御)" の略である)。
-.TP
-.B CAP_DAC_READ_SEARCH
-.\"O Bypass file read permission checks and
-.\"O directory read and execute permission checks.
-ファイルの読み出し権限のチェックとディレクトリの読み出しと実行
-の権限チェックをバイパスする。
-.TP
-.B CAP_FOWNER
-.PD 0
-.RS
-.IP * 2
-.\"O Bypass permission checks on operations that normally
-.\"O require the file system UID of the process to match the UID of
-.\"O the file (e.g.,
-.\"O .BR chmod (2),
-.\"O .BR utime (2)),
-.\"O excluding those operations covered by
-.\"O .B CAP_DAC_OVERRIDE
-.\"O and
-.\"O .BR CAP_DAC_READ_SEARCH ;
-通常、プロセスのファイルシステム UID がファイルの UID に一致することが
-要求される操作 (例えば
-.BR chmod (2),
-.BR utime (2))
-における権限チェックをバイパスする。
-但し、
-.B CAP_DAC_OVERRIDE
-か
-.B CAP_DAC_READ_SEARCH
-によりチェックが行われる操作は除く。
-.IP *
-.\"O set extended file attributes (see
-.\"O .BR chattr (1))
-.\"O on arbitrary files;
-任意のファイルに対して拡張ファイル属性を設定する
-.RB ( chattr (1)
-参照)。
-.IP *
-.\"O set Access Control Lists (ACLs) on arbitrary files;
-任意のファイルに対してアクセス制御リスト (ACL) を設定する。
-.IP *
-.\"O ignore directory sticky bit on file deletion;
-ファイルの削除の際にディレクトリのスティッキービットを無視する。
-.IP *
-.\"O specify
-.\"O .B O_NOATIME
-.\"O for arbitrary files in
-.\"O .BR open (2)
-.\"O and
-.\"O .BR fcntl (2).
-.BR open (2)
-や
-.BR fcntl (2)
-で任意のファイルに対して
-.B O_NOATIME
-を指定する。
-.RE
-.PD
-.TP
-.B CAP_FSETID
-.\"O Don't clear set-user-ID and set-group-ID permission
-.\"O bits when a file is modified;
-.\"O set the set-group-ID bit for a file whose GID does not match
-.\"O the file system or any of the supplementary GIDs of the calling process.
-ファイルが変更されたときに set-user-ID とset-group-ID の許可ビットをクリア
-しない。呼び出し元プロセスのファイルシステム GID と追加の GID のいずれとも
-GID が一致しないファイルに対して set-group-ID ビットを設定する。
-.TP
-.B CAP_IPC_LOCK
-.\"O Lock memory
-.\"O .RB ( mlock (2),
-.\"O .BR mlockall (2),
-.\"O .BR mmap (2),
-.\"O .BR shmctl (2)).
-メモリーのロック
-.RB ( mlock (2),
-.BR mlockall (2),
-.BR mmap (2),
-.BR shmctl (2))
-を行う。
-.TP
-.B CAP_IPC_OWNER
-.\"O Bypass permission checks for operations on System V IPC objects.
-System V IPC オブジェクトに対する操作に関して権限チェックをバイパスする。
-.TP
-.B CAP_KILL
-.\"O Bypass permission checks for sending signals (see
-.\"O .BR kill (2)).
-.\"O This includes use of the
-.\"O .BR ioctl (2)
-.\"O .B KDSIGACCEPT
-.\"O operation.
-シグナルを送信する際に権限チェックをバイパスする
-.RB ( kill (2)
-参照)。これには
-.BR ioctl (2)
-の
-.B KDSIGACCEPT
-操作の使用も含まれる。
-.\" FIXME CAP_KILL also has an effect for threads + setting child
-.\"       termination signal to other than SIGCHLD: without this
-.\"       capability, the termination signal reverts to SIGCHLD
-.\"       if the child does an exec().  What is the rationale
-.\"       for this?
-.TP
-.\"O .BR CAP_LEASE " (since Linux 2.4)"
-.BR CAP_LEASE " (Linux 2.4 以降)"
-.\"O Establish leases on arbitrary files (see
-.\"O .BR fcntl (2)).
-任意のファイルに対して
-ファイルリースを設定する
-.RB ( fcntl (2)
-参照)。
-.TP
-.B CAP_LINUX_IMMUTABLE
-.\"O Set the
-.\"O .B FS_APPEND_FL
-.\"O and
-.\"O .B FS_IMMUTABLE_FL
-.\"O .\" These attributes are now available on ext2, ext3, Reiserfs, XFS, JFS
-.\"O i-node flags (see
-.\"O .BR chattr (1)).
-拡張ファイル属性
-.B FS_APPEND_FL
-と
-.B FS_IMMUTABLE_FL
-を設定する
-.RB ( chattr (1)
-参照)。
-.\" これらの属性は ext2, ext3, Reiserfs, XFS, JFS で利用可能である。
-.TP
-.\"O .BR CAP_MAC_ADMIN " (since Linux 2.6.25)"
-.BR CAP_MAC_ADMIN " (Linux 2.6.25 以降)"
-.\"O Override Mandatory Access Control (MAC).
-.\"O Implemented for the Smack Linux Security Module (LSM).
-強制アクセス制御 (MAC) を上書きする。
-Smack Linux Security Module (LSM) 用に実装されている。
-.TP
-.\"O .BR CAP_MAC_OVERRIDE " (since Linux 2.6.25)"
-.BR CAP_MAC_OVERRIDE " (Linux 2.6.25 以降)"
-.\"O Allow MAC configuration or state changes.
-.\"O Implemented for the Smack LSM.
-MAC の設定や状態を変更する。
-Smack LSM 用に実装されている。
-.TP
-.\"O .BR CAP_MKNOD " (since Linux 2.4)"
-.BR CAP_MKNOD " (Linux 2.4 以降)"
-.\"O Create special files using
-.\"O .BR mknod (2).
-(Linux 2.4 以降)
-.BR mknod (2)
-を使用してスペシャル・ファイルを作成する。
-.TP
-.B CAP_NET_ADMIN
-.\"O Perform various network-related operations
-.\"O (e.g., setting privileged socket options,
-.\"O enabling multicasting, interface configuration,
-.\"O modifying routing tables).
-各種のネットワーク関連の操作を実行する。
-(例えば、特権が必要なソケットオプションを設定する、マルチキャストを有効にする、
-インターフェースを設定する、ルーティングテーブルを変更するなど)
-.TP
-.B CAP_NET_BIND_SERVICE
-.\"O Bind a socket to Internet domain privileged ports
-.\"O (port numbers less than 1024).
-インターネットドメインの特権ポート (ポート番号が 1024 番未満)
-をバインドできる。
-.TP
-.B CAP_NET_BROADCAST
-.\"O (Unused)  Make socket broadcasts, and listen to multicasts.
-(未使用) ソケットのブロードキャストと、マルチキャストの待ち受けを行う。
-.TP
-.B CAP_NET_RAW
-.\"O Use RAW and PACKET sockets.
-.\"O .\" Also various IP options and setsockopt(SO_BINDTODEVICE)
-RAW ソケットと PACKET ソケットを使用する。
-.\" また、各種の IP オプションと SO_BINDTODEVICE ソケットオプションを使用できる。
-.TP
-.B CAP_SETGID
-.\"O Make arbitrary manipulations of process GIDs and supplementary GID list;
-.\"O forge GID when passing socket credentials via UNIX domain sockets.
-プロセスの GID と追加の GID リストに対する任意の操作を行う。
-UNIX ドメインソケット経由でソケットの資格情報 (credential) を渡す際に
-偽の GID を渡すことができる。
-.TP
-.\"O .BR CAP_SETFCAP " (since Linux 2.6.24)"
-.BR CAP_SETFCAP " (Linux 2.6.24 以降)"
-.\"O Set file capabilities.
-ファイルケーパビリティを設定する。
-.TP
-.B CAP_SETPCAP
-.\"O If file capabilities are not supported:
-.\"O grant or remove any capability in the
-.\"O caller's permitted capability set to or from any other process.
-.\"O (This property of
-.\"O .B CAP_SETPCAP
-.\"O is not available when the kernel is configured to support
-.\"O file capabilities, since
-.\"O .B CAP_SETPCAP
-.\"O has entirely different semantics for such kernels.)
-ファイルケーパビリティがサポートされていない場合:
-呼び出し元が許可されているケーパビリティセットに含まれる任意のケーパビリティを、
-他のプロセスに付与したり、削除したりできる。
-(カーネルがファイルケーパビリティをサポートしている場合、
-.B CAP_SETPCAP
-はこの役割を持たない。
-なぜなら、ファイルケーパビリティをサポートしているカーネルでは
-.B CAP_SETPCAP
-は全く別の意味を持つからである。)
-
-.\"O If file capabilities are supported:
-.\"O add any capability from the calling thread's bounding set
-.\"O to its inheritable set;
-.\"O drop capabilities from the bounding set (via
-.\"O .BR prctl (2)
-.\"O .BR PR_CAPBSET_DROP );
-.\"O make changes to the
-.\"O .I securebits
-.\"O flags.
-ファイルケーパビリティがサポートされている場合:
-呼び出し元スレッドのバウンディングセットの任意のケーパビリティを
-自身の継承可能ケーパビリティセットに追加できる。
-.RB ( prctl (2)
-.BR PR_CAPBSET_DROP
-を使って)
-バウンディングセットからケーパビリティを削除できる。
-.I securebits
-フラグを変更できる。
-.TP
-.B CAP_SETUID
-.\"O Make arbitrary manipulations of process UIDs
-.\"O .RB ( setuid (2),
-.\"O .BR setreuid (2),
-.\"O .BR setresuid (2),
-.\"O .BR setfsuid (2));
-.\"O make forged UID when passing socket credentials via UNIX domain sockets.
-プロセスの UID に対する任意の操作
-.RB ( setuid (2),
-.BR setreuid (2),
-.BR setresuid (2),
-.BR setfsuid (2))
-を行う。
-UNIX ドメインソケット経由でソケットの資格情報 (credential) を渡す際に
-偽の UID を渡すことができる。
-.\" FIXME CAP_SETUID also an effect in exec(); document this.
-.TP
-.B CAP_SYS_ADMIN
-.PD 0
-.RS
-.IP * 2
-.\"O Perform a range of system administration operations including:
-.\"O .BR quotactl (2),
-.\"O .BR mount (2),
-.\"O .BR umount (2),
-.\"O .BR swapon (2),
-.\"O .BR swapoff (2),
-.\"O .BR sethostname (2),
-.\"O and
-.\"O .BR setdomainname (2);
-以下のシステム管理用の操作を実行する:
-.BR quotactl (2),
-.BR mount (2),
-.BR umount (2),
-.BR swapon (2),
-.BR swapoff (2),
-.BR sethostname (2),
-.BR setdomainname (2).
-.IP *
-.\"O perform
-.\"O .B IPC_SET
-.\"O and
-.\"O .B IPC_RMID
-.\"O operations on arbitrary System V IPC objects;
-任意の System V IPC オブジェクトに対する
-.B IPC_SET
-と
-.B IPC_RMID
-操作を実行する。
-.IP *
-.\"O perform operations on
-.\"O .I trusted
-.\"O and
-.\"O .I security
-.\"O Extended Attributes (see
-.\"O .BR attr (5));
-拡張属性
-.I trusted
-と
-.I security
-に対する操作を実行する
-.RB ( attr (5)
-参照)。
-.IP *
-.\"O use
-.\"O .BR lookup_dcookie (2);
-.BR lookup_dcookie (2)
-を呼び出す。
-.IP *
-.\"O use
-.\"O .BR ioprio_set (2)
-.\"O to assign
-.\"O .B IOPRIO_CLASS_RT
-.\"O and (before Linux 2.6.25)
-.\"O .B IOPRIO_CLASS_IDLE
-.\"O I/O scheduling classes;
-.BR ioprio_set (2)
-を使って I/O スケジューリングクラス
-.BR IOPRIO_CLASS_RT ,
-.B IOPRIO_CLASS_IDLE
-を割り当てる
-.RB ( IOPRIO_CLASS_IDLE
-は Linux 2.6.25 より前のバージョンのみ)。
-.IP *
-.\"O forge UID when passing socket credentials;
-ソケットの資格情報 (credential) を渡す際に偽の UID を渡す。
-.IP *
-.\"O exceed
-.\"O .IR /proc/sys/fs/file-max ,
-.\"O the system-wide limit on the number of open files,
-.\"O in system calls that open files (e.g.,
-.\"O .BR accept (2),
-.\"O .BR execve (2),
-.\"O .BR open (2),
-.\"O .BR pipe (2));
-ファイルをオープンするシステムコール (例えば
-.BR accept (2),
-.BR execve (2),
-.BR open (2),
-.BR pipe (2))
-でシステム全体でオープンできるファイル数の上限
-.I /proc/sys/fs/file-max
-を超過する。
-.IP *
-.\"O employ
-.\"O .B CLONE_NEWNS
-.\"O flag with
-.\"O .BR clone (2)
-.\"O and
-.\"O .BR unshare (2);
-.BR clone (2)
-と
-.BR unshare (2)
-で
-.B CLONE_NEWNS
-フラグを利用する。
-.IP *
-.\"O perform
-.\"O .B KEYCTL_CHOWN
-.\"O and
-.\"O .B KEYCTL_SETPERM
-.\"O .BR keyctl (2)
-.\"O operations;
-.BR keyctl (2)
-の
-.B KEYCTL_CHOWN
-と
-.B KEYCTL_SETPERM
-操作を実行する。
-.IP *
-.\"O perform
-.\"O .BR madvise (2)
-.\"O .B MADV_HWPOISON
-.\"O operation.
-.BR madvise (2)
-の
-.B MADV_HWPOISON
-操作を実行する。
-.RE
-.PD
-.TP
-.B CAP_SYS_BOOT
-.\"O Use
-.\"O .BR reboot (2)
-.\"O and
-.\"O .BR kexec_load (2).
-.BR reboot (2)
-と
-.BR kexec_load (2)
-を呼び出す。
-.TP
-.B CAP_SYS_CHROOT
-.\"O Use
-.\"O .BR chroot (2).
-.BR chroot (2).
-を呼び出す。
-.TP
-.B CAP_SYS_MODULE
-.\"O Load and unload kernel modules
-.\"O (see
-.\"O .BR init_module (2)
-.\"O and
-.\"O .BR delete_module (2));
-.\"O in kernels before 2.6.25:
-.\"O drop capabilities from the system-wide capability bounding set.
-カーネルモジュールのロード、アンロードを行う
-.RB ( init_module (2)
-と
-.BR delete_module (2)
-を参照のこと)。
-バージョン 2.6.25 より前のカーネルで、
-システム全体のケーパビリティバウンディングセット (capability bounding set)
-からケーパビリティを外す。
-.TP
-.B CAP_SYS_NICE
-.PD 0
-.RS
-.IP * 2
-.\"O Raise process nice value
-.\"O .RB ( nice (2),
-.\"O .BR setpriority (2))
-.\"O and change the nice value for arbitrary processes;
-プロセスの nice 値の引き上げ
-.RB ( nice (2),
-.BR setpriority (2))
-や、任意のプロセスの nice 値の変更を行う。
-.IP *
-.\"O set real-time scheduling policies for calling process,
-.\"O and set scheduling policies and priorities for arbitrary processes
-.\"O .RB ( sched_setscheduler (2),
-.\"O .BR sched_setparam (2));
-呼び出し元プロセスに対するリアルタイム・スケジューリングポリシーと、
-任意のプロセスに対するスケジューリングポリシーと優先度を設定する
-.RB ( sched_setscheduler (2),
-.BR sched_setparam (2))。
-.IP *
-.\"O set CPU affinity for arbitrary processes
-.\"O .RB ( sched_setaffinity (2));
-任意のプロセスに対する CPU affinity を設定できる
-.RB ( sched_setaffinity (2))。
-.IP *
-.\"O set I/O scheduling class and priority for arbitrary processes
-.\"O .RB ( ioprio_set (2));
-任意のプロセスに対して I/O スケジューリングクラスと優先度を設定できる
-.RB ( ioprio_set (2))。
-.IP *
-.\"O apply
-.\"O .BR migrate_pages (2)
-.\"O to arbitrary processes and allow processes
-.\"O to be migrated to arbitrary nodes;
-.BR migrate_pages (2)
-を任意のプロセスに適用し、プロセスを任意のノードに移動する。
-.\" FIXME CAP_SYS_NICE also has the following effect for
-.\" migrate_pages(2):
-.\"     do_migrate_pages(mm, &old, &new,
-.\"         capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
-.IP *
-.\"O apply
-.\"O .BR move_pages (2)
-.\"O to arbitrary processes;
-.BR move_pages (2)
-を任意のプロセスに対して行う。
-.IP *
-.\"O use the
-.\"O .B MPOL_MF_MOVE_ALL
-.\"O flag with
-.\"O .BR mbind (2)
-.\"O and
-.\"O .BR move_pages (2).
-.BR mbind (2)
-と
-.BR move_pages (2)
-で
-.B MPOL_MF_MOVE_ALL
-フラグを使用する。
-.RE
-.PD
-.TP
-.B CAP_SYS_PACCT
-.\"O Use
-.\"O .BR acct (2).
-.BR acct (2)
-を呼び出す。
-.TP
-.B CAP_SYS_PTRACE
-.\"O Trace arbitrary processes using
-.\"O .BR ptrace (2);
-.\"O apply
-.\"O .BR get_robust_list (2)
-.\"O to arbitrary processes.
-.BR ptrace (2)
-を使って任意のプロセスをトレースする。
-任意のプロセスに
-.BR get_robust_list (2)
-を適用する。
-.TP
-.B CAP_SYS_RAWIO
-.\"O Perform I/O port operations
-.\"O .RB ( iopl (2)
-.\"O and
-.\"O .BR ioperm (2));
-.\"O access
-.\"O .IR /proc/kcore .
-I/O ポート操作を実行する
-.RB ( iopl (2)
-、
-.BR ioperm (2))。
-.I /proc/kcore
-にアクセスできる。
-.TP
-.B CAP_SYS_RESOURCE
-.PD 0
-.RS
-.IP * 2
-.\"O Use reserved space on ext2 file systems;
-ext2 ファイルシステム上の予約されている領域を使用する。
-.IP *
-.\"O make
-.\"O .BR ioctl (2)
-.\"O calls controlling ext3 journaling;
-ext3 のジャーナル機能を制御する
-.BR ioctl (2)
-を使用する。
-.IP *
-.\"O override disk quota limits;
-ディスク quota の上限を上書きする。
-.IP *
-.\"O increase resource limits (see
-.\"O .BR setrlimit (2));
-リソース上限を増やす
-.RB ( setrlimit (2))。
-.IP *
-.\"O override
-.\"O .B RLIMIT_NPROC
-.\"O resource limit;
-.B RLIMIT_NPROC
-リソース制限を上書きする。
-.IP *
-.\"O raise
-.\"O .I msg_qbytes
-.\"O limit for a System V message queue above the limit in
-.\"O .I /proc/sys/kernel/msgmnb
-.\"O (see
-.\"O .BR msgop (2)
-.\"O and
-.\"O .BR msgctl (2)).
-メッセージキューに関する上限
-.I msg_qbytes
-を
-.I /proc/sys/kernel/msgmnb
-に指定されている上限よりも大きく設定する
-.RB ( msgop (2)
-と
-.BR msgctl (2)
-参照)。
-.IP *
-.\"O use
-.\"O .BR F_SETPIPE_SZ
-.\"O to increase the capacity of a pipe above the limit specified by
-.\"O .IR /proc/sys/fs/pipe-max-size .
-.I /proc/sys/fs/pipe-max-size
-に指定されている上限を超えてパイプの容量を増やすのに
-.B F_SETPIPE_SZ
-を使用する。
-.RE
-.PD
-.TP
-.B CAP_SYS_TIME
-.\"O Set system clock
-.\"O .RB ( settimeofday (2),
-.\"O .BR stime (2),
-.\"O .BR adjtimex (2));
-.\"O set real-time (hardware) clock.
-システムクロックを変更する
-.RB ( settimeofday (2),
-.BR stime (2),
-.BR adjtimex (2))。
-リアルタイム (ハードウェア) クロックを変更する。
-.TP
-.B CAP_SYS_TTY_CONFIG
-.\"O Use
-.\"O .BR vhangup (2).
-.BR vhangup (2)
-を呼び出す。
-.\"
-.\"O .SS Past and Current Implementation
-.SS 過去と現在の実装
-.\"O A full implementation of capabilities requires that:
-完全な形のケーパビリティを実装するには、以下の要件を満たす必要がある:
-.IP 1. 3
-.\"O For all privileged operations,
-.\"O the kernel must check whether the thread has the required
-.\"O capability in its effective set.
-全ての特権操作について、カーネルはそのスレッドの実効ケーパビリティセットに
-必要なケーパビリティがあるかを確認する。
-.IP 2.
-.\"O The kernel must provide system calls allowing a thread's capability sets to
-.\"O be changed and retrieved.
-カーネルで、あるスレッドのケーパビリティセットを変更したり、
-取得したりできるシステムコールが提供される。
-.IP 3.
-.\"O The file system must support attaching capabilities to an executable file,
-.\"O so that a process gains those capabilities when the file is executed.
-ファイルシステムが、実行可能ファイルにケーパビリティを付与でき、ファイル
-実行時にそのケーパビリティをプロセスが取得できるような機能をサポートする。
-.PP
-.\"O Before kernel 2.6.24, only the first two of these requirements are met;
-.\"O since kernel 2.6.24, all three requirements are met.
-カーネル 2.6.24 より前では、最初の 2つの要件のみが満たされている。
-カーネル 2.6.24 以降では、3つの要件すべてが満たされている。
-.\"
-.\"O .SS Thread Capability Sets
-.SS スレッドケーパビリティセット
-.\"O Each thread has three capability sets containing zero or more
-.\"O of the above capabilities:
-各スレッドは以下の 3種類のケーパビリティセットを持つ。各々のケーパビリティセットは
-上記のケーパビリティの組み合わせである (全てのケーパビリティが無効でもよい)。
-.TP
-.\"O .IR Permitted :
-.\"O This is a limiting superset for the effective
-.\"O capabilities that the thread may assume.
-.\"O It is also a limiting superset for the capabilities that
-.\"O may be added to the inheritable set by a thread that does not have the
-.\"O .B CAP_SETPCAP
-.\"O capability in its effective set.
-.IR "許可 (permitted)" :
-そのスレッドが持つことになっている実効ケーパビリティの
-限定的なスーパーセットである。
-これは、実効ケーパビリティセットに
-.B CAP_SETPCAP
-ケーパビリティを持っていないスレッドが継承可能ケーパビリティセットに
-追加可能なケーパビリティの限定的なスーパーセットでもある。
-
-.\"O If a thread drops a capability from its permitted set,
-.\"O it can never reacquire that capability (unless it
-.\"O .BR execve (2)s
-.\"O either a set-user-ID-root program, or
-.\"O a program whose associated file capabilities grant that capability).
-許可ケーパビリティセットから削除してしまったケーパビリティは、
-(set-user-ID-root プログラムか、
-そのケーパビリティをファイルケーパビリティで許可しているプログラムを
-.BR execve (2)
-しない限りは) もう一度獲得することはできない。
-.TP
-.\"O .IR Inheritable :
-.\"O This is a set of capabilities preserved across an
-.\"O .BR execve (2).
-.\"O It provides a mechanism for a process to assign capabilities
-.\"O to the permitted set of the new program during an
-.\"O .BR execve (2).
-.IR "継承可能 (inheritable)" :
-.BR execve (2)
-を前後で保持されるケーパビリティセットである。
-この仕組みを使うことで、あるプロセスが
-.BR execve (2)
-を行う際に新しいプログラムの許可ケーパビリティセットとして
-割り当てるケーパビリティを指定することができる。
-.TP
-.\"O .IR Effective :
-.\"O This is the set of capabilities used by the kernel to
-.\"O perform permission checks for the thread.
-.IR "実効 (effective)" :
-カーネルがスレッドの権限 (permission) をチェックするときに
-使用するケーパビリティセットである。
-.PP
-.\"O A child created via
-.\"O .BR fork (2)
-.\"O inherits copies of its parent's capability sets.
-.\"O See below for a discussion of the treatment of capabilities during
-.\"O .BR execve (2).
-.BR fork (2)
-で作成される子プロセスは、親のケーパビリティセットのコピーを継承する。
-.BR execve (2)
-中のケーパビリティの扱いについては下記を参照のこと。
-.PP
-.\"O Using
-.\"O .BR capset (2),
-.\"O a thread may manipulate its own capability sets (see below).
-.BR capset (2)
-を使うと、プロセスは自分自身のケーパビリティセット
-を操作することができる (下記参照)。
-.\"
-.\"O .SS File Capabilities
-.SS ファイルケーパビリティ
-.\"O Since kernel 2.6.24, the kernel supports
-.\"O associating capability sets with an executable file using
-.\"O .BR setcap (8).
-.\"O The file capability sets are stored in an extended attribute (see
-.\"O .BR setxattr (2))
-.\"O named
-.\"O .IR "security.capability" .
-.\"O Writing to this extended attribute requires the
-.\"O .BR CAP_SETFCAP
-.\"O capability.
-カーネル 2.6.24 以降では、
-.BR setcap (8)
-を使って実行ファイルにケーパビリティセットを対応付けることができる。
-ファイルケーパビリティセットは
-.I "security.capability"
-という名前の拡張属性に保存される
-.RB ( setxattr (2)
-参照)。この拡張属性への書き込みには
-.B CAP_SETFCAP
-ケーパビリティが必要である。
-.\"O The file capability sets,
-.\"O in conjunction with the capability sets of the thread,
-.\"O determine the capabilities of a thread after an
-.\"O .BR execve (2).
-ファイルケーパビリティセットとスレッドのケーパビリティセットの両方が
-考慮され、
-.BR execve (2)
-後のスレッドのケーパビリティセットが決定される。
-
-.\"O The three file capability sets are:
-3 つのファイルケーパビリティセットが定義されている。
-.TP
-.\"O .IR Permitted " (formerly known as " forced ):
-.\"O These capabilities are automatically permitted to the thread,
-.\"O regardless of the thread's inheritable capabilities.
-.IR "許可 (Permitted)" " (以前の" "強制 (Forced)" "):"
-スレッドの継承可能ケーパビリティに関わらず、そのスレッドに自動的に
-認められるケーパビリティ。
-.TP
-.\"O .IR Inheritable " (formerly known as " allowed ):
-.\"O This set is ANDed with the thread's inheritable set to determine which
-.\"O inheritable capabilities are enabled in the permitted set of
-.\"O the thread after the
-.\"O .BR execve (2).
-.IR "継承可能 (Inheritable)" " (以前の " "許容 (Allowed)" "):"
-このセットと、スレッドの継承可能ケーパビリティセットとの
-論理積 (AND) がとられ、
-.BR execve (2)
-の後にそのスレッドの許可ケーパビリティセットで有効となる
-継承可能ケーパビリティが決定される。
-.TP
-.\"O .IR Effective :
-.IR "実効 (Effective)" :
-.\"O This is not a set, but rather just a single bit.
-.\"O If this bit is set, then during an
-.\"O .BR execve (2)
-.\"O all of the new permitted capabilities for the thread are
-.\"O also raised in the effective set.
-.\"O If this bit is not set, then after an
-.\"O .BR execve (2),
-.\"O none of the new permitted capabilities is in the new effective set.
-これは集合ではなく、1 ビットの情報である。
-このビットがセットされていると、
-.BR execve (2)
-実行中に、そのスレッドの新しい許可ケーパビリティが全て
-実効ケーパビリティ集合においてもセットされる。
-このビットがセットされていない場合、
-.BR execve (2)
-後には新しい許可ケーパビリティのどれも新しい実効ケーパビリティ集合
-にセットされない。
-
-.\"O Enabling the file effective capability bit implies
-.\"O that any file permitted or inheritable capability that causes a
-.\"O thread to acquire the corresponding permitted capability during an
-.\"O .BR execve (2)
-.\"O (see the transformation rules described below) will also acquire that
-.\"O capability in its effective set.
-ファイルの実効ケーパビリティビットを有効にするというのは、
-.BR execve (2)
-実行時に、ファイルの許可ケーパビリティと継承ケーパビリティに対応するものが
-スレッドの許可ケーパビリティセットとしてセットされるが、
-これが実効ケーパビリティセットにもセットされるということである
-(ケーパビリティの変換ルールは下記参照)。
-.\"O Therefore, when assigning capabilities to a file
-.\"O .RB ( setcap (8),
-.\"O .BR cap_set_file (3),
-.\"O .BR cap_set_fd (3)),
-.\"O if we specify the effective flag as being enabled for any capability,
-.\"O then the effective flag must also be specified as enabled
-.\"O for all other capabilities for which the corresponding permitted or
-.\"O inheritable flags is enabled.
-したがって、ファイルにケーパビリティを割り当てる際
-.RB ( setcap (8),
-.BR cap_set_file (3),
-.BR cap_set_fd (3))、
-いずれかのケーパビリティに対して実効フラグを有効と指定する場合、
-許可フラグや継承可能フラグを有効にした他の全てのケーパビリティ
-についても実効フラグを有効と指定しなければならない。
-.\"
-.\"O .SS Transformation of Capabilities During execve()
-.SS "execve() 中のケーパビリティの変換"
-.PP
-.\"O During an
-.\"O .BR execve (2),
-.\"O the kernel calculates the new capabilities of
-.\"O the process using the following algorithm:
-.BR execve (2)
-実行時に、カーネルはプロセスの新しいケーパビリティを次の
-アルゴリズムを用いて計算する:
-.in +4n
-.nf
-
-P'(permitted) = (P(inheritable) & F(inheritable)) |
-                (F(permitted) & cap_bset)
-
-P'(effective) = F(effective) ? P'(permitted) : 0
-
-.\"O P'(inheritable) = P(inheritable)    [i.e., unchanged]
-P'(inheritable) = P(inheritable)    [つまり、変更されない]
-
-.fi
-.in
-.\"O where:
-各変数の意味は以下の通り:
-.RS 4
-.IP P 10
-.\"O denotes the value of a thread capability set before the
-.\"O .BR execve (2)
-.BR execve (2)
-前のスレッドのケーパビリティセットの値
-.IP P'
-.\"O denotes the value of a capability set after the
-.\"O .BR execve (2)
-.BR execve (2)
-後のスレッドのケーパビリティセットの値
-.IP F
-.\"O denotes a file capability set
-ファイルケーパビリティセットの値
-.IP cap_bset
-.\"O is the value of the capability bounding set (described below).
-ケーパビリティバウンディングセットの値 (下記参照)
-.RE
-.\"
-.\"O .SS Capabilities and execution of programs by root
-.SS ケーパビリティと、ルートによるプログラムの実行
-.\"O In order to provide an all-powerful
-.\"O .I root
-.\"O using capability sets, during an
-.\"O .BR execve (2):
-.BR execve (2)
-時に、ケーパビリティセットを使って、全ての権限を持った
-.I root
-を実現するには、以下のようにする。
-.IP 1. 3
-.\"O If a set-user-ID-root program is being executed,
-.\"O or the real user ID of the process is 0 (root)
-.\"O then the file inheritable and permitted sets are defined to be all ones
-.\"O (i.e., all capabilities enabled).
-set-user-ID-root プログラムが実行される場合、
-またはプロセスの実ユーザ ID が 0 (root) の場合、
-ファイルの継承可能セットと許可セットを全て 1
-(全てのケーパビリティが有効) に定義する。
-.IP 2.
-.\"O If a set-user-ID-root program is being executed,
-.\"O then the file effective bit is defined to be one (enabled).
-set-user-ID-root プログラムが実行される場合、
-ファイルの実効ケーパビリティビットを 1 (enabled) に定義する。
-.PP
-.\"O The upshot of the above rules,
-.\"O combined with the capabilities transformations described above,
-.\"O is that when a process
-.\"O .BR execve (2)s
-.\"O a set-user-ID-root program, or when a process with an effective UID of 0
-.\"O .BR execve (2)s
-.\"O a program,
-.\"O it gains all capabilities in its permitted and effective capability sets,
-.\"O except those masked out by the capability bounding set.
-.\"O .\" If a process with real UID 0, and nonzero effective UID does an
-.\"O .\" exec(), then it gets all capabilities in its
-.\"O .\" permitted set, and no effective capabilities
-.\"O This provides semantics that are the same as those provided by
-.\"O traditional UNIX systems.
-上記のルールにケーパビリティ変換を適用した結果をまとめると、
-プロセスが set-user-ID-root プログラムを
-.BR execve (2)
-する場合、または実効 UID が 0 のプロセスがプログラムを
-.BR execve (2)
-する場合、許可と実効のケーパビリティセットの全ケーパビリティ
-(正確には、ケーパビリティバウンディングセットによるマスクで除外されるもの
-以外の全てのケーパビリティ) を取得するということである。
-.\" 実 UID が 0 で実効 UID が 0 以外のプロセスが exec () を行うと、
-.\" 許可ケーパビリティセットに含まれる全てのケーパビリティ
-.\" が取得され、実効ケーパビリティは取得されない。
-これにより、伝統的な UNIX システムと同じ振る舞いができるようになっている。
-.\"O .SS Capability bounding set
-.SS ケーパビリティ・バウンディングセット
-.\"O The capability bounding set is a security mechanism that can be used
-.\"O to limit the capabilities that can be gained during an
-.\"O .BR execve (2).
-ケーパビリティ・バウンディングセット (capability bounding set) は、
-.BR execve (2)
-時に獲得できるケーパビリティを制限するために使われる
-セキュリティ機構である。
-.\"O The bounding set is used in the following ways:
-バウンディングセットは以下のように使用される。
-.IP * 2
-.\"O During an
-.\"O .BR execve (2),
-.\"O the capability bounding set is ANDed with the file permitted
-.\"O capability set, and the result of this operation is assigned to the
-.\"O thread's permitted capability set.
-.\"O The capability bounding set thus places a limit on the permitted
-.\"O capabilities that may be granted by an executable file.
-.BR execve (2)
-実行時に、ケーパビリティ・バウンディングセットと
-ファイルの許可ケーパビリティセットの論理和 (AND) を取ったものが、
-そのスレッドの許可ケーパビリティセットに割り当てられる。
-つまり、ケーパビリティ・バウンディングセットは、
-実行ファイルが認めている許可ケーパビリティに対して
-制限を課す働きをする。
-.IP *
-.\"O (Since Linux 2.6.25)
-.\"O The capability bounding set acts as a limiting superset for
-.\"O the capabilities that a thread can add to its inheritable set using
-.\"O .BR capset (2).
-.\"O This means that if a capability is not in the bounding set,
-.\"O then a thread can't add this capability to its
-.\"O inheritable set, even if it was in its permitted capabilities,
-.\"O and thereby cannot have this capability preserved in its
-.\"O permitted set when it
-.\"O .BR execve (2)s
-.\"O a file that has the capability in its inheritable set.
-(Linux 2.6.25 以降)
-ケーパビリティ・バウンディングセットは、スレッドが
-.BR capset (2)
-により自身の継承可能セットに追加可能なケーパビリティの母集団を
-制限する役割を持つ。
-スレッドに許可されたケーパビリティであっても、バウンディングセットに
-含まれていなければ、スレッドはそのケーパビリティは自身の継承可能セットに
-追加できず、その結果、継承可能セットにそのケーパビリティを含むファイルを
-.BR execve (2)
-する場合、そのケーパビリティを許可セットに持ち続けることができない、
-ということである。
-.PP
-.\"O Note that the bounding set masks the file permitted capabilities,
-.\"O but not the inherited capabilities.
-.\"O If a thread maintains a capability in its inherited set
-.\"O that is not in its bounding set,
-.\"O then it can still gain that capability in its permitted set
-.\"O by executing a file that has the capability in its inherited set.
-バウンディングセットがマスクを行うのは、継承可能ケーパビリティではなく、
-ファイルの許可ケーパビリティのマスクを行う点に注意すること。
-あるスレッドの継承可能セットにそのスレッドのバウンディングセットに
-存在しないケーパビリティが含まれている場合、そのスレッドは、
-継承可能セットに含まれるケーパビリティを持つファイルを実行することにより、
-許可セットに含まれるケーパビリティも獲得できるということである。
-.PP
-.\"O Depending on the kernel version, the capability bounding set is either
-.\"O a system-wide attribute, or a per-process attribute.
-カーネルのバージョンにより、ケーパビリティ・バウンディングセットは
-システム共通の属性の場合と、プロセス単位の属性の場合がある。
-.PP
-.\"O .B "Capability bounding set prior to Linux 2.6.25"
-.B "Linux 2.6.25 より前のケーパビリティ・バウンディングセット"
-.PP
-.\"O In kernels before 2.6.25, the capability bounding set is a system-wide
-.\"O attribute that affects all threads on the system.
-2.6.25 より前のカーネルでは、ケーパビリティ・バウンディングセットは
-システム共通の属性で、システム上の全てのスレッドに適用される。
-.\"O The bounding set is accessible via the file
-.\"O .IR /proc/sys/kernel/cap-bound .
-.\"O motoki: accessible = 「参照可能」でよいか、文脈を要確認
-バウンディングセットは
-.I /proc/sys/kernel/cap-bound
-ファイル経由で参照できる。
-.\"O (Confusingly, this bit mask parameter is expressed as a
-.\"O signed decimal number in
-.\"O .IR /proc/sys/kernel/cap-bound .)
-(間違えやすいが、このビットマスク形式のパラメータは、
-.I /proc/sys/kernel/cap-bound
-では符号付きの十進数で表現される。)
-
-.\"O Only the
-.\"O .B init
-.\"O process may set capabilities in the capability bounding set;
-.\"O other than that, the superuser (more precisely: programs with the
-.\"O .B CAP_SYS_MODULE
-.\"O capability) may only clear capabilities from this set.
-.B init
-プロセスだけがケーパビリティ・バウンディングセットで
-ケーパビリティをセットすることができる。
-それ以外では、スーパーユーザ (より正確には、
-.B CAP_SYS_MODULE
-ケーパビリティを持ったプログラム) が、
-ケーパビリティ・バウンディングセットのケーパビリティのクリアが
-できるだけである。
-
-.\"O On a standard system the capability bounding set always masks out the
-.\"O .B CAP_SETPCAP
-.\"O capability.
-.\"O To remove this restriction (dangerous!), modify the definition of
-.\"O .B CAP_INIT_EFF_SET
-.\"O in
-.\"O .I include/linux/capability.h
-.\"O and rebuild the kernel.
-通常のシステムでは、ケーパビリティ・バウンディングセットは、
-.B CAP_SETPCAP
-が無効になっている。
-この制限を取り去るには (取り去るのは危険!)、
-.I include/linux/capability.h
-内の
-.B CAP_INIT_EFF_SET
-の定義を修正し、カーネルを再構築する必要がある。
-
-.\"O The system-wide capability bounding set feature was added
-.\"O to Linux starting with kernel version 2.2.11.
-システム共通のケーパビリティ・バウンディングセット機能は、
-カーネル 2.2.11 以降で Linux に追加された。
-.\"
-.PP
-.\"O .B "Capability bounding set from Linux 2.6.25 onward"
-.B "Linux 2.6.25 以降のケーパビリティ・バウンディングセット"
-.PP
-.\"O From Linux 2.6.25, the
-.\"O .I "capability bounding set"
-.\"O is a per-thread attribute.
-.\"O (There is no longer a system-wide capability bounding set.)
-Linux 2.6.25 以降では、
-「ケーパビリティ・バウンディングセット」はスレッド単位の属性である
-(システム共通のケーパビリティ・バウンディングセットはもはや存在しない)。
-
-.\"O The bounding set is inherited at
-.\"O .BR fork (2)
-.\"O from the thread's parent, and is preserved across an
-.\"O .BR execve (2).
-バウンディングセットは
-.BR fork (2)
-時にはスレッドの親プロセスから継承され、
-.BR execve (2)
-の前後では保持される。
-
-.\"O A thread may remove capabilities from its capability bounding set using the
-.\"O .BR prctl (2)
-.\"O .B PR_CAPBSET_DROP
-.\"O operation, provided it has the
-.\"O .B CAP_SETPCAP
-.\"O capability.
-.\"O Once a capability has been dropped from the bounding set,
-.\"O it cannot be restored to that set.
-.\"O A thread can determine if a capability is in its bounding set using the
-.\"O .BR prctl (2)
-.\"O .B PR_CAPBSET_READ
-.\"O operation.
-スレッドが
-.B CAP_SETPCAP
-ケーパビリティを持っている場合、そのスレッドは
-.BR prctl (2)
-の
-.BR PR_CAPBSET_DROP
-操作を使って自身のケーパビリティ・バウンディングセットから
-ケーパビリティを削除することができる。
-いったんケーパビリティをバウンディングセットから削除してしまうと、
-スレッドはそのケーパビリティを再度セットすることはできない。
-.BR prctl (2)
-の
-.B PR_CAPBSET_READ
-操作を使うことで、スレッドがあるケーパビリティが自身のバウンディングセット
-に含まれているかを知ることができる。
-
-.\"O Removing capabilities from the bounding set is only supported if file
-.\"O capabilities are compiled into the kernel
-.\"O (CONFIG_SECURITY_FILE_CAPABILITIES).
-.\"O In that case, the
-.\"O .B init
-.\"O process (the ancestor of all processes) begins with a full bounding set.
-.\"O If file capabilities are not compiled into the kernel, then
-.\"O .B init
-.\"O begins with a full bounding set minus
-.\"O .BR CAP_SETPCAP ,
-.\"O because this capability has a different meaning when there are
-.\"O no file capabilities.
-バウンディングセットからのケーパビリティの削除がサポートされるのは、
-カーネルのコンパイル時にファイルケーパビリティが有効になっている場合
-(CONFIG_SECURITY_FILE_CAPABILITIES) だけである。
-この場合には、 (全てのプロセスの先祖である) 
-.I init
-プロセスはバウンディングセットで全てのケーパビリティが
-セットされた状態で開始する。
-ファイルケーパビリティが有効になっていない場合には、
-.I init
-はバウンディングセットで
-.B CAP_SETPCAP
-以外の全てのケーパビリティがセットされた状態で開始する。
-このようになっているのは、
-.B CAP_SETPCAP
-ケーパビリティがファイルケーパビリティがサポートされていない場合には
-違った意味を持つからである。
-
-.\"O Removing a capability from the bounding set does not remove it
-.\"O from the thread's inherited set.
-.\"O However it does prevent the capability from being added
-.\"O back into the thread's inherited set in the future.
-バウンディングセットからケーパビリティを削除しても、
-スレッドの継承可能セットからはそのケーパビリティは削除されない。
-しかしながら、バウンディングセットからの削除により、
-この先そのケーパビリティをスレッドの継承可能セットに追加すること
-はできなくなる。
-.\"
-.\"
-.\"O .SS Effect of User ID Changes on Capabilities
-.SS "ユーザ ID 変更のケーパビリティへの影響"
-.\"O To preserve the traditional semantics for transitions between
-.\"O 0 and nonzero user IDs,
-.\"O the kernel makes the following changes to a thread's capability
-.\"O sets on changes to the thread's real, effective, saved set,
-.\"O and file system user IDs (using
-.\"O .BR setuid (2),
-.\"O .BR setresuid (2),
-.\"O or similar):
-ユーザ ID が 0 と 0 以外の間で変化する際の振る舞いを従来と同じにするため、
-スレッドの実 UID、実効 UID、保存 set-user-ID、ファイルシステム UID が
-.RB ( setuid (2),
-.BR setresuid (2)
-などを使って) 変更された際に、カーネルはそのスレッドのケーパビリティセットに
-以下の変更を行う:
-.IP 1. 3
-.\"O If one or more of the real, effective or saved set user IDs
-.\"O was previously 0, and as a result of the UID changes all of these IDs
-.\"O have a nonzero value,
-.\"O then all capabilities are cleared from the permitted and effective
-.\"O capability sets.
-UID の変更前には実 UID、実効 UID、保存 set-user-ID のうち
-少なくとも一つが 0 で、変更後に実 UID、実効 UID、保存 set-user-ID が
-すべて 0 以外の値になった場合、許可と実効のケーパビリティセットの
-全ケーパビリティをクリアする。
-.IP 2.
-.\"O If the effective user ID is changed from 0 to nonzero,
-.\"O then all capabilities are cleared from the effective set.
-実効 UID が 0 から 0 以外に変更された場合、
-実効ケーパビリティセットの全ケーパビリティをクリアする。
-.IP 3.
-.\"O If the effective user ID is changed from nonzero to 0,
-.\"O then the permitted set is copied to the effective set.
-実効 UID が 0 以外から 0 に変更された場合、
-許可ケーパビリティセットの内容を実効ケーパビリティセットにコピーする。
-.IP 4.
-.\"O If the file system user ID is changed from 0 to nonzero (see
-.\"O .BR setfsuid (2))
-.\"O then the following capabilities are cleared from the effective set:
-.\"O .BR CAP_CHOWN ,
-.\"O .BR CAP_DAC_OVERRIDE ,
-.\"O .BR CAP_DAC_READ_SEARCH ,
-.\"O .BR CAP_FOWNER ,
-.\"O .BR CAP_FSETID ,
-.\"O .B CAP_LINUX_IMMUTABLE
-.\"O (since Linux 2.2.30),
-.\"O .BR CAP_MAC_OVERRIDE ,
-.\"O and
-.\"O .B CAP_MKNOD
-.\"O (since Linux 2.2.30).
-ファイルシステム UID が 0 から 0 以外に変更された場合
-.RB ( setfsuid (2)
-参照)、実効ケーパビリティセットの以下のケーパビリティがクリアされる:
-.BR CAP_CHOWN ,
-.BR CAP_DAC_OVERRIDE ,
-.BR CAP_DAC_READ_SEARCH ,
-.BR CAP_FOWNER ,
-.BR CAP_FSETID ,
-.B CAP_LINUX_IMMUTABLE
-(Linux 2.2.30 以降),
-.BR CAP_MAC_OVERRIDE ,
-.B CAP_MKNOD
-(Linux 2.2.30 以降)。
-.\"O If the file system UID is changed from nonzero to 0,
-.\"O then any of these capabilities that are enabled in the permitted set
-.\"O are enabled in the effective set.
-ファイルシステム UID が 0 以外から 0 に変更された場合、
-上記のケーパビリティのうち許可ケーパビリティセットで有効になっているものが
-実効ケーパビリティセットで有効にされる。
-.PP
-.\"O If a thread that has a 0 value for one or more of its user IDs wants
-.\"O to prevent its permitted capability set being cleared when it resets
-.\"O all of its user IDs to nonzero values, it can do so using the
-.\"O .BR prctl (2)
-.\"O .B PR_SET_KEEPCAPS
-.\"O operation.
-各種 UID のうち少なくとも一つが 0 であるスレッドが、
-その UID の全てが 0 以外になったときに許可ケーパビリティセットが
-クリアされないようにしたい場合には、
-.BR prctl (2)
-の
-.B PR_SET_KEEPCAPS
-操作を使えばよい。
-.\"
-.\"O .SS Programmatically adjusting capability sets
-.SS プログラムでケーパビリティセットを調整する
-.\"O A thread can retrieve and change its capability sets using the
-.\"O .BR capget (2)
-.\"O and
-.\"O .BR capset (2)
-.\"O system calls.
-.\"O However, the use of
-.\"O .BR cap_get_proc (3)
-.\"O and
-.\"O .BR cap_set_proc (3),
-.\"O both provided in the
-.\"O .I libcap
-.\"O package,
-.\"O is preferred for this purpose.
-各スレッドは、
-.BR capget (2)
-や
-.BR capset (2)
-を使って、自身のケーパビリティセットを取得したり変更したりできる。
-ただし、これを行うには、
-.I libcap
-パッケージで提供されている
-.BR cap_get_proc (3)
-や
-.BR cap_set_proc (3)
-を使うのが望ましい。
-.\"O The following rules govern changes to the thread capability sets:
-スレッドのケーパビリティセットの変更には以下のルールが適用される。
-.IP 1. 3
-.\"O If the caller does not have the
-.\"O .B CAP_SETPCAP
-.\"O capability,
-.\"O the new inheritable set must be a subset of the combination
-.\"O of the existing inheritable and permitted sets.
-.\"O [XXX] motoki: combination って AND ? OR ?
-呼び出し側が
-.B CAP_SETPCAP
-ケーパビリティを持っていない場合、新しい継承可能セットは、
-既存の継承可能セットと許可セットの積集合 (AND) の部分集合で
-なければならない。
-.IP 2.
-.\"O (Since kernel 2.6.25)
-.\"O The new inheritable set must be a subset of the combination of the
-.\"O existing inheritable set and the capability bounding set.
-.\"O [XXX] motoki: combination って AND ? OR ?
-(カーネル 2.6.25 以降)
-新しい継承可能セットは、既存の継承可能セットとケーパビリティ・
-バウンディングセットの積集合 (AND) の部分集合でなければならない。
-.IP 3.
-.\"O The new permitted set must be a subset of the existing permitted set
-.\"O (i.e., it is not possible to acquire permitted capabilities
-.\"O that the thread does not currently have).
-新しい許可セットは、既存の許可セットの部分集合でなければならない
-(つまり、そのスレッドが現在持っていない許可ケーパビリティを
-獲得することはできない)。
-.IP 4.
-.\"O The new effective set must be a subset of the new permitted set.
-新しい実効ケーパビリティセットは新しい許可ケーパビリティセットの
-部分集合になっていなければならない。
-.\"O .SS The """securebits"" flags: establishing a capabilities-only environment
-.SS securebits フラグ: ケーパビリティだけの環境を構築する
-.\" For some background:
-.\"       see http://lwn.net/Articles/280279/ and
-.\"       http://article.gmane.org/gmane.linux.kernel.lsm/5476/
-.\"O Starting with kernel 2.6.26,
-.\"O and with a kernel in which file capabilities are enabled,
-.\"O Linux implements a set of per-thread
-.\"O .I securebits
-.\"O flags that can be used to disable special handling of capabilities for UID 0
-.\"O .RI ( root ).
-カーネル 2.6.26 以降で、
-ファイルケーパビリティが有効になったカーネルでは、
-スレッド単位の
-.I securebits
-フラグが実装されており、このフラグを使うと UID 0
-.RI ( root )
-に対するケーパビリティの特別扱いを無効することができる。
-.\"O These flags are as follows:
-以下のようなフラグがある。
-.TP
-.B SECBIT_KEEP_CAPS
-.\"O Setting this flag allows a thread that has one or more 0 UIDs to retain
-.\"O its capabilities when it switches all of its UIDs to a nonzero value.
-.\"O If this flag is not set,
-.\"O then such a UID switch causes the thread to lose all capabilities.
-.\"O This flag is always cleared on an
-.\"O .BR execve (2).
-.\"O (This flag provides the same functionality as the older
-.\"O .BR prctl (2)
-.\"O .B PR_SET_KEEPCAPS
-.\"O operation.)
-このフラグをセットされている場合、UID が 0 のスレッドの UID が 0 以外の値に
-切り替わる際に、そのスレッドはケーパビリティを維持することができる。
-このフラグがセットされていない場合には、UID が 0 から 0 以外の値に
-切り替わると、そのスレッドは全てのケーパビリティを失う。
-このフラグは
-.BR execve (2)
-時には全てクリアされる
-(このフラグは、以前の
-.BR prctl (2)
-の
-.B PR_SET_KEEPCAPS
-操作と同じ機能を提供するものである)。
-.TP
-.B SECBIT_NO_SETUID_FIXUP
-.\"O Setting this flag stops the kernel from adjusting  capability sets when
-.\"O the threads's effective and file system UIDs are switched between
-.\"O zero and nonzero values.
-.\"O (See the subsection
-.\"O .IR "Effect of User ID Changes on Capabilities" .)
-このフラグをセットすると、スレッドの実効 UID とファイルシステム UID が
-0 と 0 以外の間で切り替わった場合に、
-カーネルはケーパビリティセットの調整を行わなくなる
-(「ユーザ ID 変更のケーパビリティへの影響」の節を参照)。
-.TP
-.B SECBIT_NOROOT
-.\"O If this bit is set, then the kernel does not grant capabilities
-.\"O when a set-user-ID-root program is executed, or when a process with
-.\"O an effective or real UID of 0 calls
-.\"O .BR execve (2).
-.\"O (See the subsection
-.\"O .IR "Capabilities and execution of programs by root" .)
-このビットがセットされている場合、
-set-user-ID-root プログラムの実行時や、
-実効 UID か 実 UID が 0 のプロセスが
-.BR execve (2)
-を呼び出した時に、カーネルはケーパビリティを許可しない
-(「ケーパビリティと、ルートによるプログラムの実行」の節を参照)。
-.PP
-.\"O Each of the above "base" flags has a companion "locked" flag.
-.\"O Setting any of the "locked" flags is irreversible,
-.\"O and has the effect of preventing further changes to the
-.\"O corresponding "base" flag.
-.\"O The locked flags are:
-.\"O .BR SECBIT_KEEP_CAPS_LOCKED ,
-.\"O .BR SECBIT_NO_SETUID_FIXUP_LOCKED ,
-.\"O and
-.\"O .BR SECBIT_NOROOT_LOCKED .
-上記の "base" フラグの各々には対応する "locked" フラグが存在する。
-いずれの "locked" フラグも一度セットされると戻すことはできず、
-それ以降は対応する "base" フラグを変更することができなくなる。
-"locked" フラグは
-.BR SECBIT_KEEP_CAPS_LOCKED ,
-.BR SECBIT_NO_SETUID_FIXUP_LOCKED ,
-.BR SECBIT_NOROOT_LOCKED
-という名前である。
-.PP
-.\"O The
-.\"O .I securebits
-.\"O flags can be modified and retrieved using the
-.\"O .BR prctl (2)
-.\"O .B PR_SET_SECUREBITS
-.\"O and
-.\"O .B PR_GET_SECUREBITS
-.\"O operations.
-.\"O The
-.\"O .B CAP_SETPCAP
-.\"O capability is required to modify the flags.
-.I securebits
-フラグは、
-.BR prctl (2)
-の操作
-.B PR_SET_SECUREBITS
-や
-.B PR_GET_SECUREBITS
-を使うことで変更したり取得したりできる。
-フラグを変更するには
-.B CAP_SETPCAP
-ケーパビリティが必要である。
-
-.\"O The
-.\"O .I securebits
-.\"O flags are inherited by child processes.
-.\"O During an
-.\"O .BR execve (2),
-.\"O all of the flags are preserved, except
-.\"O .B SECURE_KEEP_CAPS
-.\"O which is always cleared.
-.I securebits
-フラグは子プロセスに継承される。
-.BR execve (2)
-においては、
-.B SECURE_KEEP_CAPS
-が常にクリアされる以外は、全てのフラグが保持される。
-
-.\"O An application can use the following call to lock itself,
-.\"O and all of its descendants,
-.\"O into an environment where the only way of gaining capabilities
-.\"O is by executing a program with associated file capabilities:
-アプリケーションは、以下の呼び出しを行うことにより、
-自分自身および子孫となるプロセス全てに対して、
-必要なファイルケーパビリティを持ったプログラムを実行しない限り、
-対応するケーパビリティを獲得できないような状況に閉じこめることができる。
-.in +4n
-.nf
-
-prctl(PR_SET_SECUREBITS,
-        SECBIT_KEEP_CAPS_LOCKED |
-        SECBIT_NO_SETUID_FIXUP |
-        SECBIT_NO_SETUID_FIXUP_LOCKED |
-        SECBIT_NOROOT |
-        SECBIT_NOROOT_LOCKED);
-.fi
-.in
-.\"O .SH "CONFORMING TO"
-.SH 準拠
-.PP
-.\"O No standards govern capabilities, but the Linux capability implementation
-.\"O is based on the withdrawn POSIX.1e draft standard; see
-.\"O .IR http://wt.xpilot.org/publications/posix.1e/ .
-ケーパビリティに関する標準はないが、 Linux のケーパビリティは廃案になった
-POSIX.1e 草案に基づいて実装されている。
-.I http://wt.xpilot.org/publications/posix.1e/
-を参照。
-.\"O .SH NOTES
-.SH 注意
-.\"O Since kernel 2.5.27, capabilities are an optional kernel component,
-.\"O and can be enabled/disabled via the CONFIG_SECURITY_CAPABILITIES
-.\"O kernel configuration option.
-カーネル 2.5.27 以降、ケーパビリティは選択式のカーネルコンポーネント
-となっており、カーネル設定オプション CONFIG_SECURITY_CAPABILITIES
-により有効/無効を切り替えることができる。
-
-.\"O The
-.\"O .I /proc/PID/task/TID/status
-.\"O file can be used to view the capability sets of a thread.
-.\"O The
-.\"O .I /proc/PID/status
-.\"O file shows the capability sets of a process's main thread.
-.I /proc/PID/task/TID/status
-ファイルを使うと、スレッドのケーパビリティセットを見ることができる。
-.I /proc/PID/status
-ファイルには、プロセスのメインスレッドのケーパビリティセットが表示される。
-
-.\"O The
-.\"O .I libcap
-.\"O package provides a suite of routines for setting and
-.\"O getting capabilities that is more comfortable and less likely
-.\"O to change than the interface provided by
-.\"O .BR capset (2)
-.\"O and
-.\"O .BR capget (2).
-.I libcap
-パッケージは、ケーパビリティを設定・取得するための
-ルーチン群を提供している。これらのインタフェースは、
-.BR capset (2)
-と
-.BR capget (2)
-が提供するインターフェースと比べて、より使いやすく、変更される可能性が少ない。
-.\"O This package also provides the
-.\"O .BR setcap (8)
-.\"O and
-.\"O .BR getcap (8)
-.\"O programs.
-.\"O It can be found at
-.\"O .br
-.\"O .IR http://www.kernel.org/pub/linux/libs/security/linux-privs .
-このパッケージでは、
-.BR setcap (8),
-.BR getcap (8)
-というプログラムも提供されている。
-パッケージは
-.I http://www.kernel.org/pub/linux/libs/security/linux-privs
-で入手できる。
-
-.\"O Before kernel 2.6.24, and since kernel 2.6.24 if
-.\"O file capabilities are not enabled, a thread with the
-.\"O .B CAP_SETPCAP
-.\"O capability can manipulate the capabilities of threads other than itself.
-.\"O However, this is only theoretically possible,
-.\"O since no thread ever has
-.\"O .BR CAP_SETPCAP
-.\"O in either of these cases:
-バージョン 2.6.24 より前、およびファイルケーパビリティが
-有効になっていない2.6.24 以降のカーネルでは、
-.B CAP_SETPCAP
-ケーパビリティを持ったスレッドは自分以外のスレッドの
-ケーパビリティを操作できる。
-しかしながら、これは理論的に可能というだけである。
-以下のいずれかの場合においても、どのスレッドも
-.BR CAP_SETPCAP
-ケーパビリティを持つことはないからである。
-.IP * 2
-.\"O In the pre-2.6.25 implementation the system-wide capability bounding set,
-.\"O .IR /proc/sys/kernel/cap-bound ,
-.\"O always masks out this capability, and this can not be changed
-.\"O without modifying the kernel source and rebuilding.
-2.6.25 より前の実装では、システム共通のケーパビリティ・バウンディングセット
-.I /proc/sys/kernel/cap-bound
-ではこのケーパビリティは常に無効になっており、
-ソースを変更してカーネルを再コンパイルしない限り、
-これを変更することはできない。
-.IP *
-.\"O If file capabilities are disabled in the current implementation, then
-.\"O .B init
-.\"O starts out with this capability removed from its per-process bounding
-.\"O set, and that bounding set is inherited by all other processes
-.\"O created on the system.
-現在の実装ではファイルケーパビリティが無効になっている場合、
-プロセス毎のバウンディングセットからこのケーパビリティを抜いて
-.B init
-は開始され、
-システム上で生成される他の全てのプロセスでこのバウンディングセットが
-継承される。
-.\"O .SH "SEE ALSO"
-.SH 関連項目
-.BR capget (2),
-.BR prctl (2),
-.BR setfsuid (2),
-.BR cap_clear (3),
-.BR cap_copy_ext (3),
-.BR cap_from_text (3),
-.BR cap_get_file (3),
-.BR cap_get_proc (3),
-.BR cap_init (3),
-.BR capgetp (3),
-.BR capsetp (3),
-.BR credentials (7),
-.BR pthreads (7),
-.BR getcap (8),
-.BR setcap (8)
-.PP
-.\"O .I include/linux/capability.h
-.\"O in the kernel source
-カーネルソース内の
-.I include/linux/capability.h
index 78775b7..783bbd3 100644 (file)
 .\"
 .\" 2007-06-13 Creation
 .\"
-.\" Japanese Version Copyright (c) 2007 Akihiro MOTOKI all rights reserved.
-.\" Translated 2007-10-25, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.66
-.\" Updated 2008-08-04, Akihiro MOTOKI, LDP v3.05
+.\"*******************************************************************
 .\"
-.TH CREDENTIALS 7 2008-06-03 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH CREDENTIALS 7 2008\-06\-03 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O credentials \- process identifiers
 credentials \- 認証に用いられるプロセスの識別子
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O .SS Process ID (PID)
-.SS プロセスID (PID)
-.\"O Each process has a unique nonnegative integer identifier
-.\"O that is assigned when the process is created using
-.\"O .BR fork (2).
-.\"O A process can obtain its PID using
-.\"O .BR getpid (2).
-.\"O A PID is represented using the type
-.\"O .I pid_t
-.\"O (defined in
-.\"O .IR <sys/types.h> ).
-各プロセスは、負でない整数の一意な識別子を持つ。
-この識別子は
-.BR fork (2)
-を使ってプロセスが生成される際に割り当てられる。
-プロセスは
-.BR getpid (2)
-を使って自分の PID を取得できる。
-PID は
-.I pid_t
-型で表現される
-.RI ( pid_t
-は
-.I <sys/types.h>
-で定義されている)。
+.SS "プロセスID (PID)"
+各プロセスは、負でない整数の一意な識別子を持つ。 この識別子は \fBfork\fP(2)  を使ってプロセスが生成される際に割り当てられる。 プロセスは
+\fBgetpid\fP(2)  を使って自分の PID を取得できる。 PID は \fIpid_t\fP 型で表現される (\fIpid_t\fP は
+\fI<sys/types.h>\fP で定義されている)。
 
-.\"O PIDs are used in a range of system calls to identify the process
-.\"O affected by the call, for example:
-PID は各種のシステムコールでそのシステムコールが作用するプロセスを
-特定するために使用される。以下に例を挙げる:
-.BR kill (2),
-.BR ptrace (2),
-.BR setpriority (2),
 .\" .BR sched_rr_get_interval (2),
 .\" .BR sched_getaffinity (2),
 .\" .BR sched_setaffinity (2),
@@ -73,412 +43,106 @@ PID は各種のシステムコールでそのシステムコールが作用す
 .\" .BR sched_setparam (2),
 .\" .BR sched_setscheduler (2),
 .\" .BR sched_getscheduler (2),
-.BR setpgid (2),
 .\" .BR getsid (2),
-.BR setsid (2),
-.BR sigqueue (3),
-.\"O and
-.BR waitpid (2).
 .\" .BR waitid (2),
 .\" .BR wait4 (2),
+PID は各種のシステムコールでそのシステムコールが作用するプロセスを 特定するために使用される。以下に例を挙げる: \fBkill\fP(2),
+\fBptrace\fP(2), \fBsetpriority\fP(2), \fBsetpgid\fP(2), \fBsetsid\fP(2),
+\fBsigqueue\fP(3), \fBwaitpid\fP(2).
 
-.\"O A process's PID is preserved across an
-.\"O .BR execve (2).
-プロセスの PID は
-.BR execve (2)
-の前後で不変である。
-.\"O .SS Parent Process ID (PPID)
-.SS 親プロセス ID (PPID)
-.\"O A process's parent process ID identifies the process that created
-.\"O this process using
-.\"O .BR fork (2).
-.\"O A process can obtain its PPID using
-.\"O .BR getppid (2).
-.\"O A PPID is represented using the type
-.\"O .IR pid_t .
-プロセスの親プロセスの ID は、
-.BR fork (2)
-を使ってそのプロセスを生成したプロセスを示す。
-プロセスは
-.BR getppid (2)
-を使って自分の PPID を取得できる。
-PPID は
-.I pid_t
-型で表現される。
+プロセスの PID は \fBexecve\fP(2)  の前後で不変である。
+.SS "親プロセス ID (PPID)"
+プロセスの親プロセスの ID は、 \fBfork\fP(2)  を使ってそのプロセスを生成したプロセスを示す。 プロセスは \fBgetppid\fP(2)
+を使って自分の PPID を取得できる。 PPID は \fIpid_t\fP 型で表現される。
 
-.\"O A process's PPID is preserved across an
-.\"O .BR execve (2).
-プロセスの PPID は
-.BR execve (2)
-の前後で不変である。
-.\"O .SS Process Group ID and Session ID
-.SS プロセスグループ ID とセッション ID
-.\"O Each process has a session ID and a process group ID,
-.\"O both represented using the type
-.\"O .IR pid_t .
-.\"O A process can obtain its session ID using
-.\"O .BR getsid (2),
-.\"O and its process group ID using
-.\"O .BR getpgrp (2).
-各プロセスはセッション ID とプロセスグループ ID を持つ。
-これらの ID はどちらも
-.I pid_t
-型で表現される。
-プロセスは、それぞれ
-.BR getsid (2),
-.BR getpgrp (2)
-を使って自分のセッション ID、プロセスグループ ID を取得できる。
+プロセスの PPID は \fBexecve\fP(2)  の前後で不変である。
+.SS "プロセスグループ ID とセッション ID"
+各プロセスはセッション ID とプロセスグループ ID を持つ。 これらの ID はどちらも \fIpid_t\fP 型で表現される。 プロセスは、それぞれ
+\fBgetsid\fP(2), \fBgetpgrp\fP(2)  を使って自分のセッション ID、プロセスグループ ID を取得できる。
 
-.\"O A child created by
-.\"O .BR fork (2)
-.\"O inherits its parent's session ID and process group ID.
-.\"O A process's session ID and process group ID are preserved across an
-.\"O .BR execve (2).
-.BR fork (2)
-で生成された子プロセスは親プロセスのセッション ID とプロセスグループ ID
-を継承する。プロセスのセッション ID とプロセスグループ ID は
-.BR execve (2)
-の前後で不変である。
+\fBfork\fP(2)  で生成された子プロセスは親プロセスのセッション ID とプロセスグループ ID を継承する。プロセスのセッション ID
+とプロセスグループ ID は \fBexecve\fP(2)  の前後で不変である。
 
-.\"O Sessions and process groups are abstractions devised to support shell
-.\"O job control.
-.\"O A process group (sometimes called a "job") is a collection of
-.\"O processes that share the same process group ID;
-.\"O the shell creates a new process group for the process(es) used
-.\"O to execute single command or pipeline (e.g., the two processes
-.\"O created to execute the command "ls\ |\ wc" are placed in the
-.\"O same process group).
-.\"O A process's group membership can be set using
-.\"O .BR setpgid (2).
-.\"O The process whose process ID is the same as its process group ID is the
-.\"O \fIprocess group leader\fP for that group.
-セッションとプロセスグループの概念は、シェルのジョブ制御を行うために
-考案されたものである。
-プロセスグループ (時には「ジョブ」と呼ばれることもある) は、
-同じプロセスグループ ID を共有するプロセスの集まりである。
-シェルは、一つのコマンドもしくはパイプラインの実行に使われるプロセス群に
-対して一つのプロセスグループを生成する
-(例えば、コマンド "ls\ |\ wc" を実行するために生成される二つのプロセスは
-同じプロセスグループに置かれる)。
-所属するプロセスグループは
-.BR setpgid (2)
-を使って設定できる。
-自身のプロセス ID がプロセスグループ ID と同じプロセスは、
-そのグループの「プロセスグループ・リーダー」である。
+セッションとプロセスグループの概念は、シェルのジョブ制御を行うために 考案されたものである。 プロセスグループ (時には「ジョブ」と呼ばれることもある)
+は、 同じプロセスグループ ID を共有するプロセスの集まりである。 シェルは、一つのコマンドもしくはパイプラインの実行に使われるプロセス群に
+対して一つのプロセスグループを生成する (例えば、コマンド "ls\ |\ wc" を実行するために生成される二つのプロセスは
+同じプロセスグループに置かれる)。 所属するプロセスグループは \fBsetpgid\fP(2)  を使って設定できる。 自身のプロセス ID
+がプロセスグループ ID と同じプロセスは、 そのグループの「プロセスグループ・リーダー」である。
 
-.\"O A session is a collection of processes that share the same session ID.
-.\"O All of the members of a process group also have the same session ID
-.\"O (i.e., all of the members of a process group always belong to the
-.\"O same session, so that sessions and process groups form a strict
-.\"O two-level hierarchy of processes.)
-.\"O A new session is created when a process calls
-.\"O .BR setsid (2),
-.\"O which creates a new session whose session ID is the same
-.\"O as the PID of the process that called
-.\"O .BR setsid (2).
-.\"O The creator of the session is called the \fIsession leader\fP.
-セッションは、同じセッション ID を共有するプロセスの集まりである。
-ある一つのプロセスグループの全メンバーは同じセッション ID を持つ
-(つまり、一つのプロセスグループのメンバーは全て同じセッションに所属し、
-これにより、セッションとプロセスグループで二階層のプロセス階層が形成できる)。
-新たなセッションの生成はプロセスが
-.BR setsid (2)
-を呼び出すことで行う。
-.BR setsid (2)
-は、
-.BR setsid (2)
-を呼び出したプロセスの PID と同じ値のセッション ID を持つ
-新たなセッションを生成する。
+セッションは、同じセッション ID を共有するプロセスの集まりである。 ある一つのプロセスグループの全メンバーは同じセッション ID を持つ
+(つまり、一つのプロセスグループのメンバーは全て同じセッションに所属し、 これにより、セッションとプロセスグループで二階層のプロセス階層が形成できる)。
+新たなセッションの生成はプロセスが \fBsetsid\fP(2)  を呼び出すことで行う。 \fBsetsid\fP(2)  は、 \fBsetsid\fP(2)
+を呼び出したプロセスの PID と同じ値のセッション ID を持つ 新たなセッションを生成する。
 セッションの生成者は「セッション・リーダー」と呼ばれる。
-.\"O .SS User and Group Identifiers
-.SS ユーザ ID とグループ ID
-.\"O Each process has various associated user and groups IDs.
-.\"O These IDs are integers, respectively represented using the types
-.\"O .I uid_t
-.\"O and
-.\"O .I gid_t
-.\"O (defined in
-.\"O .IR <sys/types.h> ).
-各プロセスは、数種類のユーザ ID とグループ ID を持つ。
-ユーザ ID、グループ ID は整数で、それぞれ
-.IR uid_t ,
-.I gid_t
-型で表現される (これらは
-.I <sys/types.h>
-で定義されている)。
+.SS "ユーザ ID とグループ ID"
+各プロセスは、数種類のユーザ ID とグループ ID を持つ。 ユーザ ID、グループ ID は整数で、それぞれ \fIuid_t\fP, \fIgid_t\fP
+型で表現される (これらは \fI<sys/types.h>\fP で定義されている)。
 
-.\"O On Linux, each process has the following user and group identifiers:
 Linux では、各プロセスは以下のような種類のユーザ ID とグループ ID を持つ。
 .IP * 3
-.\"O Real user ID and real group ID.
-実ユーザ ID と実グループ ID。
-.\"O These IDs determine who owns the process.
-.\"O A process can obtain its real user (group) ID using
-.\"O .BR getuid (2)
-.\"O .RB ( getgid (2)).
-これらの ID によりプロセスの所有者が決定される。
-プロセスが自分の実ユーザ ID、実グループ ID を取得するには、それぞれ
-.BR getuid (2),
-.BR getgid (2)
-を使用する。
+実ユーザ ID と実グループ ID。 これらの ID によりプロセスの所有者が決定される。 プロセスが自分の実ユーザ ID、実グループ ID
+を取得するには、それぞれ \fBgetuid\fP(2), \fBgetgid\fP(2)  を使用する。
 .IP *
-.\"O Effective user ID and effective group ID.
-実効ユーザ ID と実効グループ ID。
-.\"O These IDs are used by the kernel to determine the permissions
-.\"O that the process will have when accessing shared resources such
-.\"O as message queues, shared memory, and semaphores.
-.\"O On most UNIX systems, these IDs also determine the
-.\"O permissions when accessing files.
-.\"O However, Linux uses the file system IDs described below
-.\"O for this task.
-.\"O A process can obtain its effective user (group) ID using
-.\"O .BR geteuid (2)
-.\"O .RB ( getegid (2)).
-これらの ID は、メッセージキュー、共有メモリ、セマフォなどの
-共有リソースにアクセスしようとした際にそのプロセスがアクセス許可を
-持っているかをカーネルが判定するのに使用される。
-ほとんどの UNIX システムでは、これらの ID はファイルへのアクセス時の
-アクセス許可の判定にも使用される。
-しかしながら、Linux ではファイルへのアクセス許可の判定には
-後述のファイルシステム ID が使用される。
-プロセスが自分の実効ユーザ ID、実効グループ ID を取得するには、それぞれ
-.BR geteuid (2),
-.BR getegid (2)
-を使用する。
+実効ユーザ ID と実効グループ ID。 これらの ID は、メッセージキュー、共有メモリ、セマフォなどの
+共有リソースにアクセスしようとした際にそのプロセスがアクセス許可を 持っているかをカーネルが判定するのに使用される。 ほとんどの UNIX
+システムでは、これらの ID はファイルへのアクセス時の アクセス許可の判定にも使用される。 しかしながら、Linux
+ではファイルへのアクセス許可の判定には 後述のファイルシステム ID が使用される。 プロセスが自分の実効ユーザ ID、実効グループ ID
+を取得するには、それぞれ \fBgeteuid\fP(2), \fBgetegid\fP(2)  を使用する。
 .IP *
-.\"O Saved set-user-ID and saved set-group-ID.
-保存 (saved) set-user-ID と保存 set-group-ID。
-.\"O These IDs are used in set-user-ID and set-group-ID programs to save
-.\"O a copy of the corresponding effective IDs that were set when
-.\"O the program was executed (see
-.\"O .BR execve (2)).
-これらの ID は、set-user-ID や set-group-ID されたプログラムにおいて、
-プログラムの実行時に設定された実効 ID のコピーを保存するために
-使用される
-.RB ( execve (2)
-参照)。
-.\"O A set-user-ID program can assume and drop privileges by
-.\"O switching its effective user ID back and forth between the values
-.\"O in its real user ID and saved set-user-ID.
-.\"O This switching is done via calls to
-.\"O .BR seteuid (2),
-.\"O .BR setreuid (2),
-.\"O or
-.\"O .BR setresuid (2).
-.\"O A set-group-ID program performs the analogous tasks using
-.\"O .BR setegid (2),
-.\"O .BR setregid (2),
-.\"O or
-.\"O .BR setresgid (2).
-set-user-ID プログラムは、実効ユーザ ID を実ユーザID と保存 set-user-ID
-の間で行ったり来たり切り替えることで、特権を得たり落としたりできる。
-この切り替えは
-.BR seteuid (2),
-.BR setreuid (2),
-.BR setresuid (2)
-を呼び出すことで実行できる。
-set-group-ID プログラムは、
-.BR setegid (2),
-.BR setregid (2),
-.BR setresgid (2)
-を使って同様のことができる。
-.\"O A process can obtain its saved set-user-ID (set-group-ID) using
-.\"O .BR getresuid (2)
-.\"O .RB ( getresgid (2)).
-プロセスが自分の保存 set-user-ID、保存 set-group-ID を取得するには、
-.BR getresuid(2),
-.BR getresgids (2)
-をそれぞれ使用する。
+保存 (saved) set\-user\-ID と保存 set\-group\-ID。 これらの ID は、set\-user\-ID や
+set\-group\-ID されたプログラムにおいて、 プログラムの実行時に設定された実効 ID のコピーを保存するために 使用される
+(\fBexecve\fP(2)  参照)。 set\-user\-ID プログラムは、実効ユーザ ID を実ユーザID と保存 set\-user\-ID
+の間で行ったり来たり切り替えることで、特権を得たり落としたりできる。 この切り替えは \fBseteuid\fP(2), \fBsetreuid\fP(2),
+\fBsetresuid\fP(2)  を呼び出すことで実行できる。 set\-group\-ID プログラムは、 \fBsetegid\fP(2),
+\fBsetregid\fP(2), \fBsetresgid\fP(2)  を使って同様のことができる。 プロセスが自分の保存 set\-user\-ID、保存
+set\-group\-ID を取得するには、 \fBgetresuid(2),\fP \fBgetresgids\fP(2)  をそれぞれ使用する。
 .IP *
-.\"O File system user ID and file system group ID (Linux-specific).
-ファイルシステム・ユーザ ID とファイルシステム・グループ ID (Linux 固有)。
-.\"O These IDs, in conjunction with the supplementary group IDs described
-.\"O below, are used to determine permissions for accessing files; see
-.\"O .BR path_resolution (7)
-.\"O for details.
-.\"O Whenever a process's effective user (group) ID is changed,
-.\"O the kernel also automatically changes the file system user (group) ID
-.\"O to the same value.
-.\"O Consequently, the file system IDs normally have the same values
-.\"O as the corresponding effective ID, and the semantics for file-permission
-.\"O checks are thus the same on Linux as on other UNIX systems.
-.\"O The file system IDs can be made to differ from the effective IDs
-.\"O by calling
-.\"O .BR setfsuid (2)
-.\"O and
-.\"O .BR setfsgid (2).
-これらの ID は、後述の補助グループ ID と組み合わせて使用され、
-ファイルへのアクセス権の決定に利用される。詳細は
-.BR path_resolution (7)
-を参照。
-プロセスの実効 ID (ユーザ ID や グループ ID) が変更されるたびに、
-カーネルは自動的に対応するファイルシステム ID を同じ値に変更する。
-その結果、ファイルシステム ID は通常は対応する実効 ID と同じ値となり、
-ファイルのアクセス権のチェック方法は Linux と他の UNIX システムで同じである。
-ファイルシステム ID は実効 ID とは異なる値にすることができ、
-変更は
-.BR setfsuid (2)
-と
-.BR setfsgid (2)
-を呼び出して行う。
+ファイルシステム・ユーザ ID とファイルシステム・グループ ID (Linux 固有)。 これらの ID は、後述の補助グループ ID
+と組み合わせて使用され、 ファイルへのアクセス権の決定に利用される。詳細は \fBpath_resolution\fP(7)  を参照。 プロセスの実効 ID
+(ユーザ ID や グループ ID) が変更されるたびに、 カーネルは自動的に対応するファイルシステム ID を同じ値に変更する。
+その結果、ファイルシステム ID は通常は対応する実効 ID と同じ値となり、 ファイルのアクセス権のチェック方法は Linux と他の UNIX
+システムで同じである。 ファイルシステム ID は実効 ID とは異なる値にすることができ、 変更は \fBsetfsuid\fP(2)  と
+\fBsetfsgid\fP(2)  を呼び出して行う。
 .IP *
-.\"O Supplementary group IDs.
-補助グループ ID。
-.\"O This is a set of additional group IDs that are used for permission
-.\"O checks when accessing files and other shared resources.
-.\"O On Linux kernels before 2.6.4,
-.\"O a process can be a member of up to 32 supplementary groups;
-.\"O since kernel 2.6.4,
-.\"O a process can be a member of up to 65536 supplementary groups.
-この ID は、ファイルや他の共有リソースへのアクセス時にアクセス許可の
-チェックに使用される、追加のグループ ID の集合である。
-カーネル 2.6.4 より前の Linux では、一つのプロセスあたりの
-補助グループのメンバー数は最大で 32 である。
-カーネル 2.6.4 以降では、一つのプロセスあたりの
-補助グループのメンバー数は最大で 65536 である。
-.\"O The call
-.\"O .I sysconf(_SC_NGROUPS_MAX)
-.\"O can be used to determine the number of supplementary groups
-.\"O of which a process may be a member.
-.I sysconf(_SC_NGROUPS_MAX)
-を呼び出すことで、あるプロセスがメンバーとなることができる可能性のある
-補助グループ数を知ることができる。
 .\" Since kernel 2.6.4, the limit is visible via the read-only file
 .\" /proc/sys/kernel/ngroups_max.
 .\" As at 2.6.22-rc2, this file is still read-only.
-.\"O A process can obtain its set of supplementary group IDs using
-.\"O .BR getgroups (2),
-.\"O and can modify the set using
-.\"O .BR setgroups (2).
-プロセスは、自分の補助グループ ID の集合を
-.BR getgroups (2)
-で取得でき、
-.BR setgroups (2)
-で集合を変更できる。
+補助グループ ID。 この ID は、ファイルや他の共有リソースへのアクセス時にアクセス許可の チェックに使用される、追加のグループ ID
+の集合である。 カーネル 2.6.4 より前の Linux では、一つのプロセスあたりの 補助グループのメンバー数は最大で 32 である。 カーネル
+2.6.4 以降では、一つのプロセスあたりの 補助グループのメンバー数は最大で 65536 である。
+\fIsysconf(_SC_NGROUPS_MAX)\fP を呼び出すことで、あるプロセスがメンバーとなることができる可能性のある
+補助グループ数を知ることができる。 プロセスは、自分の補助グループ ID の集合を \fBgetgroups\fP(2)  で取得でき、
+\fBsetgroups\fP(2)  で集合を変更できる。
 .PP
-.\"O A child process created by
-.\"O .BR fork (2)
-.\"O inherits copies of its parent's user and groups IDs.
-.\"O During an
-.\"O .BR execve (2),
-.\"O a process's real user and group ID and supplementary
-.\"O group IDs are preserved;
-.\"O the effective and saved set IDs may be changed, as described in
-.\"O .BR execve (2).
-.BR fork (2)
-で生成された子プロセスは親プロセスのユーザ ID とグループ ID を継承する。
-.BR execve (2)
-の間、プロセスの実ユーザ/グループ ID と補助グループ ID 集合は不変である。
-実効 ID と保存セット ID は変更される可能性がある
-.RB ( execve (2)
-で説明されている)。
+\fBfork\fP(2)  で生成された子プロセスは親プロセスのユーザ ID とグループ ID を継承する。 \fBexecve\fP(2)
+の間、プロセスの実ユーザ/グループ ID と補助グループ ID 集合は不変である。 実効 ID と保存セット ID は変更される可能性がある
+(\fBexecve\fP(2)  で説明されている)。
 
-.\"O Aside from the purposes noted above,
-.\"O a process's user IDs are also employed in a number of other contexts:
 上記の目的以外にも、プロセスのユーザ ID は他の様々な場面で利用される。
 .IP * 3
-.\"O when determining the permissions for sending signals\(emsee
-.\"O .BR kill (2);
-シグナルを送る許可の判定時\(em
-.BR kill (2)
-参照。
+シグナルを送る許可の判定時\(em \fBkill\fP(2)  参照。
 .IP *
-.\"O when determining the permissions for setting
-.\"O process-scheduling parameters (nice value, real time
-.\"O scheduling policy and priority, CPU affinity, I/O priority) using
-.\"O .BR setpriority (2),
-.\"O .BR sched_setaffinity (2),
-.\"O .BR sched_setscheduler (2),
-.\"O .BR sched_setparam (2),
-.\"O and
-.\"O .BR ioprio_set (2);
-プロセスのスケジューリング関連のパラメータ (nice 値、
-リアルタイム・スケジューリングポリシーや優先度、CPU affinity、
-入出力優先度) の設定許可の判定時。
-スケジューリング関連のパラメータ設定には
-.BR setpriority (2),
-.BR sched_setaffinity (2),
-.BR sched_setscheduler (2),
-.BR sched_setparam (2),
-.BR ioprio_set (2)
-が使用される。
+プロセスのスケジューリング関連のパラメータ (nice 値、 リアルタイム・スケジューリングポリシーや優先度、CPU affinity、 入出力優先度)
+の設定許可の判定時。 スケジューリング関連のパラメータ設定には \fBsetpriority\fP(2), \fBsched_setaffinity\fP(2),
+\fBsched_setscheduler\fP(2), \fBsched_setparam\fP(2), \fBioprio_set\fP(2)  が使用される。
 .IP *
-.\"O when checking resource limits; see
-.\"O .BR getrlimit (2);
-リソース上限のチェック時。
-.BR getrlimit (2)
-参照。
+リソース上限のチェック時。 \fBgetrlimit\fP(2)  参照。
 .IP *
-.\"O when checking the limit on the number of inotify instances
-.\"O that the process may create; see
-.\"O .BR inotify (7).
-プロセスが生成できる inotify インスタンス数の上限のチェック時。
-.BR inotify (7)
-参照。
-.\"O .SH "CONFORMING TO"
+プロセスが生成できる inotify インスタンス数の上限のチェック時。 \fBinotify\fP(7)  参照。
 .SH 準拠
-.\"O Process IDs, parent process IDs, process group IDs, and session IDs
-.\"O are specified in POSIX.1-2001.
-.\"O The real, effective, and saved set user and groups IDs,
-.\"O and the supplementary group IDs, are specified in POSIX.1-2001.
-.\"O The file system user and group IDs are a Linux extension.
-プロセス ID、親プロセス ID、プロセスグループ ID、セッション ID は
-POSIX.1-2001 で規定されている。
-実 ID、実効 ID、保存セット ID のユーザ ID / グループ ID および
-補助グループ ID は POSIX.1-2001 で規定されている。
+プロセス ID、親プロセス ID、プロセスグループ ID、セッション ID は POSIX.1\-2001 で規定されている。 実 ID、実効
+ID、保存セット ID のユーザ ID / グループ ID および 補助グループ ID は POSIX.1\-2001 で規定されている。
 ファイルシステム・ユーザ ID / グループ ID は Linux による拡張である。
-.\"O .SH NOTES
 .SH 注意
-.\"O The POSIX threads specification requires that
-.\"O credentials are shared by all of the threads in a process.
-.\"O However, at the kernel level, Linux maintains separate user and group
-.\"O credentials for each thread.
-.\"O The NPTL threading implementation does some work to ensure
-.\"O that any change to user or group credentials
-.\"O (e.g., calls to
-.\"O .BR setuid (2),
-.\"O .BR setresuid (2),
-.\"O etc.)
-.\"O is carried through to all of the POSIX threads in a process.
-POSIX のスレッド仕様では、これらの識別子がプロセス内の全スレッドで
-共有されることを求めている。
-しかしながら、カーネルのレベルでは、Linux はスレッド毎に別々の
-ユーザとグループに関する識別子を管理している。
-NPTL スレッド実装が、(例えば
-.BR setuid (2),
-.BR setresuid (2)
-などの呼び出しによる) ユーザやグループに関する識別子に対する変更が
-プロセス内の全ての POSIX スレッドに対して反映されることを保証する
-ための処理を行っている。
-.\"O .SH "SEE ALSO"
+POSIX のスレッド仕様では、これらの識別子がプロセス内の全スレッドで 共有されることを求めている。 しかしながら、カーネルのレベルでは、Linux
+はスレッド毎に別々の ユーザとグループに関する識別子を管理している。 NPTL スレッド実装が、(例えば \fBsetuid\fP(2),
+\fBsetresuid\fP(2)  などの呼び出しによる) ユーザやグループに関する識別子に対する変更が プロセス内の全ての POSIX
+スレッドに対して反映されることを保証する ための処理を行っている。
 .SH 関連項目
-.BR bash (1),
-.BR csh (1),
-.BR ps (1),
-.BR access (2),
-.BR execve (2),
-.BR faccessat (2),
-.BR fork (2),
-.BR getpgrp (2),
-.BR getpid (2),
-.BR getppid (2),
-.BR getsid (2),
-.BR kill (2),
-.BR killpg (2),
-.BR setegid (2),
-.BR seteuid (2),
-.BR setfsgid (2),
-.BR setfsuid (2),
-.BR setgid (2),
-.BR setgroups (2),
-.BR setresgid (2),
-.BR setresuid (2),
-.BR setuid (2),
-.BR waitpid (2),
-.BR euidaccess (3),
-.BR initgroups (3),
-.BR tcgetpgrp (3),
-.BR tcsetpgrp (3),
-.BR capabilities (7),
-.BR path_resolution (7),
-.BR unix (7)
+\fBbash\fP(1), \fBcsh\fP(1), \fBps\fP(1), \fBaccess\fP(2), \fBexecve\fP(2),
+\fBfaccessat\fP(2), \fBfork\fP(2), \fBgetpgrp\fP(2), \fBgetpid\fP(2), \fBgetppid\fP(2),
+\fBgetsid\fP(2), \fBkill\fP(2), \fBkillpg\fP(2), \fBsetegid\fP(2), \fBseteuid\fP(2),
+\fBsetfsgid\fP(2), \fBsetfsuid\fP(2), \fBsetgid\fP(2), \fBsetgroups\fP(2),
+\fBsetresgid\fP(2), \fBsetresuid\fP(2), \fBsetuid\fP(2), \fBwaitpid\fP(2),
+\fBeuidaccess\fP(3), \fBinitgroups\fP(3), \fBtcgetpgrp\fP(3), \fBtcsetpgrp\fP(3),
+\fBcapabilities\fP(7), \fBpath_resolution\fP(7), \fBunix\fP(7)
index b452462..00d3440 100644 (file)
 .\" of this page provided the header is included verbatim,
 .\" and in case of nontrivial modification author and date
 .\" of the modification is added to the header.
-.\" $Id: ddp.7,v 1.6 1999/12/06 00:13:56 nakano Exp $
+.\" $Id: ddp.7,v 1.3 1999/05/13 11:33:22 freitag Exp $
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
-.\" Translated Mon 6 Dec 1999 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH DDP  7 2008-11-20 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.TH DDP 7 2008\-11\-20 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O ddp \- Linux AppleTalk protocol implementation
 ddp \- Linux での AppleTalk プロトコルの実装
-.\"O .SH SYNOPSIS
 .SH 書式
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .br
-.B #include <netatalk/at.h>
+\fB#include <netatalk/at.h>\fP
 .sp
-.IB ddp_socket " = socket(AF_APPLETALK, SOCK_DGRAM, 0);"
+\fIddp_socket\fP\fB = socket(AF_APPLETALK, SOCK_DGRAM, 0);\fP
 .br
-.IB raw_socket " = socket(AF_APPLETALK, SOCK_RAW, " protocol ");"
-.\"O .SH DESCRIPTION
+\fIraw_socket\fP\fB = socket(AF_APPLETALK, SOCK_RAW, \fP\fIprotocol\fP\fB);\fP
 .SH 説明
-.\"O Linux implements the Appletalk protocols described in
-.\"O .IR "Inside Appletalk" .
-.\"O Only the DDP layer and AARP are present in
-.\"O the kernel.
-.\"O They are designed to be used via the
-.\"O .B netatalk
-.\"O protocol
-.\"O libraries.
-.\"O This page documents the interface for those who wish or need to
-.\"O use the DDP layer directly.
-Linux は
-.I "Inside Appletalk"
-に記述されている Appletalk プロトコルを実装している。
-カーネルにあるのは DDP 層と AARP だけである。これらは
-.B netatalk
-プロトコルライブラリを通して利用されるように設計されている。
-このページは DDP 層を直接利用したいユーザーのために、
-インターフェースを記述したものである。
+Linux は \fIInside Appletalk\fP に記述されている Appletalk プロトコルを実装している。 カーネルにあるのは DDP
+層と AARP だけである。これらは \fBnetatalk\fP プロトコルライブラリを通して利用されるように設計されている。 このページは DDP
+層を直接利用したいユーザーのために、 インターフェースを記述したものである。
 .PP
-.\"O The communication between Appletalk and the user program works using a
-.\"O BSD-compatible socket interface.
-.\"O For more information on sockets, see
-.\"O .BR socket (7).
-Appletalk とユーザープログラムとの通信には、
-BSD 互換のソケットインターフェースを利用する。
-ソケットに関するより詳しい情報は
-.BR socket (7)
-を見よ。
+Appletalk とユーザープログラムとの通信には、 BSD 互換のソケットインターフェースを利用する。 ソケットに関するより詳しい情報は
+\fBsocket\fP(7)  を見よ。
 .PP
-.\"O An AppleTalk socket is created by calling the
-.\"O .BR socket (2)
-.\"O function with a
-.\"O .B AF_APPLETALK
-.\"O socket family argument.
-.\"O Valid socket types are
-.\"O .B SOCK_DGRAM
-.\"O to open a
-.\"O .B ddp
-.\"O socket or
-.\"O .B SOCK_RAW
-.\"O to open a
-.\"O .B raw
-.\"O socket.
-.\"O .I protocol
-.\"O is the Appletalk protocol to be received or sent.
-.\"O For
-.\"O .B SOCK_RAW
-.\"O you must specify
-.\"O .BR ATPROTO_DDP .
-Appletalk ソケットは、
-ソケットファミリーの引数に
-.B AF_APPLETALK
-を指定して
-.BR socket (2)
-関数を呼び出すことによって生成される。指定できるソケットタイプは、
-.B ddp
-ソケットをオープンする場合には
-.BR SOCK_DGRAM 、
-.B raw
-ソケットをオープンする場合には
-.B SOCK_RAW
-である。
-.I protocol
-は送受信される Appletalk プロトコルである。
-ソケットタイプに
-.B SOCK_RAW
-を指定した場合は、プロトコルに
-.B ATPROTO_DDP
-を指定しなければならない。
+Appletalk ソケットは、 ソケットファミリーの引数に \fBAF_APPLETALK\fP を指定して \fBsocket\fP(2)
+関数を呼び出すことによって生成される。指定できるソケットタイプは、 \fBddp\fP ソケットをオープンする場合には \fBSOCK_DGRAM\fP、
+\fBraw\fP ソケットをオープンする場合には \fBSOCK_RAW\fP である。 \fIprotocol\fP は送受信される Appletalk
+プロトコルである。 ソケットタイプに \fBSOCK_RAW\fP を指定した場合は、プロトコルに \fBATPROTO_DDP\fP を指定しなければならない。
 .PP
-.\"O Raw sockets may be only opened by a process with effective user ID 0
-.\"O or when the process has the
-.\"O .B CAP_NET_RAW
-.\"O capability.
-raw ソケットは実効ユーザー ID が 0 のプロセスか、
-.B CAT_NEW_RAW
-権限を持ったプロセスでないとオープンできない。
-.\"O .SS "Address Format"
+raw ソケットは実効ユーザー ID が 0 のプロセスか、 \fBCAT_NEW_RAW\fP 権限を持ったプロセスでないとオープンできない。
 .SS アドレスのフォーマット
-.\"O An Appletalk socket address is defined as a combination of a network number,
-.\"O a node number, and a port number.
-Appletalk ソケットアドレスはネットワーク番号・ノード番号・ポート番号の
-組み合わせで定義される。
+Appletalk ソケットアドレスはネットワーク番号・ノード番号・ポート番号の 組み合わせで定義される。
 .PP
 .in +4n
 .nf
@@ -123,280 +52,115 @@ struct sockaddr_atalk {
 .fi
 .in
 .PP
-.\"O .I sat_family
-.\"O is always set to
-.\"O .BR AF_APPLETALK .
-.I sat_family
-は常に
-.B AF_APPLETALK
-に設定する。
-.\"O .I sat_port
-.\"O contains the port.
-.\"O The port numbers below 129 are known as
-.\"O .IR reserved ports .
-.\"O Only processes with the effective user ID 0 or the
-.\"O .B CAP_NET_BIND_SERVICE
-.\"O capability may
-.\"O .BR bind (2)
-.\"O to these sockets.
-.I sat_port
-はポートを与える。ポート番号が 129 以下のポートは
-「予約ポート (reserved port)」 と呼ばれる。実効ユーザー ID が 0 のプロセスか、
-.B CAP_NET_BIND_SERVICE
-権限を持つプロセスだけが、このようなソケットを
-.BR bind (2)
-できる。
-.\"O .I sat_addr
-.\"O is the host address.
-.\"O The
-.\"O .I net
-.\"O member of
-.\"O .I struct at_addr
-.\"O contains the host network in network byte order.
-.\"O The value of
-.\"O .B AT_ANYNET
-.\"O is a
-.\"O wildcard and also implies \(lqthis network.\(rq
-.I sat_addr
-はホストアドレスである。
-.I struct at_addr
-のメンバー
-.I s_net
-にはホストのネットワークをネットワークバイトオーダーで与える。値
-.B AT_ANYNET
-はワイルドカードで、「このネットワーク」も暗黙のうちに含まれる。
-.\"O The
-.\"O .I node
-.\"O member of
-.\"O .I struct at_addr
-.\"O contains the host node number.
-.\"O The value of
-.\"O .B AT_ANYNODE
-.\"O is a
-.\"O wildcard and also implies \(lqthis node.\(rq The value of
-.\"O .B ATADDR_BCAST
-.\"O is a link
-.\"O local broadcast address.
-.I struct at_addr
-のメンバー
-.I s_node
-にはホストのノード番号を与える。値
-.B AT_ANYNODE
-はワイルドカードで、「このノード」も暗黙のうちに含まれる。値
-.B ATADDR_BCAST
-はローカルなブロードキャストアドレスである。
 .\" FIXME this doesn't make sense [johnl]
-.\"O .SS "Socket Options"
+\fIsat_family\fP は常に \fBAF_APPLETALK\fP に設定する。 \fIsat_port\fP はポートを与える。ポート番号が 129
+以下のポートは 「予約ポート (reserved port)」 と呼ばれる。実効ユーザー ID が 0 のプロセスか、
+\fBCAP_NET_BIND_SERVICE\fP 権限を持つプロセスだけが、このようなソケットを \fBbind\fP(2)  できる。 \fIsat_addr\fP
+はホストアドレスである。 \fIstruct at_addr\fP のメンバー \fIs_net\fP
+にはホストのネットワークをネットワークバイトオーダーで与える。値 \fBAT_ANYNET\fP
+はワイルドカードで、「このネットワーク」も暗黙のうちに含まれる。 \fIstruct at_addr\fP のメンバー \fIs_node\fP
+にはホストのノード番号を与える。値 \fBAT_ANYNODE\fP はワイルドカードで、「このノード」も暗黙のうちに含まれる。値
+\fBATADDR_BCAST\fP はローカルなブロードキャストアドレスである。
 .SS ソケットオプション
-.\"O No protocol-specific socket options are supported.
 プロトコル固有のソケットオプションはない。
-.\"O .SS /proc interfaces
-.SS /proc インタフェース
-.\"O IP supports a set of
-.\"O .I /proc
-.\"O interfaces to configure some global AppleTalk parameters.
-.\"O The parameters can be accessed by reading or writing files in the directory
-.\"O .IR /proc/sys/net/atalk/ .
-Appletalk のグローバルパラメータのいくつかは、
-.I /proc
-インタフェースを通して設定することができる。
-これらのパラメータには、
-.I /proc/sys/net/atalk/
-ディレクトリ内のファイルの読み書きでアクセスできる。
-.TP
-.I aarp-expiry-time
-.\"O The time interval (in seconds) before an AARP cache entry expires.
+.SS "/proc インタフェース"
+Appletalk のグローバルパラメータのいくつかは、 \fI/proc\fP インタフェースを通して設定することができる。 これらのパラメータには、
+\fI/proc/sys/net/atalk/\fP ディレクトリ内のファイルの読み書きでアクセスできる。
+.TP 
+\fIaarp\-expiry\-time\fP
 AARP キャッシュエントリを破棄するまでのタイムインターバル (秒単位)。
-.TP
-.I aarp-resolve-time
-.\"O The time interval (in seconds) before an AARP cache entry is resolved.
+.TP 
+\fIaarp\-resolve\-time\fP
 AARP キャッシュエントリが解決されるまでのタイムインターバル (秒単位)。
-.TP
-.I aarp-retransmit-limit
-.\"O The number of retransmissions of an AARP query before the node is declared
-.\"O dead.
-AARP クエリーの最大再送信回数。この回数を越えると、
-そのノードは dead であるとみなされる。
-.TP
-.I aarp-tick-time
-.\"O The timer rate (in seconds) for the timer driving AARP.
+.TP 
+\fIaarp\-retransmit\-limit\fP
+AARP クエリーの最大再送信回数。この回数を越えると、 そのノードは dead であるとみなされる。
+.TP 
+\fIaarp\-tick\-time\fP
 タイマー動作する AARP のタイマーレート (秒単位)
 .PP
-.\"O The default values match the specification and should never need to be
-.\"O changed.
-デフォルトの値で仕様にマッチしているので、
-変更する必要は全くないはずである。
-.\"O .SS Ioctls
+デフォルトの値で仕様にマッチしているので、 変更する必要は全くないはずである。
 .SS ioctl
-.\"O All ioctls described in
-.\"O .BR socket (7)
-.\"O apply to DDP.
-.BR socket (7)
-に記述されているすべての ioctl が
-DDP にも適用される。
 .\" FIXME Add a section about multicasting
-.\"O .SH ERRORS
+\fBsocket\fP(7)  に記述されているすべての ioctl が DDP にも適用される。
 .SH エラー
 .\" FIXME document all errors. We should really fix the kernels to
 .\" give more uniform error returns (ENOMEM vs ENOBUFS, EPERM vs
 .\" EACCES etc.)
-.TP
-.B EACCES
-.\"O The user tried to execute an operation without the necessary permissions.
-.\"O These include sending to a broadcast address without
-.\"O having the broadcast flag set,
-.\"O and trying to bind to a reserved port without effective user ID 0 or
-.\"O .BR CAP_NET_BIND_SERVICE .
-ユーザが行おうとした操作に必要な権限を持っていない。
-broadcast フラグをセットせずにブロードキャストアドレスへ送信を行おうとした、
-実効ユーザー ID が 0 でなく、
-.B CAP_NET_BIND_SERVICE
+.TP 
+\fBEACCES\fP
+ユーザが行おうとした操作に必要な権限を持っていない。 broadcast フラグをセットせずにブロードキャストアドレスへ送信を行おうとした、
+実効ユーザー ID が 0 でなく、 \fBCAP_NET_BIND_SERVICE\fP
 権限のないプロセスで特権ポートをバインドしようとした、などが考えられる。
-.TP
-.B EADDRINUSE
-.\"O Tried to bind to an address already in use.
+.TP 
+\fBEADDRINUSE\fP
 既に使用されているアドレスにバインドしようとした。
-.TP
-.B EADDRNOTAVAIL
-.\"O A nonexistent interface was requested or the requested source address was
-.\"O not local.
-存在しないインターフェースが要求された。または
-要求されたソースアドレスがローカルなものでない。
-.TP
-.B EAGAIN
-.\"O Operation on a nonblocking socket would block.
+.TP 
+\fBEADDRNOTAVAIL\fP
+存在しないインターフェースが要求された。または 要求されたソースアドレスがローカルでない。
+.TP 
+\fBEAGAIN\fP
 非ブロッキングソケットに対してブロックする操作を行った。
-.TP
-.B EALREADY
-.\"O A connection operation on a nonblocking socket is already in progress.
+.TP 
+\fBEALREADY\fP
 非ブロッキングソケットに対する接続操作が既に実行中である。
-.TP
-.B ECONNABORTED
-.\"O A connection was closed during an
-.\"O .BR accept (2).
-.BR accept (2)
-の途中で接続がクローズされた。
-.TP
-.B EHOSTUNREACH
-.\"O No routing table entry matches the destination address.
+.TP 
+\fBECONNABORTED\fP
+\fBaccept\fP(2)  の途中で接続がクローズされた。
+.TP 
+\fBEHOSTUNREACH\fP
 行き先アドレスにマッチするエントリがルーティングテーブルにない。
-.TP
-.B EINVAL
-.\"O Invalid argument passed.
+.TP 
+\fBEINVAL\fP
 渡した引数が不正。
-.TP
-.B EISCONN
-.\"O .BR connect (2)
-.\"O was called on an already connected socket.
-接続済みのソケットに対して
-.BR connect (2)
-が呼ばれた。
-.TP
-.B EMSGSIZE
-.\"O Datagram is bigger than the DDP MTU.
+.TP 
+\fBEISCONN\fP
+接続済みのソケットに対して \fBconnect\fP(2)  が呼ばれた。
+.TP 
+\fBEMSGSIZE\fP
 データグラムが DDP MTU より大きい。
-.TP
-.B ENODEV
-.\"O Network device not available or not capable of sending IP.
+.TP 
+\fBENODEV\fP
 ネットワークデバイスがない。あるいは IP を送ることができない。
-.TP
-.B ENOENT
-.\"O .B SIOCGSTAMP
-.\"O was called on a socket where no packet arrived.
-パケットが到着していないソケットに対して
-.B SIOCGSTAMP
-が呼ばれた。
-.TP
-.\"O .BR ENOMEM " and " ENOBUFS
-.BR ENOMEM " と " ENOBUFS
-.\"O Not enough memory available.
+.TP 
+\fBENOENT\fP
+パケットが到着していないソケットに対して \fBSIOCGSTAMP\fP が呼ばれた。
+.TP 
+\fBENOMEM\fP と \fBENOBUFS\fP
 メモリが足りない。
-.TP
-.B ENOPKG
-.\"O A kernel subsystem was not configured.
-カーネルのサブシステムが設定されていない。
-.TP
-.\"O .BR ENOPROTOOPT " and " EOPNOTSUPP
-.BR ENOPROTOOPT " と " EOPNOTSUPP
-.\"O Invalid socket option passed.
-渡したソケットオプションが不正。
-.TP
-.B ENOTCONN
-.\"O The operation is only defined on a connected socket, but the socket wasn't
-.\"O connected.
-行おうとした操作は接続済みのソケットに対してのみ定義されているものだが、
-そのソケットは接続されていなかった。
-.TP
-.B EPERM
-.\"O User doesn't have permission to set high priority,
-.\"O make a configuration change,
-.\"O or send signals to the requested process or group,
-高い優先度に設定したり、設定を変更したり、
-指定したプロセスやグループにシグナルを送るのに必要な権限を
-ユーザが持っていない。
-.TP
-.B EPIPE
-.\"O The connection was unexpectedly closed or shut down by the other end.
-接続が先方によって、通常以外のやり方でクローズまたはシャットダウンされた。
-.TP
-.B ESOCKTNOSUPPORT
-.\"O The socket was unconfigured, or an unknown socket type was requested.
+.TP 
+\fBENOPKG\fP
+カーネルサブシステムが設定されていない。
+.TP 
+\fBENOPROTOOPT\fP と \fBEOPNOTSUPP\fP
+無効なソケットオプションが渡された。
+.TP 
+\fBENOTCONN\fP
+接続されていないソケットに対して、 接続状態でしか定義されていない操作を行おうとした。
+.TP 
+\fBEPERM\fP
+高い優先度に設定したり、設定を変更したり、 指定したプロセスやグループにシグナルを送るのに必要な権限を ユーザが持っていない。
+.TP 
+\fBEPIPE\fP
+接続が接続相手によって、予期しないやり方でクローズまたはシャットダウンされた。
+.TP 
+\fBESOCKTNOSUPPORT\fP
 ソケットが設定されていない。または未知のソケットタイプが要求された。
-.\"O .SH VERSIONS
 .SH バージョン
-.\"O Appletalk is supported by Linux 2.0 or higher.
-.\"O The
-.\"O .I /proc
-.\"O interfaces exist since Linux 2.2.
-Appletalk は Linux 2.0 以降でサポートされている。
-.I /proc
-インタフェースは Linux 2.2 以降に存在する。
-.\"O .SH NOTES
+Appletalk は Linux 2.0 以降でサポートされている。 \fI/proc\fP インタフェースは Linux 2.2 以降に存在する。
 .SH 注意
-.\"O Be very careful with the
-.\"O .B SO_BROADCAST
-.\"O option \- it is not privileged in Linux.
-.\"O It is easy to overload the network
-.\"O with careless sending to broadcast addresses.
-.B SO_BROADCAST
-オプションを用いる時には慎重の上にも慎重になってほしい。
-Linux ではこれに特権を必要としない。
-不注意にブロードキャストアドレスに送信を行うと、
-ネットワークの状態が簡単に変更されてしまう。
-.\"O .SS Compatibility
+\fBSO_BROADCAST\fP オプションを用いる時には慎重の上にも慎重になってほしい。 Linux ではこれに特権を必要としない。
+不注意にブロードキャストアドレスに送信を行うと、 ネットワークの状態が簡単に変更されてしまう。
 .SS 移植性
-.\"O The basic AppleTalk socket interface is compatible with
-.\"O .B netatalk
-.\"O on BSD-derived systems.
-.\"O Many BSD systems fail to check
-.\"O .B SO_BROADCAST
-.\"O when sending broadcast frames; this can lead to compatibility problems.
-基本的な Appletalk ソケットインターフェースは
-BSD 由来のシステムにおける
-.B netatalk
-と互換性がある。多くの BSD システムでは、
-ブロードキャストフレームを送信しようとしたときの
-.B SO_BROADCAST
+基本的な Appletalk ソケットインターフェースは BSD 由来のシステムにおける \fBnetatalk\fP と互換性がある。多くの BSD
+システムでは、 ブロードキャストフレームを送信しようとしたときの \fBSO_BROADCAST\fP
 のチェックに失敗する。これは互換性の問題となるかもしれない。
 .PP
-.\"O The
-.\"O raw
-.\"O socket mode is unique to Linux and exists to support the alternative CAP
-.\"O package and AppleTalk monitoring tools more easily.
-raw ソケットモードは Linux 独特のもので、もう一方の実装である CAP
-パッケージや、 Appletalk モニタツールをより簡単に実装できるようになる。
-.\"O .SH BUGS
+raw ソケットモードは Linux 独特のもので、もう一方の実装である CAP パッケージや、 Appletalk
+モニタツールをより簡単に実装できるようになる。
 .SH バグ
-.\"O There are too many inconsistent error values.
 エラーの値がまったく首尾一貫していない。
 .PP
-.\"O The ioctls used to configure routing tables, devices,
-.\"O AARP tables and other devices are not yet described.
-ルーティングテーブル・デバイス・ AARP テーブル・その他のデバイスを
-設定するために用いられる ioctl がまだ記述されていない。
-.\"O .SH SEE ALSO
+ルーティングテーブル・デバイス・ AARP テーブル・その他のデバイスを 設定するために用いられる ioctl がまだ記述されていない。
 .SH 関連項目
-.BR recvmsg (2),
-.BR sendmsg (2),
-.BR capabilities (7),
-.BR socket (7)
+\fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBcapabilities\fP(7), \fBsocket\fP(7)
index 90f339f..889348f 100644 (file)
 .\" Modified Sun Jul 25 10:45:30 1993 by Rik Faith (faith@cs.unc.edu)
 .\" Modified Sun Jul 21 21:25:26 1996 by Andries Brouwer (aeb@cwi.nl)
 .\" Modified Mon Oct 21 17:47:19 1996 by Eric S. Raymond (esr@thyrsus.com)
-.\" Modified Wed Aug 27 20:28:58 1997 by Nicolas Lichtmaier (nick@debian.org)
+.\" Modified Wed Aug 27 20:28:58 1997 by Nicolás Lichtmaier (nick@debian.org)
 .\" Modified Mon Sep 21 00:00:26 1998 by Andries Brouwer (aeb@cwi.nl)
 .\" Modified Wed Jan 24 06:37:24 2001 by Eric S. Raymond (esr@thyrsus.com)
 .\" Modified Thu Dec 13 23:53:27 2001 by Martin Schulze <joey@infodrom.org>
 .\"
-.\" nakano 注: Nicolas さんの a はオリジナルでは \'a だが,
-.\" キャラクタを壊すので a に変更した.
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 1997 KURODA Masaru all rights reserved.
-.\" Translated May 27, 1997 by KURODA Masaru <kuro@st.rim.or.jp>
-.\" Modified Sat 25 Jul 1998 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Modified Sun 6 Dec 1998 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated & Modified Sat Aug 21 1999
-.\"       by NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated & Modified Sat 18 Mar 2000 by NAKANO Takeo
-.\" Updated Sat Dec 22 JST 2001 by Kentaro Shirakata <argrath@ub32.org>
-.\" Updated Sat Mar 23 JST 2002 by Kentaro Shirakata <argrath@ub32.org>
-.\" Updated 2010-04-11, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.24
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\"WORD:       environment             環境
-.\"WORD:       environment variable    環境変数
-.\"WORD:       shell variable          シェル変数
-.\"WORD:       locale                  ロケール
-.\"WORD:       locale category         ロケールカテゴリ
-.\"
-.TH ENVIRON 7 2009-07-25 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O environ \- user environment
+.\"*******************************************************************
+.TH ENVIRON 7 2009\-07\-25 Linux "Linux Programmer's Manual"
 .SH 名前
 environ \- ユーザ環境
-.\"O .SH SYNOPSIS
 .SH 書式
 .nf
-.BI "extern char **" environ ;
+\fBextern char **\fP\fIenviron\fP\fB;\fP
 .br
 .fi
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O The variable
-.\"O .I environ
-.\"O points to an array of pointers to strings called the "environment".
-.\"O The last pointer in this array has the value NULL.
-.\"O (This variable must be declared in the user program,
-.\"O but is declared in the header file
-.\"O .I <unistd.h>
-.\"O in case the header files came from libc4 or libc5, and
-.\"O in case they came from glibc and
-.\"O .B _GNU_SOURCE
-.\"O was defined.)
-.\"O This array of strings is made available to the process by the
-.\"O .BR exec (3)
-.\"O call that started the process.
-変数
-.I environ
-は「環境 (environment)」と呼ばれる文字列へのポインタの配列である。
-この配列の最後のポインタの値は NULL である。
-(この変数はユーザープログラムで宣言しなければならない。
-ただし libc4 や libc5 のヘッダーファイルなら
-.I <unistd.h>
-で宣言されているし、これが glibc 由来のものでも
-.B _GNU_SOURCE
-が define されていれば宣言済みとなる)。
-この文字列配列は、
-プロセスを起動する
-.BR exec (3)
-によって、その起動されたプロセスで利用できるようになる。
+変数 \fIenviron\fP は「環境 (environment)」と呼ばれる文字列へのポインタの配列である。 この配列の最後のポインタの値は NULL
+である。 (この変数はユーザープログラムで宣言しなければならない。 ただし libc4 や libc5 のヘッダーファイルなら
+\fI<unistd.h>\fP で宣言されているし、これが glibc 由来のものでも \fB_GNU_SOURCE\fP が define
+されていれば宣言済みとなる)。 この文字列配列は、 プロセスを起動する \fBexec\fP(3)  によって、その起動されたプロセスで利用できるようになる。
 
-.\"O By convention the strings in
-.\"O .I environ
-.\"O have the form "\fIname\fP\fB=\fP\fIvalue\fP".
-.\"O Common examples are:
-通例では、
-.I environ
-の文字列は "\fIname\fP\fB=\fP\fIvalue\fP" という書式をとる。
-よく用いられる例を以下に示す。
-.TP
-.B USER
-.\"O The name of the logged-in user (used by some BSD-derived programs).
+通例では、 \fIenviron\fP の文字列は "\fIname\fP\fB=\fP\fIvalue\fP" という書式をとる。 よく用いられる例を以下に示す。
+.TP 
+\fBUSER\fP
 ユーザのログイン名 (BSD 起源のプログラムなどによって使用される)。
-.TP
-.B LOGNAME
-.\"O The name of the logged-in user (used by some System-V derived programs).
+.TP 
+\fBLOGNAME\fP
 ユーザのログイン名(System V 起源のプログラムなどによって使用される)。
-.TP
-.B HOME
-.\"O A user's login directory, set by
-.\"O .BR login (1)
-.\"O from the password file
-.\"O .BR passwd (5).
-ユーザのログインディレクトリ。
-.BR login (1)
-がパスワードファイル
-.BR passwd (5)
-から取得して設定する。
-.TP
-.B LANG
-.\"O The name of a locale to use for locale categories when not overridden
-.\"O by \fBLC_ALL\fP or more specific environment variables like
-.\"O \fBLC_COLLATE\fP, \fBLC_CTYPE\fP, \fBLC_MESSAGES\fP, \fBLC_MONETARY\fP,
-.\"O \fBLC_NUMERIC\fP, \fBLC_TIME\fP, cf.
-.\"O .BR locale (5).
-ロケールの各カテゴリで使用されるロケールの名前。\fBLC_ALL\fP や、
-より狭い範囲を対象とする環境変数
-.RB ( LC_COLLATE ,
-.BR LC_CTYPE ,
-.BR LC_MESSAGES ,
-.BR LC_MONETARY ,
-.BR LC_NUMERIC ,
-.B LC_TIME
-など)
-によって上書きされることもある。
-.BR locale (5)
-を見よ。
-.TP
-.B PATH
-.\"O The sequence of directory prefixes that
-.\"O .BR sh (1)
-.\"O and many other
-.\"O programs apply in searching for a file known by an incomplete pathname.
-.\"O The prefixes are separated by \(aq\fB:\fP\(aq.
-.\"O (Similarly one has \fBCDPATH\fP used by some shells to find the target
-.\"O of a change directory command, \fBMANPATH\fP used by
-.\"O .BR man (1)
-.\"O to
-.\"O find manual pages, etc.)
-.BR sh (1)
-や他のプログラムが、フルパスで与えられなかった実行ファイルを検索するとき、
-ファイル名に前置されるディレクトリの配列。
-各ディレクトリは \(aq\fB:\fP\(aq によって区切られる。
-(同じようなものに、
-シェルがディレクトリ変更コマンドの変更先を探すために用いる
-\fBCDPATH\fP や、
-.BR man (1)
-がマニュアルページの検索に用いる \fBMANPATH\fP などがある。)
-.TP
-.B PWD
-.\"O The current working directory.
-.\"O Set by some shells.
+.TP 
+\fBHOME\fP
+ユーザのログインディレクトリ。 \fBlogin\fP(1)  がパスワードファイル \fBpasswd\fP(5)  から取得して設定する。
+.TP 
+\fBLANG\fP
+ロケールの各カテゴリで使用されるロケールの名前。\fBLC_ALL\fP や、 より狭い範囲を対象とする環境変数 (\fBLC_COLLATE\fP,
+\fBLC_CTYPE\fP, \fBLC_MESSAGES\fP, \fBLC_MONETARY\fP, \fBLC_NUMERIC\fP, \fBLC_TIME\fP など)
+によって上書きされることもある。 \fBlocale\fP(5)  を見よ。
+.TP 
+\fBPATH\fP
+\fBsh\fP(1)  や他のプログラムが、フルパスで与えられなかった実行ファイルを検索するとき、 ファイル名に前置されるディレクトリの配列。
+各ディレクトリは \(aq\fB:\fP\(aq によって区切られる。 (同じようなものに、 シェルがディレクトリ変更コマンドの変更先を探すために用いる
+\fBCDPATH\fP や、 \fBman\fP(1)  がマニュアルページの検索に用いる \fBMANPATH\fP などがある。)
+.TP 
+\fBPWD\fP
 現在のワーキングディレクトリ。いくつかのシェルが設定する。
-.TP
-.B SHELL
-.\"O The pathname of the user's login shell.
+.TP 
+\fBSHELL\fP
 ユーザーのログインシェルのパス名。
-.TP
-.B TERM
-.\"O The terminal type for which output is to be prepared.
+.TP 
+\fBTERM\fP
 端末の種類。出力はこれにあわせて用意される。
-.TP
-.B PAGER
-.\"O The user's preferred utility to display text files.
+.TP 
+\fBPAGER\fP
 テキストファイルを表示するユーテリティ。ユーザーが好みのものを設定する。
-.TP
-.BR EDITOR / VISUAL
-.\"O The user's preferred utility to edit text files.
-テキストファイルを編集するユーテリティ。ユーザーが好みのものを設定する。
+.TP 
+\fBEDITOR\fP/\fBVISUAL\fP
 .\" .TP
 .\" .B BROWSER
-.\"O .\" The user's preferred utility to browse URLs. Sequence of colon-separated
-.\"O .\" browser commands. See http://www.catb.org/~esr/BROWSER/ .
-.\" URL の閲覧に用いるユーティリティ。ユーザーが好みのものを設定する。
-.\" コロンで区切ってブラウザコマンドを並べる。
-.\" http://www.catb.org/~esr/BROWSER/ を見よ。
+.\" The user's preferred utility to browse URLs. Sequence of colon-separated
+.\" browser commands. See http://www.catb.org/~esr/BROWSER/ .
+テキストファイルを編集するユーテリティ。ユーザーが好みのものを設定する。
 .PP
-.\"O Further names may be placed in the environment by the \fIexport\fP
-.\"O command and "name=value" in
-.\"O .BR sh (1),
-.\"O or by the \fIsetenv\fP command if you use
-.\"O .BR csh (1).
-.\"O Arguments may also be placed in the
-.\"O environment at the point of an
-.\"O .BR exec (3).
-.\"O A C program can manipulate its environment using the functions
-.\"O .BR getenv (3),
-.\"O .BR putenv (3),
-.\"O .BR setenv (3),
-.\"O and
-.\"O .BR unsetenv (3).
-環境に名前を追加する場合には、
-.BR sh (1)
-では \fIexport\fP コマンドと "name=value" を使用する。
-.BR csh (1)
-では \fIsetenv\fP コマンドを使用する。
-.BR exec (3)
-の引数としても環境を設定することができる。
-C プログラムからは、
-.BR getenv (3),
-.BR putenv (3),
-.BR setenv (3),
-.BR unsetenv (3)
+環境に名前を追加する場合には、 \fBsh\fP(1)  では \fIexport\fP コマンドと "name=value" を使用する。 \fBcsh\fP(1)
+では \fIsetenv\fP コマンドを使用する。 \fBexec\fP(3)  の引数としても環境を設定することができる。 C プログラムからは、
+\fBgetenv\fP(3), \fBputenv\fP(3), \fBsetenv\fP(3), \fBunsetenv\fP(3)
 などの関数を用いて環境を扱うことができる。
 
-.\"O Note that the behavior of many programs and library routines is
-.\"O influenced by the presence or value of certain environment variables.
-.\"O A random collection:
-プログラムやライブラリルーチンの多くは、それぞれ適当な環境変数の存在
-や値によって、動作に影響を受けることがある。以下、適宜挙げてみよう。
+プログラムやライブラリルーチンの多くは、それぞれ適当な環境変数の存在 や値によって、動作に影響を受けることがある。以下、適宜挙げてみよう。
 .LP
-.\"O The variables
-.\"O .BR LANG ", " LANGUAGE ", " NLSPATH ", " LOCPATH ", "
-.\"O .BR LC_ALL ", " LC_MESSAGES ", "
-.\"O etc. influence locale handling, cf.
-.\"O .BR locale (5).
-.BR LANG ", " LANGUAGE ", " NLSPATH ", " LOCPATH ", "
-.BR LC_ALL ", " LC_MESSAGES ", "
-などの変数。ロケールの扱いに影響する。
-.BR locale (5)
-を見よ。
+\fBLANG\fP, \fBLANGUAGE\fP, \fBNLSPATH\fP, \fBLOCPATH\fP, \fBLC_ALL\fP, \fBLC_MESSAGES\fP,
+などの変数。ロケールの扱いに影響する。 \fBlocale\fP(5)  を見よ。
 .LP
-.\"O .B TMPDIR
-.\"O influences the path prefix of names created by
-.\"O .BR tmpnam (3)
-.\"O and other routines, the temporary directory used by
-.\"O .BR sort (1)
-.\"O and other programs, etc.
-.B TMPDIR
-は
-.BR tmpnam (3)
-などのルーチンによって作成されるファイル名に前置されるパスに影響する。また
-.BR sort (1)
+\fBTMPDIR\fP は \fBtmpnam\fP(3)  などのルーチンによって作成されるファイル名に前置されるパスに影響する。また \fBsort\fP(1)
 の一時ディレクトリに用いられたり、他のプログラムからも利用される。
 .LP
-.\"O .BR LD_LIBRARY_PATH ", " LD_PRELOAD
-.\"O and other LD_* variables influence
-.\"O the behavior of the dynamic loader/linker.
-.BR LD_LIBRARY_PATH ", " LD_PRELOAD
-などの LD_* 変数はダイナミックローダ・リンカの動作に影響する。
+\fBLD_LIBRARY_PATH\fP, \fBLD_PRELOAD\fP などの LD_* 変数はダイナミックローダ・リンカの動作に影響する。
 .LP
-.\"O .B POSIXLY_CORRECT
-.\"O makes certain programs and library routines follow
-.\"O the prescriptions of POSIX.
-.B POSIXLY_CORRECT
-が指定されると、ある種のプログラムやライブラリルーチンは
-POSIX の規定に従うようになる。
+\fBPOSIXLY_CORRECT\fP が指定されると、ある種のプログラムやライブラリルーチンは POSIX の規定に従うようになる。
 .LP
-.\"O The behavior of
-.\"O .BR malloc (3)
-.\"O is influenced by
-.\"O .B MALLOC_*
-.\"O variables.
-.BR malloc (3)
-の動作は
-.B MALLOC_*
-変数によって影響される。
+\fBmalloc\fP(3)  の動作は \fBMALLOC_*\fP 変数によって影響される。
 .LP
-.\"O The variable
-.\"O .B HOSTALIASES
-.\"O gives the name of a file containing aliases
-.\"O to be used with
-.\"O .BR gethostbyname (3).
-.B HOSTALIAS
-変数は、
-.BR gethostbyname (3)
-が用いるエイリアスが書かれているファイル名を与える。
+\fBHOSTALIAS\fP 変数は、 \fBgethostbyname\fP(3)  が用いるエイリアスが書かれているファイル名を与える。
 .LP
-.\"O .BR TZ " and " TZDIR
-.\"O give timezone information used by
-.\"O .BR tzset (3)
-.\"O and through that by functions like
-.\"O .BR ctime (3),
-.\"O .BR localtime (3),
-.\"O .BR mktime (3),
-.\"O .BR strftime (3).
-.\"O See also
-.\"O .BR tzselect (8).
-.BR TZ " と " TZDIR
-は
-.BR tzset (3)
-および、この関数を使う
-.BR ctime (3),
-.BR localtime (3),
-.BR mktime (3),
-.BR strftime (3)
-といった関数で用いられるタイムゾーンの情報を与える。
-.BR tzselect (8)
+\fBTZ\fP と \fBTZDIR\fP は \fBtzset\fP(3)  および、この関数を使う \fBctime\fP(3), \fBlocaltime\fP(3),
+\fBmktime\fP(3), \fBstrftime\fP(3)  といった関数で用いられるタイムゾーンの情報を与える。 \fBtzselect\fP(8)
 も参照のこと。
 .LP
-.\"O .B TERMCAP
-.\"O gives information on how to address a given terminal
-.\"O (or gives the name of a file containing such information).
-.B TERMCAP
-は、現在の端末情報の取得先
-(あるいはそのような情報が書かれているファイル名) を与える。
+\fBTERMCAP\fP は、現在の端末情報の取得先 (あるいはそのような情報が書かれているファイル名) を与える。
 .LP
-.\"O .BR COLUMNS " and " LINES
-.\"O tell applications about the window size, possibly overriding the actual size.
-.BR COLUMNS " と " LINES
-アプリケーションにウインドウのサイズを伝える。
-実際のサイズとは違う値を与えることもできる。
+\fBCOLUMNS\fP と \fBLINES\fP アプリケーションにウインドウのサイズを伝える。 実際のサイズとは違う値を与えることもできる。
 .LP
-.\"O .BR PRINTER " or " LPDEST
-.BR PRINTER " または " LPDEST
-.\"O may specify the desired printer to use.
-.\"O See
-.\"O .BR lpr (1).
-用いたいプリンタを指定する。
-.BR lpr (1)
-を参照のこと。
+\fBPRINTER\fP または \fBLPDEST\fP 用いたいプリンタを指定する。 \fBlpr\fP(1)  を参照のこと。
 .LP
-.\"O Etc.
 などなど...
-.\"O .SH BUGS
 .SH バグ
-.\"O Clearly there is a security risk here.
-.\"O Many a system command has been
-.\"O tricked into mischief by a user who specified unusual values for
-.\"O .BR IFS " or " LD_LIBRARY_PATH .
-これらの中には、明らかにセキュリティ上の危険が存在する。
-ユーザーが
-.BR IFS " や " LD_LIBRARY_PATH
-に異常な値を与えたことによって、
-これまで多くのシステムコマンドがだまされて、
-システムをひどい目にあわせてきた。
+これらの中には、明らかにセキュリティ上の危険が存在する。 ユーザーが \fBIFS\fP や \fBLD_LIBRARY_PATH\fP
+に異常な値を与えたことによって、 これまで多くのシステムコマンドがだまされて、 システムをひどい目にあわせてきた。
 
-.\"O There is also the risk of name space pollution.
-.\"O Programs like
-.\"O .I make
-.\"O and
-.\"O .I autoconf
-.\"O allow overriding of default utility names from the
-.\"O environment with similarly named variables in all caps.
-.\"O Thus one uses
-.\"O .B CC
-.\"O to select the desired C compiler (and similarly
-.\"O .BR MAKE ,
-.\"O .BR AR ,
-.\"O .BR AS ,
-.\"O .BR FC ,
-.\"O .BR LD ,
-.\"O .BR LEX ,
-.\"O .BR RM ,
-.\"O .BR YACC ,
-.\"O etc.).
-名前空間が汚染される危険性も存在する。
-.I make
-や
-.I autoconf
-のようなプログラムでは、デフォルトのユーティリティを
-環境にある似たような名前の変数で上書きすることができる
-(通常はすべて大文字の変数を用いる)。
-すなわち、利用したい C コンパイラは
-.B CC
-で選択できる。また同様に
-.BR MAKE ,
-.BR AR ,
-.BR AS ,
-.BR FC ,
-.BR LD ,
-.BR LEX ,
-.BR RM ,
-.B YACC
-なども用いることができる。
-.\"O However, in some traditional uses such an environment variable
-.\"O gives options for the program instead of a pathname.
-.\"O Thus, one has
-.\"O .BR MORE ,
-.\"O .BR LESS ,
-.\"O and
-.\"O .BR GZIP .
-.\"O Such usage is considered mistaken, and to be avoided in new
-.\"O programs.
-.\"O The authors of
-.\"O .I gzip
-.\"O should consider renaming their option to
-.\"O .BR GZIP_OPT .
-ところが一方では、このような変数を
-(パス名ではなく)
-プログラムに対するオプションとして扱うような流儀も存在してきた。
-例えば
-.BR MORE ,
-.BR LESS ,
-.B GZIP
-などがそうである。
-このような利用法は間違っていると考えるべきで、
-新しいプログラムでは避けるべきである。
-.I gzip
-の作者たちは、オプションを与える環境変数を
-.B GZIP_OPT
+名前空間が汚染される危険性も存在する。 \fImake\fP や \fIautoconf\fP のようなプログラムでは、デフォルトのユーティリティを
+環境にある似たような名前の変数で上書きすることができる (通常はすべて大文字の変数を用いる)。 すなわち、利用したい C コンパイラは \fBCC\fP
+で選択できる。また同様に \fBMAKE\fP, \fBAR\fP, \fBAS\fP, \fBFC\fP, \fBLD\fP, \fBLEX\fP, \fBRM\fP, \fBYACC\fP
+なども用いることができる。 ところが一方では、このような変数を (パス名ではなく)  プログラムに対するオプションとして扱うような流儀も存在してきた。
+例えば \fBMORE\fP, \fBLESS\fP, \fBGZIP\fP などがそうである。 このような利用法は間違っていると考えるべきで、
+新しいプログラムでは避けるべきである。 \fIgzip\fP の作者たちは、オプションを与える環境変数を \fBGZIP_OPT\fP
 に改名することを考えるほうがよい。
-.\"O .SH "SEE ALSO"
 .SH 関連項目
-.BR bash (1),
-.BR csh (1),
-.BR login (1),
-.BR sh (1),
-.BR tcsh (1),
-.BR execve (2),
-.BR clearenv (3),
-.BR exec (3),
-.BR getenv (3),
-.BR putenv (3),
-.BR setenv (3),
-.BR unsetenv (3),
-.BR locale (5)
+\fBbash\fP(1), \fBcsh\fP(1), \fBlogin\fP(1), \fBsh\fP(1), \fBtcsh\fP(1), \fBexecve\fP(2),
+\fBclearenv\fP(3), \fBexec\fP(3), \fBgetenv\fP(3), \fBputenv\fP(3), \fBsetenv\fP(3),
+\fBunsetenv\fP(3), \fBlocale\fP(5)
diff --git a/draft/man7/feature_test_macros.7 b/draft/man7/feature_test_macros.7
new file mode 100644 (file)
index 0000000..7c2204a
--- /dev/null
@@ -0,0 +1,400 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" This manpage is Copyright (C) 2006, Michael Kerrisk
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH FEATURE_TEST_MACROS 7 2012\-01\-18 Linux "Linux Programmer's Manual"
+.SH 名前
+feature_test_macros \- 機能検査マクロ
+.SH 書式
+.nf
+\fB#include <features.h>\fP
+.fi
+.SH 説明
+機能検査マクロ (feature test macro) により、プログラマは プログラムがコンパイルされる際にシステムのヘッダファイルにより
+公開される定義を制御することができる。
+
+\fB注意:\fP 機能検査マクロを機能させるには、機能検査マクロの定義を 「どのヘッダファイルのインクルードよりも前で」行わなければならない。
+これを実現するには、 コンパイルコマンドで指定する方法 (\fIcc \-DMACRO=value\fP)  と、ソースコード内で必要なマクロの定義を
+どのヘッダのインクルードよりも前で行う方法がある。
+
+機能検査マクロを使うと、非標準の定義が公開されないようにでき、 移植性のあるアプリケーションを作成するのに役立つ。
+他のマクロを使うと、デフォルトでは公開されない非標準の定義を 公開することができる。 以下で説明する機能検査マクロのそれぞれの正確な影響を確認するには、
+ヘッダファイル \fI<features.h>\fP を調べればよい。
+.SS マニュアルページでの機能検査マクロの要件の規定
+関数が機能検査マクロの定義を必要とする場合、 マニュアルページの書式 (SYNOPSIS) の節に 以下の形式の注釈を入れる (以下の例は
+\fBacct\fP(2)  のマニュアルページからの引用である)。
+.RS 8
+.sp
+\fB#include <unistd.h>\fP
+.sp
+\fBint acct(const char *\fP\fIfilename\fP\fB);\fP
+.sp
+.nf
+.in -4n
+glibc 向けの機能検査マクロの要件
+(\fBfeature_test_macros\fP(7)
+参照):
+.fi
+.in
+.sp
+\fBacct\fP(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.RE
+.PP
+\fB||\fP は、 \fBacct\fP(2)  の定義を \fI<unistd.h>\fP
+から得るには、以下のマクロの定義のいずれかを、どのヘッダファイルの インクルードよりも前で行わなければならないことを意味する。
+.RS
+.nf
+
+#define _BSD_SOURCE
+#define _XOPEN_SOURCE        /* or any value < 500 */
+.fi
+.RE
+.PP
+別の方法としては、等価な定義をコンパイル用のコマンドで 指定することもできる。
+.RS
+.nf
+
+cc \-D_BSD_SOURCE
+cc \-D_XOPEN_SOURCE           # Or any value < 500
+.fi
+.RE
+.PP
+後で述べるが、 \fB「いくつかの機能検査マクロはデフォルトで定義される」\fP 点に注意すること。 このため、「書式」に記載された機能検査マクロを常に
+明示的に指定する必要があるわけではない。
+
+あまり多くないが、マニュアルページによっては、 機能検査マクロの要件を以下のように簡単な表現で記載する場合がある。 (以下の例は
+\fBreadahead\fP(2)  のマニュアルページからの引用である)。
+.RS
+.nf
+
+\fB#define _GNU_SOURCE\fP
+\fB#include <fcntl.h>\fP
+.sp
+\fBssize_t readahead(int \fP\fIfd\fP\fB, off64_t *\fP\fIoffset\fP\fB, size_t \fP\fIcount\fP\fB);\fP
+.fi
+.RE
+.PP
+関数定義の公開に使える機能検査マクロが一つだけで、 デフォルトではそのマクロが定義されない場合に、 この形式の表現を利用する。
+.SS "glibc が解釈する機能検査マクロ"
+.\" The details in glibc 2.0 are simpler, but combining a
+.\" a description of them with the details in later glibc versions
+.\" would make for a complicated description.
+以下では、Linux glibc 2.\fIx\fP (\fIx\fP > 0) において、 機能検査マクロがどのように扱われるかを説明する。
+
+Linux/glibc は以下の機能検査マクロを解釈する:
+.TP 
+\fB__STRICT_ANSI__\fP
+ISO 標準の C。 \fBgcc\fP(1)  を \fI\-std=c99\fP や \fI\-ansi\fP などのフラグを付けて起動した場合、
+このマクロは暗黙のうちに定義される。
+.TP 
+\fB_POSIX_C_SOURCE\fP
+このマクロを定義すると、ヘッダファイルで以下の定義が公開される。
+.RS
+.IP \(bu 3
+値が 1 の場合、POSIX.1\-1990 と ISO C (1990) に準拠する定義が公開される。
+.IP \(bu
+値が 2 以上の場合、 POSIX.2\-1992 関連の定義も追加で公開される。
+.IP \(bu
+.\" 199506L functionality is only available since glibc 2.1
+値が 199309 以上の場合、 POSIX.1b (リアルタイム拡張) 関連の定義が追加で公開される。
+.IP \(bu
+値が 199506 以上の場合、 POSIX.1c (スレッド) 関連の定義が追加で公開される。
+.IP \(bu
+(glibc 2.3.3 以降)  値が 200112L 以上の場合、 (XSI 拡張を除く) POSIX.1\-2001
+基本仕様に対応する定義が公開される。
+.IP \(bu
+(glibc 2.10 以降)  値が 200809L 以上の場合、 (XSI 拡張を除く) POSIX.1\-2008
+基本仕様に対応する定義が公開される。
+.RE
+.TP 
+\fB_POSIX_SOURCE\fP
+このマクロは廃止予定である。 このマクロが定義されると、値に関わらず、 \fB_POSIX_C_SOURCE\fP を値 1 で定義するのと等価となる。
+.TP 
+\fB_XOPEN_SOURCE\fP
+このマクロを定義すると、ヘッダファイルで以下の定義が公開される。
+.RS
+.IP \(bu 3
+どんな値でも、ヘッダファイルで POSIX.1, POSIX.2, XPG4 に準拠する定義が公開される。
+.IP \(bu
+値が 500 以上の場合、 SUSv2 (UNIX 98) 関連の定義が追加で公開される。
+.IP \(bu
+(glibc 2.2 以降)  値が 600 以上の場合、 SUSv3 (UNIX 03; POSIX.1\-2001 基本仕様 + XSI 拡張と同じ)
+関連の定義と C99 での定義が追加で公開される。
+.IP \(bu
+(glibc 2.10 以降)  値が 700 以上の場合、 SUSv4 (POSIX.1\-2008 基本仕様 + XSI 拡張と同じ)
+関連の定義が追加で公開される。
+.RE
+.TP 
+\fB_XOPEN_SOURCE_EXTENDED\fP
+このマクロが定義され、さらに \fB_XOPEN_SOURCE\fP が定義されていると、XPG4v2 (SUSv1) UNIX 拡張 (UNIX 95)
+に対応する定義が公開される。 \fB_XOPEN_SOURCE\fP が 500 以上の値で定義された場合、このマクロは暗黙のうちに定義される。
+.TP 
+\fB_ISOC95_SOURCE\fP
+ISO C (1990) Amendment 1 の定義 (C95 としても知られる) が公開される。
+C95 における主要な変更点は国際化文字集合のサポートであった。
+C95 の変更点は、これに続く C99 標準にも含まれた
+(言い換えると、\fB_ISOC99_SOURCE\fP を定義すると暗黙のうちに \fB_ISOC95_SOURCE\fP
+を定義されることを意味する)。
+.TP 
+\fB_ISOC99_SOURCE\fP
+ISO C (1990) の C99 拡張を公開する。 このマクロは glibc 2.1.3 以降で認識される。 初期のバージョン 2.1.x の
+glibc では、これと等価な \fB_ISOC9X_SOURCE\fP という名前のマクロが使われていた (なぜなら、C99
+標準はまだ確定していなかったからである)。 \fB_ISOC9X_SOURCE\fP マクロの使用は廃止されているが、 glibc
+は過去との互換性のため今でもこのマクロを認識する。
+.TP 
+\fB_ISOC11_SOURCE\fP
+ISO C11 標準に準拠した宣言を公開する。
+このマクロは glibc 2.16 以降で認識される。
+.TP 
+\fB_LARGEFILE64_SOURCE\fP
+LFS (Large File Summit) により "暫定拡張 (transitional extension)" Single UNIX
+Specification として規定された代替 API (alternative API) に関する定義を公開する
+(http://opengroup.org/platform/lfs.html 参照)。 代替 API は新規オブジェクト (関数と型)
+の集合で構成され、 その名前は "64" で終わる (例えば、 \fIoff_t\fP に対応するのは \fIoff64_t\fP、 \fBlseek\fP()
+に対応するのは \fBlseek64\fP()  である)。 新しいプログラムではこのインタフェースを利用しないこと。 代わりに
+\fI_FILE_OFFSET_BITS=64\fP を利用すること。
+.TP 
+\fB_FILE_OFFSET_BITS\fP
+このマクロを値 64 で定義すると、ファイル I/O とファイルシステム操作に 関連する 32 ビット版の関数とデータタイプは自動的に 64 ビット版に
+変換される。 これは、32 ビットシステムで大きなファイル (> 2 ギガバイト) の I/O を実行する際に役立つ
+(このマクロを定義すると、コンパイルし直すだけで大きなファイルを 扱えるプログラムを書くことができる)。 64 ビットシステムは、もともと 2
+ギガバイトより大きなファイルを 扱えるので、64 ビットシステムではこのマクロは効果を持たない。
+.TP 
+\fB_BSD_SOURCE\fP
+このマクロを定義すると (値に関わらず) ヘッダファイルで BSD 由来の定義が公開される。
+また、このマクロを定義すると、相容れない標準が存在する状況において BSD 由来の定義を優先するようになる。 ただし、 \fB_SVID_SOURCE\fP,
+\fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP, \fB_XOPEN_SOURCE\fP,
+\fB_XOPEN_SOURCE_EXTENDED\fP, \fB_GNU_SOURCE\fP が一つでも定義された場合には、BSD 由来の定義は優先されなくなる。
+.TP 
+\fB_SVID_SOURCE\fP
+このマクロを定義すると (値に関わらず) ヘッダファイルで System V 由来の定義が公開される (SVID == System V
+Interface Definition; \fBstandards\fP(7)  参照)。
+.TP 
+\fB_ATFILE_SOURCE\fP (glibc 2.4 以降)
+このマクロを定義すると (値に関わらず) ヘッダファイルで 名前の末尾が "at" の各種の関数の定義が公開される。 \fBopenat\fP(2)  参照。
+glibc 2.10 以降では、 \fB_POSIX_C_SOURCE\fP が 200809L 以上の値で定義された場合には、
+このマクロも暗黙のうちに定義される。
+.TP 
+\fB_GNU_SOURCE\fP
+このマクロを定義すると (値に関わらず) 以下のマクロを定義するのと 等価になる: \fB_BSD_SOURCE\fP, \fB_SVID_SOURCE\fP,
+\fB_ATFILE_SOURCE\fP, \fB_LARGEFILE64_SOURCE\fP, \fB_ISOC99_SOURCE\fP,
+\fB_XOPEN_SOURCE_EXTENDED\fP, \fB_POSIX_SOURCE\fP, 値 200809L の \fB_POSIX_C_SOURCE\fP
+(バージョン 2.10 より前の glibc では値は 200112L、 バージョン 2.5 より前の glibc では値は 199506L、
+バージョン 2.1 より前の glibc では値は 199309L), 値 700 の \fB_XOPEN_SOURCE\fP (バージョン 2.10
+より前の glibc では値は 600、 バージョン 2.2 より前の glibc では値は 500)。 さらに、各種の GNU
+固有の拡張も公開される。 指定された標準に矛盾があった場合は、 BSD 由来の定義が優先されなくなる。
+.TP 
+\fB_REENTRANT\fP
+このマクロを定義すると、いくつかのリエントラント (再入可能) な関数 定義が公開される。マルチスレッド・プログラムでは、この代わりに \fIcc\ \-pthread\fP を使用すること。
+.TP 
+\fB_THREAD_SAFE\fP
+\fB_REENTRANT\fP の同義語。 他のいくつかの実装との互換性を提供するためのもの。
+.TP 
+\fB_FORTIFY_SOURCE\fP (glibc 2.3.4 以降)
+.\" For more detail, see:
+.\" http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
+.\" [PATCH] Object size checking to prevent (some) buffer overflows
+.\" * From: Jakub Jelinek <jakub at redhat dot com>
+.\" * To: gcc-patches at gcc dot gnu dot org
+.\" * Date: Tue, 21 Sep 2004 04:16:40 -0400
+このマクロを定義すると、文字列やメモリの操作を行う様々な関数を 使用する際にバッファオーバーフローを検出するための軽めのチェックが
+実行されるようになる。すべてのバッファオーバーフローが検出される わけではなく、あくまでよくある例についてだけである。
+現在の実装では、以下の関数にチェックが追加されている: \fBmemcpy\fP(3), \fBmempcpy\fP(3), \fBmemmove\fP(3),
+\fBmemset\fP(3), \fBstpcpy\fP(3), \fBstrcpy\fP(3), \fBstrncpy\fP(3), \fBstrcat\fP(3),
+\fBstrncat\fP(3), \fBsprintf\fP(3), \fBsnprintf\fP(3), \fBvsprintf\fP(3),
+\fBvsnprintf\fP(3), \fBgets\fP(3).  \fB_FORTIFY_SOURCE\fP が 1 に設定された場合、コンパイラの最適化レベルが
+1 (\fIgcc\ \-O1\fP)  かそれ以上であれば、規格に準拠するプログラムの振る舞いを 変化させないようなチェックが実行される。
+\fB_FORTIFY_SOURCE\fP が 2 に設定された場合、さらなるチェックが追加されるが、
+規格に準拠するプログラムのいくつかが失敗する可能性がある。 いくつかのチェックはコンパイル時に実行でき、コンパイラの警告として
+表示される。他のチェックは実行時に行われ、チェックに失敗した場合 には実行時エラーとなる。 このマクロを使用するにはコンパイラの対応が必要であり、
+バージョン 4.0 以降の \fBgcc\fP(1)  で利用できる。
+.SS デフォルトの定義、暗黙の定義、組み合わせ定義
+.PP
+機能検査マクロが一つも明示的に定義されなかった場合、 デフォルトで機能検査マクロ \fB_BSD_SOURCE\fP, \fB_SVID_SOURCE\fP,
+\fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP=200809L が定義される (バージョン 2.10 より前の glibc
+では値は 200112L、 バージョン 2.4 より前の glibc では値は 199506L、 バージョン 2.1 より前の glibc では値は
+199309L)。
+.PP
+\fB__STRICT_ANSI__\fP, \fB_ISOC99_SOURCE\fP, \fB_POSIX_SOURCE\fP, \fB_POSIX_C_SOURCE\fP,
+\fB_XOPEN_SOURCE\fP, \fB_XOPEN_SOURCE_EXTENDED\fP, \fB_BSD_SOURCE\fP, \fB_SVID_SOURCE\fP
+のいずれかが明示的に定義された場合、 \fB_BSD_SOURCE\fP と \fB_SVID_SOURCE\fP はデフォルトでは定義されない。
+
+\fB_POSIX_SOURCE\fP と \fB_POSIX_C_SOURCE\fP が明示的に定義されない場合で、 \fB__STRICT_ANSI__\fP
+が定義されない、もしくは \fB_XOPEN_SOURCE\fP が 500 以上の値で定義されたときには、
+.RS 3
+.IP * 3
+\fB_POSIX_SOURCE\fP が値 1 で定義され、かつ
+.IP *
+\fB_POSIX_C_SOURCE\fP は以下の値のいずれか一つで定義される。
+.RS 6
+.IP \(bu 3
+2 (\fB_XOPEN_SOURCE\fP が 500 未満の値で定義された場合)
+.IP \(bu
+199506L (\fB_XOPEN_SOURCE\fP が 500 以上 600 未満の値で定義された場合)
+.IP \(bu
+(glibc 2.4 以降)  200112L (\fBXOPEN_SOURCE\fP が 600 以上 700 未満の値で定義された場合)
+.IP \(bu
+(glibc 2.10 以降)  200809L (\fBXOPEN_SOURCE\fP が 700 以上の値で定義された場合)
+.IP \(bu
+古いバージョンの glibc では \fB_POSIX_C_SOURCE\fP の値として 200112L や 200809L は存在せず、
+\fB_POSIX_C_SOURCE\fP の値がどうなるかは glibc のバージョンにより異なる。
+.IP \(bu
+\fB_XOPEN_SOURCE\fP が未定義の場合、 \fB_POSIX_C_SOURCE\fP の値は glibc のバージョンにより異なる。 バージョン
+2.4 より前の glibc では 199506L、 バージョン 2.4 以降 2.9 未満では 200112L、 glibc 2.10 以降では
+200809L となる。
+.RE
+.RE
+.PP
+また、複数のマクロを定義することもできる。 この場合、定義したマクロはすべて有効になる。
+.SH 準拠
+POSIX.1 では \fB_POSIX_C_SOURCE\fP, \fB_POSIX_SOURCE\fP, \fB_XOPEN_SOURCE\fP が規定されている。
+\fB_XOPEN_SOURCE_EXTENDED\fP は XPG4v2 (別名 SUSv1) で規定されていた。
+
+\fB_FILE_OFFSET_BITS\fP はどの標準でも規定されていないが、 他のいくつかの実装で採用されている。
+
+\fB_BSD_SOURCE\fP, \fB_SVID_SOURCE\fP, \fB_ATFILE_SOURCE\fP, \fB_GNU_SOURCE\fP,
+\fB_FORTIFY_SOURCE\fP, \fB_REENTRANT\fP, \fB_THREAD_SAFE\fP は Linux (glibc) 固有である。
+.SH 注意
+\fI<features.h>\fP は Linux/glibc 固有のヘッダファイルである。
+他のシステムにも同様の目的のファイルがあるが、普通は違う名前である。 このヘッダファイルは、他のヘッダファイルにより必要に応じて
+自動的にインクルードされる。機能検査マクロを利用するために 明示的にインクルードする必要はない。
+
+上記の機能検査マクロのうちどれが定義されたかにしたがって、 \fI<features.h>\fP は、他の glibc
+ヘッダファイルでチェックされる各種の他のマクロを、 内部で定義する。これらのマクロの名前はアンダースコア 2つで始まる (例えば
+\fB__USE_MISC\fP)。 ユーザプログラムはこれらのマクロを \fI決して\fP 直接定義すべきではない。
+代わりに、上記のリストにある適切な機能検査マクロを利用すべきである。
+.SH 例
+下記のプログラムを使うと、各種の機能検査マクロが glibc のバージョン に応じてどのように設定されるかや、どの機能検査マクロが明示的に
+設定されるか、を調べることができる。 以下に示すシェル・セッションは、 glibc 2.10 のシステムでの実行結果の例である。
+.in +4n
+.nf
+
+$ \fBcc ftm.c\fP
+$ \fB./a.out\fP
+_POSIX_SOURCE defined
+_POSIX_C_SOURCE defined: 200809L
+_BSD_SOURCE defined
+_SVID_SOURCE defined
+_ATFILE_SOURCE defined
+$ \fBcc \-D_XOPEN_SOURCE=500 ftm.c\fP
+$ \fB./a.out\fP
+_POSIX_SOURCE defined
+_POSIX_C_SOURCE defined: 199506L
+_XOPEN_SOURCE defined: 500
+$ \fBcc \-D_GNU_SOURCE ftm.c\fP
+$ \fB./a.out\fP
+_POSIX_SOURCE defined
+_POSIX_C_SOURCE defined: 200809L
+_ISOC99_SOURCE defined
+_XOPEN_SOURCE defined: 700
+_XOPEN_SOURCE_EXTENDED defined
+_LARGEFILE64_SOURCE defined
+_BSD_SOURCE defined
+_SVID_SOURCE defined
+_ATFILE_SOURCE defined
+_GNU_SOURCE defined
+.fi
+.in
+.SS "Program source"
+\&
+.nf
+/* ftm.c */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+int
+main(int argc, char *argv[])
+{
+#ifdef _POSIX_SOURCE
+    printf("_POSIX_SOURCE defined\en");
+#endif
+
+#ifdef _POSIX_C_SOURCE
+    printf("_POSIX_C_SOURCE defined: %ldL\en", (long) _POSIX_C_SOURCE);
+#endif
+
+#ifdef _ISOC99_SOURCE
+    printf("_ISOC99_SOURCE defined\en");
+#endif
+
+#ifdef _XOPEN_SOURCE
+    printf("_XOPEN_SOURCE defined: %d\en", _XOPEN_SOURCE);
+#endif
+
+#ifdef _XOPEN_SOURCE_EXTENDED
+    printf("_XOPEN_SOURCE_EXTENDED defined\en");
+#endif
+
+#ifdef _LARGEFILE64_SOURCE
+    printf("_LARGEFILE64_SOURCE defined\en");
+#endif
+
+#ifdef _FILE_OFFSET_BITS
+    printf("_FILE_OFFSET_BITS defined: %d\en", _FILE_OFFSET_BITS);
+#endif
+
+#ifdef _BSD_SOURCE
+    printf("_BSD_SOURCE defined\en");
+#endif
+
+#ifdef _SVID_SOURCE
+    printf("_SVID_SOURCE defined\en");
+#endif
+
+#ifdef _ATFILE_SOURCE
+    printf("_ATFILE_SOURCE defined\en");
+#endif
+
+#ifdef _GNU_SOURCE
+    printf("_GNU_SOURCE defined\en");
+#endif
+
+#ifdef _REENTRANT
+    printf("_REENTRANT defined\en");
+#endif
+
+#ifdef _THREAD_SAFE
+    printf("_THREAD_SAFE defined\en");
+#endif
+
+#ifdef _FORTIFY_SOURCE
+    printf("_FORTIFY_SOURCE defined\en");
+#endif
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBlibc\fP(7), \fBstandards\fP(7)
+.sp
+.\" But beware: the info libc document is out of date (Jul 07, mtk)
+\fIinfo libc\fP の "Feature Test Macros" の節。
+.sp
+\fI/usr/include/features.h\fP
index 58d1471..1693cba 100644 (file)
 .\" 990620 - page created - aeb@cwi.nl
 .\"
 .\" FIXME . Add example programs to this page?
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 1999 HANATAKA Shinya
-.\"         all rights reserved.
-.\" Translated Wed Jan  5 23:35:27 JST 2000
-.\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH FIFO 7 2008-12-03 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.TH FIFO 7 2008\-12\-03 Linux "Linux Programmer's Manual"
 .SH 名前
 fifo \- 先入先出特殊ファイル、名前付きパイプ
-.\"O .SH DESCRIPTION
-.SH 書式
-.\"O A FIFO special file (a named pipe) is similar to a pipe,
-.\"O except that it is accessed as part of the file system.
-.\"O It can be opened by multiple processes for reading or
-.\"O writing.
-.\"O When processes are exchanging data via the FIFO,
-.\"O the kernel passes all data internally without writing it
-.\"O to the file system.
-.\"O Thus, the FIFO special file has no
-.\"O contents on the file system; the file system entry merely
-.\"O serves as a reference point so that processes can access
-.\"O the pipe using a name in the file system.
-FIFO 特殊ファイル(名前付きパイプ)はパイプに似ているが、
-ファイルシステムの一部に関連付けられている点が異っている。
-複数のプロセスが読み込みや書き込みのためにオープンすること
-ができる。プロセスが FIFO を通しデータを交換する場合、
-実際にそれをファイルシステムには書き込まず、カーネルは全ての
-データを内部的に渡す。このように、FIFO 特殊ファイルはファイルシステム
-上には内容を持たないので、ファイルシステムのエントリは
-プロセスがそのファイルシステム上の名前を使用してそのパイプに
+.SH 説明
+FIFO 特殊ファイル(名前付きパイプ)はパイプに似ているが、 ファイルシステムの一部に関連付けられている点が異っている。
+複数のプロセスが読み込みや書き込みのためにオープンすること ができる。プロセスが FIFO を通しデータを交換する場合、
+実際にそれをファイルシステムには書き込まず、カーネルは全ての データを内部的に渡す。このように、FIFO 特殊ファイルはファイルシステム
+上には内容を持たないので、ファイルシステムのエントリは プロセスがそのファイルシステム上の名前を使用してそのパイプに
 アクセスできるように参照ポイントを提供しているに過ぎない。
 .PP
-.\"O The kernel maintains exactly one pipe object for each
-.\"O FIFO special file that is opened by at least one process.
-.\"O The FIFO must be opened on both ends (reading and writing)
-.\"O before data can be passed.
-.\"O Normally, opening the FIFO blocks
-.\"O until the other end is opened also.
-カーネルは、少なくとも一つのプロセスによってオープンされている
-FIFO 特殊ファイルについて、それぞれ一つのパイプのみを管理している。
-データが渡される前にその FIFO の両端(書き込みと読み出し)がオープン
-されていなければならない。通常、FIFO をオープンすると、
+カーネルは、少なくとも一つのプロセスによってオープンされている FIFO 特殊ファイルについて、それぞれ一つのパイプのみを管理している。
+データが渡される前にその FIFO の両端(書き込みと読み出し)がオープン されていなければならない。通常、FIFO をオープンすると、
 その反対側がオープンされるまで停止(block)させられる。
 .PP
-.\"O A process can open a FIFO in nonblocking mode.
-.\"O In this
-.\"O case, opening for read only will succeed even if no-one has
-.\"O opened on the write side yet, opening for write only will
-.\"O fail with
-.\"O .B ENXIO
-.\"O (no such device or address) unless the other
-.\"O end has already been opened.
 プロセスは FIFO を非停止(nonblocking)モードでオープンすることもできる。
-この場合、読み込み専用でオープンした場合には書き込み側を誰もオープン
-していなくても成功する。書き込み専用でオープンした場合は反対側が既に
-オープンされていなければ
-.B ENXIO
-(そのようなデバイスまたはアドレスは存在しない)
-というエラーで失敗する。
+この場合、読み込み専用でオープンした場合には書き込み側を誰もオープン していなくても成功する。書き込み専用でオープンした場合は反対側が既に
+オープンされていなければ \fBENXIO\fP (そのようなデバイスまたはアドレスは存在しない)  というエラーで失敗する。
 .PP
-.\"O Under Linux, opening a FIFO for read and write will succeed
-.\"O both in blocking and nonblocking mode.
-.\"O POSIX leaves this
-.\"O behavior undefined.
-.\"O This can be used to open a FIFO for
-.\"O writing while there are no readers available.
-.\"O A process
-.\"O that uses both ends of the connection in order to communicate
-.\"O with itself should be very careful to avoid deadlocks.
-Linux では、FIFO を読み込みと書き込み両用にオープンした場合、
-停止、非停止のどちらのモードでも成功する。POSIX ではこの場合の
-動作は定義されていない。これは読み込み側がいない時に書き込み用に
-オープンするために使用することができる。自分自身と通信するために
-両端を使用するプロセスはデッドロックを避けるために非常に注意深く
-なければならない。
-.\"O .SH NOTES
+Linux では、FIFO を読み込みと書き込み両用にオープンした場合、 停止、非停止のどちらのモードでも成功する。POSIX ではこの場合の
+動作は定義されていない。これは読み込み側がいない時に書き込み用に オープンするために使用することができる。自分自身と通信するために
+両端を使用するプロセスはデッドロックを避けるために非常に注意深く なければならない。
 .SH 注意
-.\"O When a process tries to write to a FIFO that is not opened
-.\"O for read on the other side, the process is sent a
-.\"O .B SIGPIPE
-.\"O signal.
-プロセスが、反対の読み込み側がオープンされていない FIFO を
-書き込みのためにオープンしようとした場合、そのプロセスに
-.B SIGPIPE
+プロセスが、反対の読み込み側がオープンされていない FIFO を 書き込みのためにオープンしようとした場合、そのプロセスに \fBSIGPIPE\fP
 シグナルが送られる。
 
-.\"O FIFO special files can be created by
-.\"O .BR mkfifo (3),
-.\"O and are indicated by
-.\"O .IR "ls \-l"
-.\"O with the file type \(aqp\(aq.
-FIFO 特殊ファイルは
-.BR mkfifo (3)
-で作成することができ、
-.IR "ls \-l"
-ではファイル種別 \(aqp\(aq で表示される。
-.\"O .SH "SEE ALSO"
+FIFO 特殊ファイルは \fBmkfifo\fP(3)  で作成することができ、 \fIls \-l\fP ではファイル種別 \(aqp\(aq で表示される。
 .SH 関連項目
-.BR mkfifo (1),
-.BR open (2),
-.BR pipe (2),
-.BR sigaction (2),
-.BR signal (2),
-.BR socketpair (2),
-.BR mkfifo (3),
-.BR pipe (7)
+\fBmkfifo\fP(1), \fBopen\fP(2), \fBpipe\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2),
+\fBsocketpair\fP(2), \fBmkfifo\fP(3), \fBpipe\fP(7)
index 0e316bc..92815c7 100644 (file)
 .\"
 .\" 2003-08-24 fix for / by John Kristoff + joey
 .\"
-.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved.
-.\" Translated Wed 12 Aug 1998 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated 2003-09-28 by NAKANO Takeo
+.\"*******************************************************************
 .\"
-.\"WORD:       wild card pattern       ワイルドカードパターン
-.\"WORD:       character class         文字クラス
-.\"WORD:       range                   領域指定
-.\"WORD:       complementation         補集合
-.\"WORD:       regular expression      正規表現
-.\"WORD:       bracket expression      ブラケット表現
-.\"WORD:       collating sequence      照合順序
-.\"WORD:       collating element       照合順序の要素
-.\"WORD:       current locale          カレントロケール
-.\"WORD:       equivalence class       等価クラス
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH GLOB 7 2003-08-24 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.TH GLOB 7 2003\-08\-24 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O glob \- Globbing pathnames
 glob \- パス名を glob する
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O Long ago, in UNIX V6, there was a program
-.\"O .I /etc/glob
-.\"O that would expand wildcard patterns.
-.\"O Soon afterward this became a shell built-in.
-昔々 UNIX V6 では、ワイルドカードパターンを展開する
-.I /etc/glob
-と言うプログラムがあった。その後すぐに、
+昔々 UNIX V6 では、ワイルドカードパターンを展開する \fI/etc/glob\fP と言うプログラムがあった。その後すぐに、
 この機能はシェルに組み込まれるようになった。
 
-.\"O These days there is also a library routine
-.\"O .BR glob (3)
-.\"O that will perform this function for a user program.
-今日では、この機能をユーザープログラムからも実行できるよう、
-.BR glob (3)
-というライブラリルーチンも存在している。
+今日では、この機能をユーザープログラムからも実行できるよう、 \fBglob\fP(3)  というライブラリルーチンも存在している。
 
-.\"O The rules are as follows (POSIX.2, 3.13).
 glob の規則を以下に述べる (POSIX.2 3.13)。
-.\"O .SS "Wildcard Matching"
 .SS ワイルドカードマッチ
-.\"O A string is a wildcard pattern if it contains one of the
-.\"O characters \(aq?\(aq, \(aq*\(aq or \(aq[\(aq.
-.\"O Globbing is the operation
-.\"O that expands a wildcard pattern into the list of pathnames
-.\"O matching the pattern.
-.\"O Matching is defined by:
-文字列に \(aq?\(aq, \(aq*\(aq, \(aq[\(aq が含まれていると、
-それはワイルドカードパターンとみなされる。
-「glob する」というのは、ワイルドカードパターンを展開して、
-そのパターンにマッチするパス名のリストを得ることである。
-マッチは以下のように定義される。
+文字列に \(aq?\(aq, \(aq*\(aq, \(aq[\(aq が含まれていると、 それはワイルドカードパターンとみなされる。 「glob
+する」というのは、ワイルドカードパターンを展開して、 そのパターンにマッチするパス名のリストを得ることである。 マッチは以下のように定義される。
 
-.\"O A \(aq?\(aq (not between brackets) matches any single character.
 (ブラケット外部の) \(aq?\(aq はあらゆる単一の文字にマッチする。
 
-.\"O A \(aq*\(aq (not between brackets) matches any string,
-.\"O including the empty string.
-(ブラケット外部の) \(aq*\(aq はあらゆる文字列にマッチする。
-空文字列 (empty string) にもマッチする。
+(ブラケット外部の) \(aq*\(aq はあらゆる文字列にマッチする。 空文字列 (empty string) にもマッチする。
 .PP
-.\"O .B "Character classes"
-.B "文字クラス (character class)"
+\fB文字クラス (character class)\fP
 .sp
-.\"O An expression "\fI[...]\fP" where the first character after the
-.\"O leading \(aq[\(aq is not an \(aq!\(aq matches a single character,
-.\"O namely any of the characters enclosed by the brackets.
-.\"O The string enclosed by the brackets cannot be empty;
-.\"O therefore \(aq]\(aq can be allowed between the brackets, provided
-.\"O that it is the first character.
-.\"O (Thus, "\fI[][!]\fP" matches the
-.\"O three characters \(aq[\(aq, \(aq]\(aq and \(aq!\(aq.)
 "\fI[...]\fP" と言う表記は、先頭の \(aq[\(aq に続く最初の文字が \(aq!\(aq で
-なければ、ブラケットの中に含まれている文字のどれか一つにマッチする。
-ブラケットの内部に含まれる文字列は空であってはならない。
-したがって \(aq]\(aq も最初の文字に指定すればブラケットの内部に含めることが
-できる (つまり "\fI[][!]\fP" は \(aq[\(aq, \(aq]\(aq, \(aq!\(aq の
-3 文字のどれかにマッチする)。
+なければ、ブラケットの中に含まれている文字のどれか一つにマッチする。 ブラケットの内部に含まれる文字列は空であってはならない。 したがって
+\(aq]\(aq も最初の文字に指定すればブラケットの内部に含めることが できる (つまり "\fI[][!]\fP" は \(aq[\(aq,
+\(aq]\(aq, \(aq!\(aq の 3 文字のどれかにマッチする)。
 .PP
-.\"O .B Ranges
-.B "領域指定 (range)"
+\fB領域指定 (range)\fP
 .sp
-.\"O There is one special convention:
-.\"O two characters separated by \(aq\-\(aq denote a range.
-.\"O (Thus, "\fI[A\-Fa\-f0\-9]\fP"
-.\"O is equivalent to "\fI[ABCDEFabcdef0123456789]\fP".)
-.\"O One may include \(aq\-\(aq in its literal meaning by making it the
-.\"O first or last character between the brackets.
-.\"O (Thus, "\fI[]\-]\fP" matches just the two characters \(aq]\(aq and \(aq\-\(aq,
-.\"O and "\fI[\-\-0]\fP" matches the
-.\"O three characters \(aq\-\(aq, \(aq.\(aq, \(aq0\(aq, since \(aq/\(aq
-.\"O cannot be matched.)
-特殊な表記法が一つ存在する。\(aq\-\(aq を挟む二つの文字は領域指定となる。
-(つまり "\fI[A\-Fa\-f0\-9]\fP" は "\fI[ABCDEFabcdef0123456789]\fP"
-と等価となる。) \(aq\-\(aq 文字そのものを入れたい場合は、
-ブラケットの先頭または最後の文字に指定すればよい。
-(つまり "\fI[]\-]\fP" は二つの文字 \(aq]\(aq と \(aq\-\(aq
-にマッチし、"\fI[\-\-0]\fP" は \(aq\-\(aq, \(aq.\(aq, \(aq0\(aq の
-3 文字にマッチする。この間の \(aq/\(aq にはマッチしない。後述を参照。)
+特殊な表記法が一つ存在する。\(aq\-\(aq を挟む二つの文字は領域指定となる。 (つまり "\fI[A\-Fa\-f0\-9]\fP" は
+"\fI[ABCDEFabcdef0123456789]\fP" と等価となる。) \(aq\-\(aq 文字そのものを入れたい場合は、
+ブラケットの先頭または最後の文字に指定すればよい。 (つまり "\fI[]\-]\fP" は二つの文字 \(aq]\(aq と \(aq\-\(aq
+にマッチし、"\fI[\-\-0]\fP" は \(aq\-\(aq, \(aq.\(aq, \(aq0\(aq の 3 文字にマッチする。この間の
+\(aq/\(aq にはマッチしない。後述を参照。)
 .PP
-.\"O .B Complementation
-.B 補集合 (complementation)
+\fB補集合 (complementation)\fP
 .sp
-.\"O An expression "\fI[!...]\fP" matches a single character, namely
-.\"O any character that is not matched by the expression obtained
-.\"O by removing the first \(aq!\(aq from it.
-.\"O (Thus, "\fI[!]a\-]\fP" matches any
-.\"O single character except \(aq]\(aq, \(aqa\(aq and \(aq\-\(aq.)
-"\fI[!...]\fP" と言う表記は、ブラケットの内部に含まれない単一の文字にマッチする
-(ただし先頭にある \(aq!\(aq は除外)。 (つまり "\fI[!]a\-]\fP" は
-\(aq]\(aq, \(aqa\(aq, \(aq\-\(aq 以外のすべての文字の、どれか一つにマッチする。)
+"\fI[!...]\fP" と言う表記は、ブラケットの内部に含まれない単一の文字にマッチする (ただし先頭にある \(aq!\(aq は除外)。 (つまり
+"\fI[!]a\-]\fP" は \(aq]\(aq, \(aqa\(aq, \(aq\-\(aq 以外のすべての文字の、どれか一つにマッチする。)
 
-.\"O One can remove the special meaning of \(aq?\(aq, \(aq*\(aq and \(aq[\(aq by
-.\"O preceding them by a backslash, or, in case this is part of
-.\"O a shell command line, enclosing them in quotes.
-.\"O Between brackets these characters stand for themselves.
-.\"O Thus, "\fI[[?*\e]\fP" matches the
-.\"O four characters \(aq[\(aq, \(aq?\(aq, \(aq*\(aq and \(aq\e\(aq.
-バックスラッシュ \(aq\e\(aq を前置すれば、 \(aq?\(aq, \(aq*\(aq, \(aq[\(aq
-は通常の文字として扱われる。
-またはシェルのコマンドラインの一部に指定する場合は、
-クォートで囲っても同じ効果が得られる。ブラケットの内部では、
-これらの文字はその文字自身だけを意味する。
-すなわち "\fI[[?*\e]\fP" は \(aq[\(aq, \(aq?\(aq, \(aq*\(aq, \(aq\e\(aq
-のどれか一文字にマッチする。
-.\"O .SS Pathnames
+バックスラッシュ \(aq\e\(aq を前置すれば、 \(aq?\(aq, \(aq*\(aq, \(aq[\(aq は通常の文字として扱われる。
+またはシェルのコマンドラインの一部に指定する場合は、 クォートで囲っても同じ効果が得られる。ブラケットの内部では、
+これらの文字はその文字自身だけを意味する。 すなわち "\fI[[?*\e]\fP" は \(aq[\(aq, \(aq?\(aq, \(aq*\(aq,
+\(aq\e\(aq のどれか一文字にマッチする。
 .SS "パス名 (pathname)"
-.\"O Globbing is applied on each of the components of a pathname
-.\"O separately.
-.\"O A \(aq/\(aq in a pathname cannot be matched by a \(aq?\(aq or \(aq*\(aq
-.\"O wildcard, or by a range like "\fI[.\-0]\fP".
-.\"O A range cannot contain an
-.\"O explicit \(aq/\(aq character; this would lead to a syntax error.
-glob 動作は、パス名のそれぞれの部分に独立に適用される。
-パス名に存在する \(aq/\(aq は \(aq?\(aq や \(aq*\(aq ワイルドカードにはマッチしない。
-また "\fI[.\-0]\fP" のような領域指定にもマッチしない。
-領域指定は陽に \(aq/\(aq 文字を含むことはできない。これは文法エラーとなる。
+glob 動作は、パス名のそれぞれの部分に独立に適用される。 パス名に存在する \(aq/\(aq は \(aq?\(aq や \(aq*\(aq
+ワイルドカードにはマッチしない。 また "\fI[.\-0]\fP" のような領域指定にもマッチしない。 領域指定は陽に \(aq/\(aq
+文字を含むことはできない。これは文法エラーとなる。
 
-.\"O If a filename starts with a \(aq.\(aq,
-.\"O this character must be matched explicitly.
-.\"O (Thus, \fIrm\ *\fP will not remove .profile, and \fItar\ c\ *\fP will not
-.\"O archive all your files; \fItar\ c\ .\fP is better.)
-\(aq.\(aq で始まるパス名では、この文字は陽にマッチさせなければならない。
-(つまり \fIrm\ *\fP は .profile を削除しない。また \fItar\ c\ *\fP
-ではすべてのファイルはアーカイブされない。 \fItar\ c\ .\fP の方が良い。)
-.\"O .SS "Empty Lists"
+\(aq.\(aq で始まるパス名では、この文字は陽にマッチさせなければならない。 (つまり \fIrm\ *\fP は .profile を削除しない。また
+\fItar\ c\ *\fP ではすべてのファイルはアーカイブされない。 \fItar\ c\ .\fP の方が良い。)
 .SS 空のリスト
-.\"O The nice and simple rule given above: "expand a wildcard pattern
-.\"O into the list of matching pathnames" was the original UNIX
-.\"O definition.
-.\"O It allowed one to have patterns that expand into
-.\"O an empty list, as in
-先に与えた、わかりやすく簡単なルール、
-「ワイルドカードパターンをマッチしたパス名のリストに展開する」と言うのは、
-オリジナルの UNIX における定義であった。
-これはパターンが空のリストに展開されることも許可されていた。
-例えば
+先に与えた、わかりやすく簡単なルール、 「ワイルドカードパターンをマッチしたパス名のリストに展開する」と言うのは、 オリジナルの UNIX
+における定義であった。 これはパターンが空のリストに展開されることも許可されていた。 例えば
 .br
 .nf
     xv \-wait 0 *.gif *.jpg
 .fi
-.\"O where perhaps no *.gif files are present (and this is not
-.\"O an error).
-において、*.gif ファイルが全くない場合でも、
-これは空のリストに展開されるため、エラーにならない。
-.\"O However, POSIX requires that a wildcard pattern is left
-.\"O unchanged when it is syntactically incorrect, or the list of
-.\"O matching pathnames is empty.
-.\"O With
-.\"O .I bash
-.\"O one can force the classical behavior by setting
-.\"O .IR allow_null_glob_expansion=true .
-しかし POSIX では、文法的に正しくないパターンや、
-マッチがなかったパターンは、
-そのまま変更されずに残されることになっている。
-.I bash
-では
-.I allow_null_glob_expansion=true
-を指定することで、以前の振る舞いに設定することができる。
+において、*.gif ファイルが全くない場合でも、 これは空のリストに展開されるため、エラーにならない。 しかし POSIX
+では、文法的に正しくないパターンや、 マッチがなかったパターンは、 そのまま変更されずに残されることになっている。 \fIbash\fP では
+\fIallow_null_glob_expansion=true\fP を指定することで、以前の振る舞いに設定することができる。
 
-.\"O (Similar problems occur elsewhere.
-.\"O E.g., where old scripts have
 (同様の問題は別のところでも起こっている。例えば、古いスクリプトにおける
 .br
 .nf
     rm \`find . \-name "*~"\`
 .fi
-.\"O new scripts require
 のような記述は、新しいスクリプトでは
 .br
 .nf
     rm \-f nosuchfile \`find . \-name "*~"\`
 .fi
-.\"O to avoid error messages from
-.\"O .I rm
-.\"O called with an empty argument list.)
-のようにしなければならない。さもないと
-.I rm
-を引き数リストなしで呼び出す可能性があり、
-エラーメッセージが出てしまう。)
-.\"O .SH NOTES
+のようにしなければならない。さもないと \fIrm\fP を引き数リストなしで呼び出す可能性があり、 エラーメッセージが出てしまう。)
 .SH 注意
-.\"O .SS Regular expressions
 .SS 正規表現
-.\"O Note that wildcard patterns are not regular expressions,
-.\"O although they are a bit similar.
-.\"O First of all, they match
-.\"O filenames, rather than text, and secondly, the conventions
-.\"O are not the same: for example, in a regular expression \(aq*\(aq means zero or
-.\"O more copies of the preceding thing.
-ワイルドカードパターンは正規表現と多少似ているが、しかしこの両者は異なる。
-まず第一に、前者がファイル名にマッチするのに対して、
-後者はテキストにマッチする。第二に、ルールも同じではない。
-例えば正規表現における \(aq*\(aq は、
-前置された文字の 0 以上の繰り返しを表す。
+ワイルドカードパターンは正規表現と多少似ているが、しかしこの両者は異なる。 まず第一に、前者がファイル名にマッチするのに対して、
+後者はテキストにマッチする。第二に、ルールも同じではない。 例えば正規表現における \(aq*\(aq は、 前置された文字の 0
+以上の繰り返しを表す。
 
-.\"O Now that regular expressions have bracket expressions where
-.\"O the negation is indicated by a \(aq^\(aq, POSIX has declared the
-.\"O effect of a wildcard pattern "\fI[^...]\fP" to be undefined.
-正規表現にもブラケット表現はあるが、否定は \(aq^\(aq でなされる。
-POSIX ではワイルドカードパターンにおける "\fI[^...]\fP" を未定義であるとしている。
-.\"O .SS Character classes and Internationalization
+正規表現にもブラケット表現はあるが、否定は \(aq^\(aq でなされる。 POSIX ではワイルドカードパターンにおける "\fI[^...]\fP"
+を未定義であるとしている。
 .SS 文字クラスと国際化
-.\"O Of course ranges were originally meant to be ASCII ranges,
-.\"O so that "\fI[\ \-%]\fP" stands for "\fI[\ !"#$%]\fP" and "\fI[a\-z]\fP" stands
-.\"O for "any lowercase letter".
-.\"O Some UNIX implementations generalized this so that a range X\-Y
-.\"O stands for the set of characters with code between the codes for
-.\"O X and for Y.
-.\"O However, this requires the user to know the
-.\"O character coding in use on the local system, and moreover, is
-.\"O not convenient if the collating sequence for the local alphabet
-.\"O differs from the ordering of the character codes.
-領域指定は、もともとはもちろん ASCII における順序並びを意味していた。
-したがって "\fI[\ \-%]\fP" は "\fI[\ !"#$%]\fP" の意味であり、
-"\fI[a\-z]\fP" は「すべての小文字」の意味であった。
-UNIX の実装の中には、これを拡張したものが存在し、
-そこでは X\-Y という領域指定は、X のコードと
-Y のコードに挟まれたコードを持つ文字すべてを表すようになっていた。
-しかし、これにはユーザーがローカルなシステムにおける
-文字コードを知らなければならず、
-さらにローカルなアルファベットに対する照合順序
-(collating sequence) が文字コードの順序と異なっている場合には不便であった。
-(訳注: collating sequence に関しては
-.BR regex (7)
-を参照して下さい。)
-.\"O Therefore, POSIX extended the bracket notation greatly,
-.\"O both for wildcard patterns and for regular expressions.
-.\"O In the above we saw three types of items that can occur in a bracket
-.\"O expression: namely (i) the negation, (ii) explicit single characters,
-.\"O and (iii) ranges.
-.\"O POSIX specifies ranges in an internationally
-.\"O more useful way and adds three more types:
-したがって POSIX では、ワイルドカードパターンと正規表現の双方において、
-ブラケット表記を大幅に拡張している。
-これまで我々は、ブラケット表記には三つの要素が含まれうることを見てきた。
-すなわち (i) 否定、(ii) 単一の文字、(iii) 領域指定、の三つである。
-POSIX では、領域指定をより国際化に便利なように定義しており、
+領域指定は、もともとはもちろん ASCII における順序並びを意味していた。 したがって "\fI[\ \-%]\fP" は "\fI[\ !"#$%]\fP"
+の意味であり、 "\fI[a\-z]\fP" は「すべての小文字」の意味であった。 UNIX の実装の中には、これを拡張したものが存在し、 そこでは X\-Y
+という領域指定は、X のコードと Y のコードに挟まれたコードを持つ文字すべてを表すようになっていた。
+しかし、これにはユーザーがローカルなシステムにおける 文字コードを知らなければならず、 さらにローカルなアルファベットに対する照合順序
+(collating sequence) が文字コードの順序と異なっている場合には不便であった。 (訳注: collating sequence
+に関しては \fBregex\fP(7)  を参照して下さい。)  したがって POSIX では、ワイルドカードパターンと正規表現の双方において、
+ブラケット表記を大幅に拡張している。 これまで我々は、ブラケット表記には三つの要素が含まれうることを見てきた。 すなわち (i) 否定、(ii)
+単一の文字、(iii) 領域指定、の三つである。 POSIX では、領域指定をより国際化に便利なように定義しており、
 また三つのタイプをブラケット表記の要素として追加している。
 
-.\"O (iii) Ranges X\-Y comprise all characters that fall between X
-.\"O and Y (inclusive) in the currect collating sequence as defined
-.\"O by the
-.\"O .B LC_COLLATE
-.\"O category in the current locale.
-(iii) 領域指定 X\-Y は X と Y に挟まれた (両端含む) すべての文字を意味する。
-このとき、カレントロケール (current locale) の
-.B LC_COLLATE
-カテゴリで定義されている照合順序が用いられる。
+(iii) 領域指定 X\-Y は X と Y に挟まれた (両端含む) すべての文字を意味する。 このとき、カレントロケール (current
+locale) の \fBLC_COLLATE\fP カテゴリで定義されている照合順序が用いられる。
 
-.\"O (iv) Named character classes, like
 (iv) 名前付き文字クラス: 以下のようなものである。
 .nf
 
@@ -302,52 +128,19 @@ POSIX では、領域指定をより国際化に便利なように定義して
 [:punct:]  [:space:]  [:upper:]  [:xdigit:]
 
 .fi
-.\"O so that one can say "\fI[[:lower:]]\fP" instead of "\fI[a\-z]\fP", and have
-.\"O things work in Denmark, too, where there are three letters past \(aqz\(aq
-.\"O in the alphabet.
-.\"O These character classes are defined by the
-.\"O .B LC_CTYPE
-.\"O category
-.\"O in the current locale.
-これを用いれば "\fI[a\-z]\fP" の代わりに "\fI[[:lower:]]\fP" のような指定ができる。
-またデンマークのように、アルファベットの \(aqz\(aq 以降に
-3 つの文字が存在するような場合でも、同じような動作が期待できる。
-これらの文字クラスはカレントロケールの
-.B LC_CTYPE
-カテゴリで定義されている。
+これを用いれば "\fI[a\-z]\fP" の代わりに "\fI[[:lower:]]\fP" のような指定ができる。 またデンマークのように、アルファベットの
+\(aqz\(aq 以降に 3 つの文字が存在するような場合でも、同じような動作が期待できる。 これらの文字クラスはカレントロケールの
+\fBLC_CTYPE\fP カテゴリで定義されている。
 
-.\"O (v) Collating symbols, like "\fI[.ch.]\fP" or "\fI[.a-acute.]\fP",
-.\"O where the string between "\fI[.\fP" and "\fI.]\fP" is a collating
-.\"O element defined for the current locale.
-.\"O Note that this may
-.\"O be a multicharacter element.
-(v) 照合順序におけるシンボル: "\fI[.ch.]\fP" や "\fI[.a-acute.]\fP" のように "\fI[.\fP"
-と "\fI.]\fP" で挟まれた文字列は、カレントロケールで定義された照合順序の要素となる。
-ある一つの要素が複数の文字からなる場合もありうることに注意。
+(v) 照合順序におけるシンボル: "\fI[.ch.]\fP" や "\fI[.a\-acute.]\fP" のように "\fI[.\fP" と "\fI.]\fP"
+で挟まれた文字列は、カレントロケールで定義された照合順序の要素となる。 ある一つの要素が複数の文字からなる場合もありうることに注意。
 
-.\"O (vi) Equivalence class expressions, like "\fI[=a=]\fP",
-.\"O where the string between "\fI[=\fP" and "\fI=]\fP" is any collating
-.\"O element from its equivalence class, as defined for the
-.\"O current locale.
-.\"O For example, "\fI[[=a=]]\fP" might be equivalent
-.\"O .\" FIXME . the accented 'a' characters are not rendering properly
-.\"O .\" mtk May 2007
-.\"O to "\fI[aaaaa]\fP" (warning: Latin-1 here), that is,
-.\"O to "\fI[a[.a-acute.][.a-grave.][.a-umlaut.][.a-circumflex.]]\fP".
-(vi) 等価クラス表現 (equivalence class expressions): "\fI[=a=]\fP"
-のように "\fI[=\fP" と "\fI=]\fP" とで挟まれた文字列である。
-これは等価クラスのメンバーである照合順序の要素すべてになる。
-等価クラスはカレントロケールで定義されているものになる。
-例えば、"\fI[[=a=]]\fP" は
-"\fI[a[.a\-acute.][.a\-grave.][.a\-umlaut.][.a\-circumflex.]]\fP"
-と等価である
-(Latin-1 表記では [a\e`{a}\e'{a}\e"{a}\e^{a}] も同じ。
-[訳注] 日本語の roff ページでは latin1 コードが出ないので、
-ここでは TeX 表記で記載)。
-.\"O .SH "SEE ALSO"
+.\" FIXME . the accented 'a' characters are not rendering properly
+.\" mtk May 2007
+(vi) 等価クラス表現 (equivalence class expressions):
+"\fI[=a=]\fP" のように "\fI[=\fP" と "\fI=]\fP" とで挟まれた文字列であり、
+カレントロケールで定義された等価クラスのメンバーである照合要素のいずれかを表す。
+例えば、"\fI[[=a=]]\fP" は "\fI[aáàäâ]\fP" (注意: これは Latin\-1 表記)、つまり
+"\fI[a[.a\-acute.][.a\-grave.][.a\-umlaut.][.a\-circumflex.]]\fP" と等価になる。
 .SH 関連項目
-.BR sh (1),
-.BR fnmatch (3),
-.BR glob (3),
-.BR locale (7),
-.BR regex (7)
+\fBsh\fP(1), \fBfnmatch\fP(3), \fBglob\fP(3), \fBlocale\fP(7), \fBregex\fP(7)
index 0f91709..7d30dba 100644 (file)
 .\" of this page provided the header is included verbatim,
 .\" and in case of nontrivial modification author and date
 .\" of the modification is added to the header.
-.\" $Id: icmp.7,v 1.8 2001/01/14 05:30:41 hanataka Exp $
+.\" $Id: icmp.7,v 1.6 2000/08/14 08:03:45 ak Exp $
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
-.\" Translated 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated 2008-12-26, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.14
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\"WORD                destination route       行き先経路
-.\"WORD                token packet filter     トークン・パケット・フィルタ
-.\"
-.TH ICMP 7 2010-02-25 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O icmp, IPPROTO_ICMP \- Linux IPv4 ICMP kernel module.
+.\"*******************************************************************
+.TH ICMP 7 2010\-02\-25 Linux "Linux Programmer's Manual"
 .SH 名前
 icmp, IPPROTO_ICMP \- Linux IPv4 ICMP カーネルモジュール
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O This kernel protocol module implements the Internet Control
-.\"O Message Protocol defined in RFC\ 792.
-.\"O It is used to signal error conditions and for diagnosis.
-.\"O The user doesn't interact directly with this module;
-.\"O instead it communicates with the other protocols in the kernel
-.\"O and these pass the ICMP errors to the application layers.
-.\"O The kernel ICMP module also answers ICMP requests.
-このカーネルモジュールは RFC\ 792 で定義されている Internet
-Control Message Protocol を実装したものである。
-このプロトコルはエラー状況を知らせたり診断を行うために用いられる。
-ユーザーはこのモジュールとは直接には通信できない。
-このモジュールはカーネルの他のプロトコルと通信し、
-それらのプロトコルが ICMP エラーをアプリケーションレイヤに渡す。
-カーネルの ICMP モジュールは ICMP リクエストに対する応答も行う。
+このカーネルモジュールは RFC\ 792 で定義されている Internet Control Message Protocol を実装したものである。
+このプロトコルはエラー状況を知らせたり診断を行うために用いられる。 ユーザーはこのモジュールとは直接には通信できない。
+このモジュールはカーネルの他のプロトコルと通信し、 それらのプロトコルが ICMP エラーをアプリケーションレイヤに渡す。 カーネルの ICMP
+モジュールは ICMP リクエストに対する応答も行う。
 .PP
-.\"O A user protocol may receive ICMP packets for all local sockets by opening
-.\"O a raw socket with the protocol
-.\"O .BR IPPROTO_ICMP .
-.\"O See
-.\"O .BR raw (7)
-.\"O for more information.
-.\"O The types of ICMP packets passed to the socket can be filtered using the
-.\"O .B ICMP_FILTER
-.\"O socket option.
-.\"O ICMP packets are always processed by the kernel too, even
-.\"O when passed to a user socket.
-raw ソケットをプロトコル
-.B IPPROTO_ICMP
-でオープンすれば、
-ユーザープロトコルはローカルなソケット全てに対する
-ICMP パケットを受信することができる。
-詳細は
-.BR raw (7)
-を参照のこと。
-ソケットに渡される ICMP パケットのタイプは
-.B ICMP_FILTER
-オプションによってフィルターできる。
-ICMP パケットは (たとえユーザーソケットに渡される場合でも)、
+raw ソケットをプロトコル \fBIPPROTO_ICMP\fP でオープンすれば、 ユーザープロトコルはローカルなソケット全てに対する ICMP
+パケットを受信することができる。 詳細は \fBraw\fP(7)  を参照のこと。 ソケットに渡される ICMP パケットのタイプは
+\fBICMP_FILTER\fP オプションによってフィルターできる。 ICMP パケットは (たとえユーザーソケットに渡される場合でも)、
 常にカーネルによって (も) 処理される。
 .LP
-.\"O Linux limits the rate of ICMP error packets to each destination.
-.\"O .B ICMP_REDIRECT
-.\"O and
-.\"O .B ICMP_DEST_UNREACH
-.\"O are also limited by the destination route of the incoming packets.
-Linux では ICMP エラーパケットのレートをそれぞれの送り先に対して
-制限している。
-.B ICMP_REDIRECT
-と
-.B ICMP_DEST_UNREACH
-も到着したパケットの行き先経路 (destination route) を制限する。
-.\"O .SS /proc interfaces
-.SS /proc インタフェース
-.\"O ICMP supports a set of
-.\"O .I /proc
-.\"O interfaces to configure some global IP parameters.
-.\"O The parameters can be accessed by reading or writing files in the directory
-.\"O .IR /proc/sys/net/ipv4/ .
-.\"O Most of these parameters are rate limitations for specific ICMP types.
-.\"O Linux 2.2 uses a token bucket filter to limit ICMPs.
-.\"O .\" FIXME better description needed
-.\"O The value is the timeout in seconds until the token bucket filter is
-.\"O cleared after a burst.
-.\"O A jiffy is a system dependent unit, usually 10ms on i386 and
-.\"O about 1ms on alpha and ia64.
-ICMP では、いくつかのグローバルパラメータを設定するための
-.I /proc
-ファイル群が用意されている。
-これらのパラメータには、
-.I /proc/sys/net/ipv4/
-ディレクトリ内のファイルの読み書きでアクセスできる。
-これらのパラメータのほとんどは特定の ICMP タイプに対するレート制限
-(rate limitation) である。
-Linux 2.2 は ICMP の制限にトークン・バケット・フィルタ
-(token bucket filter) を用いる。
+Linux では ICMP エラーパケットのレートをそれぞれの送り先に対して 制限している。 \fBICMP_REDIRECT\fP と
+\fBICMP_DEST_UNREACH\fP も到着したパケットの行き先経路 (destination route) を制限する。
+.SS "/proc インタフェース"
 .\" FIXME better description needed
-それぞれの値は、バーストの後にトークン・バケット・フィルタがクリア
-されるまでのタイムアウトを秒単位で表したものである。最小単位(jiffy)は
-システム依存の単位で i386 システムは通常 10ms、alpha や ia64 では
-1ms である。
-.TP
-.\"O .IR icmp_destunreach_rate " (Linux 2.2 to 2.4.9)"
-.IR icmp_destunreach_rate " (Linux 2.2 から 2.4.9 まで)"
+ICMP では、いくつかのグローバルパラメータを設定するための \fI/proc\fP ファイル群が用意されている。 これらのパラメータには、
+\fI/proc/sys/net/ipv4/\fP ディレクトリ内のファイルの読み書きでアクセスできる。 これらのパラメータのほとんどは特定の ICMP
+タイプに対するレート制限 (rate limitation) である。 Linux 2.2 は ICMP の制限にトークン・バケット・フィルタ
+(token bucket filter) を用いる。 それぞれの値は、バーストの後にトークン・バケット・フィルタがクリア
+されるまでのタイムアウトを秒単位で表したものである。最小単位(jiffy)は システム依存の単位で i386 システムは通常 10ms、alpha や
+ia64 では 1ms である。
+.TP 
+\fIicmp_destunreach_rate\fP (Linux 2.2 から 2.4.9 まで)
 .\" Precisely: from 2.1.102
-.\"O Maximum rate to send ICMP Destination Unreachable packets.
-.\"O This limits the rate at which packets are sent to any individual
-.\"O route or destination.
-.\"O The limit does not affect sending of
-.\"O .B ICMP_FRAG_NEEDED
-.\"O packets needed for path MTU discovery.
 ICMP 不達パケット (Destination Unreachable packet) を送る最大レート。
-これは特定のルートまたは行き先にパケットを送信するレートを制限する。
-この制限は、
-path MTU discovery に必要な
-.B ICMP_FRAG_NEEDED
-パケットの送信には影響しない。
-.TP
-.\"O .IR icmp_echo_ignore_all " (since Linux 2.2)"
-.IR icmp_echo_ignore_all " (Linux 2.2 以降)"
+これは特定のルートまたは行き先にパケットを送信するレートを制限する。 この制限は、 path MTU discovery に必要な
+\fBICMP_FRAG_NEEDED\fP パケットの送信には影響しない。
+.TP 
+\fIicmp_echo_ignore_all\fP (Linux 2.2 以降)
 .\" Precisely: 2.1.68
-.\"O If this value is nonzero, Linux will ignore all
-.\"O .B ICMP_ECHO
-.\"O requests.
-この値が非ゼロの場合は、 Linux はすべての
-.B ICMP_ECHO
-要求を無視する。
-.TP
-.\"O .IR icmp_echo_ignore_broadcasts " (since Linux 2.2)"
-.IR icmp_echo_ignore_broadcasts " (Linux 2.2 以降)"
+この値が非ゼロの場合は、 Linux はすべての \fBICMP_ECHO\fP 要求を無視する。
+.TP 
+\fIicmp_echo_ignore_broadcasts\fP (Linux 2.2 以降)
 .\" Precisely: from 2.1.68
-.\"O If this value is nonzero, Linux will ignore all
-.\"O .B ICMP_ECHO
-.\"O packets sent to broadcast addresses.
-この値が非ゼロの場合は、 Linux はブロードキャストアドレスに送られたすべての
-.B ICMP_ECHO
-要求を無視する。
-.TP
-.\"O .IR icmp_echoreply_rate " (Linux 2.2 to 2.4.9)"
-.IR icmp_echoreply_rate " (Linux 2.2 から 2.4.9 まで)"
+この値が非ゼロの場合は、 Linux はブロードキャストアドレスに送られたすべての \fBICMP_ECHO\fP 要求を無視する。
+.TP 
+\fIicmp_echoreply_rate\fP (Linux 2.2 から 2.4.9 まで)
 .\" Precisely: from 2.1.102
-.\"O Maximum rate for sending
-.\"O .B ICMP_ECHOREPLY
-.\"O packets in response to
-.\"O .B ICMP_ECHOREQUEST
-.\"O packets.
-.B ICMP_ECHOREQUEST
-パケットに応答する
-.B ICMP_ECHOREPLY
-パケットの最大送信レート。
-.TP
-.\"O .IR icmp_errors_use_inbound_ifaddr " (Boolean; default: disabled; since Linux 2.6.12)"
-.IR icmp_errors_use_inbound_ifaddr " (Boolean; default: disabled; Linux 2.6.12 以降)"
+\fBICMP_ECHOREQUEST\fP パケットに応答する \fBICMP_ECHOREPLY\fP パケットの最大送信レート。
+.TP 
+\fIicmp_errors_use_inbound_ifaddr\fP (Boolean; default: disabled; Linux 2.6.12 以降)
 .\" The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
-.\"O If disabled, ICMP error messages are sent with the primary address of
-.\"O the exiting interface.
-これを無効にすると、ICMP エラーメッセージは、
-出力インタフェースのプライマリアドレスで送信される。
+これを無効にすると、ICMP エラーメッセージは、 出力インタフェースのプライマリアドレスで送信される。
 
-.\"O If enabled, the message will be sent with the primary address of
-.\"O the interface that received the packet that caused the ICMP error.
-.\"O This is the behavior that many network administrators will expect from
-.\"O a router.
-.\"O And it can make debugging complicated network layouts much easier.
-これを有効にすると、エラーメッセージは ICMP エラーの原因となったパケットを
-受信したインタフェースのプライマアドレスで送信される。
-この動作は、多くのネットワーク管理者がルータに対して期待しているものであり、
-これにより複雑なネットワークレイアウトのデバッグがより容易になる。
+これを有効にすると、エラーメッセージは ICMP エラーの原因となったパケットを 受信したインタフェースのプライマアドレスで送信される。
+この動作は、多くのネットワーク管理者がルータに対して期待しているものであり、 これにより複雑なネットワークレイアウトのデバッグがより容易になる。
 
-.\"O Note that if no primary address exists for the interface selected,
-.\"O then the primary address of the first non-loopback interface that
-.\"O has one will be used regardless of this setting.
-選択されたインタフェースでプライマリアドレスが存在しない場合は、
-この設定に関わらず、最初のループバック以外のインタフェースで、
-プライマリアドレスを持つインタフェースのプライマリアドレスが使用される点に
-注意すること。
-.TP
-.\"O .IR icmp_ignore_bogus_error_responses " (Boolean; default: disabled; since Linux 2.2)"
-.IR icmp_ignore_bogus_error_responses " (Boolean; default: disabled; Linux 2.2 以降)"
+選択されたインタフェースでプライマリアドレスが存在しない場合は、 この設定に関わらず、最初のループバック以外のインタフェースで、
+プライマリアドレスを持つインタフェースのプライマリアドレスが使用される点に 注意すること。
+.TP 
+\fIicmp_ignore_bogus_error_responses\fP (Boolean; default: disabled; Linux 2.2 以降)
 .\" precisely: since 2.1.32
 .\" The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
-.\"O Some routers violate RFC1122 by sending bogus responses to broadcast frames.
-.\"O Such violations are normally logged via a kernel warning.
-.\"O If this parameter is enabled, the kernel will not give such warnings,
-.\"O which will avoid log file clutter.
-ルータの中には、RFC1122 に違反し、ブロードキャストフレームに対して
-偽の応答を送信するものがある。
-このような違反は通常カーネルの警告としてログに記録される。
-このパラメータを有効にすると、カーネルはこのような警告を出さなくなり、
+ルータの中には、RFC1122 に違反し、ブロードキャストフレームに対して 偽の応答を送信するものがある。
+このような違反は通常カーネルの警告としてログに記録される。 このパラメータを有効にすると、カーネルはこのような警告を出さなくなり、
 ログファイルに雑音のような情報が記録されるのを避けることができる。
-.TP
-.\"O .IR icmp_paramprob_rate " (Linux 2.2 to 2.4.9)"
-.IR icmp_paramprob_rate " (Linux 2.2 から 2.4.9 まで)"
+.TP 
+\fIicmp_paramprob_rate\fP (Linux 2.2 から 2.4.9 まで)
 .\" Precisely: from 2.1.102
-.\"O Maximum rate for sending
-.\"O .B ICMP_PARAMETERPROB
-.\"O packets.
-.\"O These packets are sent when a packet arrives with an invalid IP header.
-.B ICMP_PARAMETERPROB
-パケットの最大送信レート。
-これらのパケットは不正な IP ヘッダを持つパケットが到着した場合に
+\fBICMP_PARAMETERPROB\fP パケットの最大送信レート。 これらのパケットは不正な IP ヘッダを持つパケットが到着した場合に
 送信される。
-.TP
-.\"O .IR icmp_ratelimit " (integer; default: 1000; since Linux 2.4.10)"
-.IR icmp_ratelimit " (integer; default: 1000; Linux 2.4.10 以降)"
+.TP 
+\fIicmp_ratelimit\fP (integer; default: 1000; Linux 2.4.10 以降)
 .\" The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
-.\"O Limit the maximum rates for sending ICMP packets whose type matches
-.\"O .IR icmp_ratemask
-.\"O (see below) to specific targets.
-.\"O 0 to disable any limiting,
-.\"O otherwise the minimum space between responses in milliseconds.
-種別が
-.I icmp_ratemask
-(下記参照) にマッチした ICMP パケットの、
-特定の送信先への送信レートの最大値を制限する。
-0 はレート制限を無効にすることを、
-0 以外の値は応答間の最小間隔 (ミリ秒単位) を示す。
-.TP
-.\"O .IR icmp_ratemask " (integer; default: see below; since Linux 2.4.10)"
-.IR icmp_ratemask " (integer; default: 下記参照; Linux 2.4.10 以降)"
+種別が \fIicmp_ratemask\fP (下記参照) にマッチした ICMP パケットの、 特定の送信先への送信レートの最大値を制限する。 0
+はレート制限を無効にすることを、 0 以外の値は応答間の最小間隔 (ミリ秒単位) を示す。
+.TP 
+\fIicmp_ratemask\fP (integer; default: 下記参照; Linux 2.4.10 以降)
 .\" The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
-.\"O Mask made of ICMP types for which rates are being limited.
 レート制限を行う ICMP タイプを決めるマスク。
 
-.\"O Significant bits: IHGFEDCBA9876543210
-.\"O .br
-.\"O Default mask:     0000001100000011000 (0x1818)
-有効ビット:       IHGFEDCBA9876543210
+有効ビット: IHGFEDCBA9876543210
 .br
 デフォルトマスク: 0000001100000011000 (0x1818)
 
-.\"O Bit definitions (see the kernel source file
-.\"O .IR include/linux/icmp.h ):
-ビット定義 (カーネルソースファイル
-.I include/linux/icmp.h
-を参照):
+ビット定義 (カーネルソースファイル \fIinclude/linux/icmp.h\fP を参照):
 
 .in +4n
 .nf
@@ -253,80 +107,31 @@ I Address Mask Reply
 .fi
 .in
 
-.\"O The bits marked with an asterisk are rate limited by default
-.\"O (see the default mask above).
-アスタリスク印が付いたビットは、デフォルトでレート制限が有効に
-なっている (上記のマスクのデフォルトも参照)。
-.TP
-.\"O .IR icmp_timeexceed_rate " (Linux 2.2 to 2.4.9)"
-.IR icmp_timeexceed_rate " (Linux 2.2 から 2.4.9 まで)"
-.\"O Maximum rate for sending
-.\"O .B ICMP_TIME_EXCEEDED
-.\"O packets.
-.\"O These packets are
-.\"O sent to prevent loops when a packet has crossed too many hops.
-.B ICMP_TIME_EXCEEDED
-パケットの最大送信レート。
-これらのパケットはパケットがあまりに多くの hop を通過した場合に、
+アスタリスク印が付いたビットは、デフォルトでレート制限が有効に なっている (上記のマスクのデフォルトも参照)。
+.TP 
+\fIicmp_timeexceed_rate\fP (Linux 2.2 から 2.4.9 まで)
+\fBICMP_TIME_EXCEEDED\fP パケットの最大送信レート。 これらのパケットはパケットがあまりに多くの hop を通過した場合に、
 ループを防ぐために送られる。
-.\"O .SH VERSIONS
 .SH バージョン
-.\"O Support for the
-.\"O .B ICMP_ADDRESS
-.\"O request was removed in 2.2.
-.B ICMP_ADDRESS
-要求に対するサポートは 2.2 で削除された。
+\fBICMP_ADDRESS\fP 要求に対するサポートは 2.2 で削除された。
 .PP
-.\"O Support for
-.\"O .B ICMP_SOURCE_QUENCH
-.\"O was removed in Linux 2.2.
-.B ICMP_SOURCE_QUENCH
-は Linux 2.2 で削除された。
-.\"O .SH NOTES
+\fBICMP_SOURCE_QUENCH\fP は Linux 2.2 で削除された。
 .SH 注意
-.\"O As many other implementations don't support
-.\"O .B IPPROTO_ICMP
-.\"O raw sockets, this feature
-.\"O should not be relied on in portable programs.
-他の多くの実装では、
-.B IPPROTO_ICMP
-raw ソケットがサポートされていない。
-この機能は移植性が必要なプログラムでは用いるべきでない。
 .\" not really true ATM
 .\" .PP
 .\" Linux ICMP should be compliant to RFC 1122.
+他の多くの実装では、 \fBIPPROTO_ICMP\fP raw ソケットがサポートされていない。 この機能は移植性が必要なプログラムでは用いるべきでない。
 .PP
-.\"O .B ICMP_REDIRECT
-.\"O packets are not sent when Linux is not acting as a router.
-.\"O They are also only accepted from the old gateway defined in the
-.\"O routing table and the redirect routes are expired after some time.
-Linux がルーターとして動作していないときには、
-.B ICMP_REDIRECT
-パケットは送信されない。
-またこれらが受け取られるのも、発信元がルーティングテーブルに定義されている
-古いゲートウェイで、リダイレクト・ルート (redirect route) が
-適当な時間の後に期限切れになっている場合に限られる。
+Linux がルーターとして動作していないときには、 \fBICMP_REDIRECT\fP パケットは送信されない。
+またこれらが受け取られるのも、発信元がルーティングテーブルに定義されている 古いゲートウェイで、リダイレクト・ルート (redirect route)
+が 適当な時間の後に期限切れになっている場合に限られる。
 .PP
-.\"O The 64-bit timestamp returned by
-.\"O .B ICMP_TIMESTAMP
-.\"O is in milliseconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC).
-.B ICMP_TIMESTAMP
-から返される 64 ビットのタイムスタンプは、
-紀元 (Epoch) である 1970-01-01 00:00:00 +0000 (UTC)
-からの経過時間をミリ秒単位で表したものである。
+\fBICMP_TIMESTAMP\fP から返される 64 ビットのタイムスタンプは、 紀元 (Epoch) である 1970\-01\-01 00:00:00
++0000 (UTC)  からの経過時間をミリ秒単位で表したものである。
 .PP
-.\"O Linux ICMP internally uses a raw socket to send ICMPs.
-.\"O This raw socket may appear in
-.\"O .BR netstat (8)
-.\"O output with a zero inode.
-Linux ICMP は ICMP を送るために内部で raw ソケットを用いる。
-raw ソケットは
-.BR netstat (8)
-の出力に 0 inode として出力される。
-.\"O .SH SEE ALSO
+Linux ICMP は ICMP を送るために内部で raw ソケットを用いる。 raw ソケットは \fBnetstat\fP(8)  の出力に 0
+inode として出力される。
 .SH 関連項目
-.BR ip (7)
+\fBip\fP(7)
 .PP
-.\"O RFC\ 792 for a description of the ICMP protocol.
-.BR RFC\ 792 :
-ICMP プロトコルの説明
+\fBRFC\ 792\fP: ICMP プロトコルの説明
diff --git a/draft/man7/inotify.7 b/draft/man7/inotify.7
new file mode 100644 (file)
index 0000000..b1602ef
--- /dev/null
@@ -0,0 +1,276 @@
+.\" t
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH INOTIFY 7 2011\-12\-07 Linux "Linux Programmer's Manual"
+.SH 名前
+inotify \- ファイルシステムイベントを監視する
+.SH 説明
+\fIinotify\fP API はファイルシステムイベントを監視するための機構を提供する。 inotify
+は個々のファイルやディレクトリを監視するのに使える。 ディレクトリを監視する場合、inotify はディレクトリ自身と
+ディレクトリ内のファイルのイベントを返す。
+
+以下のシステムコールがこの API と共に使用される: \fBinotify_init\fP(2)  (や \fBinotify_init1\fP(2)),
+\fBinotify_add_watch\fP(2), \fBinotify_rm_watch\fP(2), \fBread\fP(2), \fBclose\fP(2).
+
+\fBinotify_init\fP(2)  は inotify インスタンスを作成し、inotify インスタンスを参照する ファイルディスクリプタを返す。
+もっと新しい \fBinotify_init1\fP(2)  も \fBinotify_init\fP(2)  と同様だが、いくつかの追加の機能が提供されている。
+
+\fBinotify_add_watch\fP(2)  は inotify インスタンスに関連づけられた「監視対象 (watch) リスト」を操作する。
+監視対象リストの各アイテム ("watch") は、 ファイルまたはディレクトリのパス名と、 そのパス名で参照されるファイルに対して
+カーネルが監視する複数のイベントの集合を指定する。 \fBinotify_add_watch\fP(2)
+は新しい監視アイテムの作成や既存の監視対象の変更ができる。 各監視対象は一意の「監視対象ディスクリプタ」を持つ。 これは監視対象を作成したときに
+\fBinotify_add_watch\fP(2)  から返される整数である。
+
+\fBinotify_rm_watch\fP(2)  は inotify の監視対象リストからアイテムを削除する。
+
+inotify インスタンスを指している 全てのファイルディスクリプタがクローズされた場合、 その下層にあるオブジェクトとそのリソースは、
+カーネルで再利用するために解放される。 関連が切られた監視対象は自動的に解放される。
+
+どのようなイベントが起こっていたかを知るには、 アプリケーションで inotify ファイルディスクリプタを \fBread\fP(2)  すればよい。
+これまでに何もイベントが起こっていない場合、 停止 (blocking) モードのファイルディスクリプタであれば、 少なくとも 1
+つのイベントが起こるまで \fBread\fP(2)  は停止する (シグナルにより割り込まれなかった場合。
+シグナルによる割り込みがあった場合、呼び出しはエラー \fBEINTR\fP で失敗する。 \fBsignal\fP(7)  参照)。
+
+\fBread\fP(2)  が成功すると、以下の構造体を 1 つ以上含むバッファが返される:
+.in +4n
+.nf
+
+.\" FIXME . The type of the 'wd' field should probably be "int32_t".
+.\" I submitted a patch to fix this.  See the LKML thread
+.\" "[patch] Fix type errors in inotify interfaces", 18 Nov 2008
+.\" Glibc bug filed: http://sources.redhat.com/bugzilla/show_bug.cgi?id=7040
+struct inotify_event {
+    int      wd;       /* 監視対象ディスクリプタ */
+    uint32_t mask;     /* イベントのマスク */
+    uint32_t cookie;   /* 関連するイベント群を関連づける
+                          一意なクッキー (rename(2) 用) */
+    uint32_t len;      /* \(aqname\(aq フィールドのサイズ */
+    char     name[];   /* NULL で終端された任意の名前 */
+};
+.fi
+.in
+
+\fIwd\fP はイベント発生の監視対象を指定する。 これは、前もって行われた \fBinotify_add_watch\fP(2)
+呼び出しで返された監視対象ディスクリプタのうちの 1 つである。
+
+\fImask\fP には発生したイベント (下記参照) を記述するためのビットが含まれる。
+
+\fIcookie\fP は関連するイベントを関連づけるための一意な整数である。
+現在のところ、この値は rename イベントに対してのみ使われており、
+結果のペアである \fBIN_MOVE_FROM\fP と \fBIN_MOVE_TO\fP イベントを
+アプリケーションで関連づけることができる。
+他のイベント種別の場合には、 \fIcookie\fP は 0 に設定する。
+
+\fIname\fP フィールドは監視しているディレクトリ内のファイルに対して イベントが返される場合のためにだけ存在する。
+監視するディレクトリからのファイルの相対パス名を表す。 このパス名は NULL で終端され、 その後の読み込みで適切なアドレス境界に調整するために、
+さらに NULL バイトが含まれる場合もある。
+
+\fIlen\fP フィールドは NULL バイトを含む \fIname\fP の全てのバイト数を表す。 よって、 \fIinotify_event\fP
+構造体のサイズは \fIsizeof(inotify_event)+len\fP である。
+
+\fBread\fP(2)  に渡されたバッファが小さすぎて次のイベントに関する情報を返せない 場合の動作はカーネルのバージョンにより異なる。 2.6.21
+より前のカーネルでは、 \fBread\fP(2)  は 0 を返す。 2.6.21 以降のカーネルでは、 \fBread\fP(2)  はエラー
+\fBEINVAL\fP で失敗する。
+.SS "inotify イベント"
+\fBinotify_add_watch\fP(2)  の \fImask\fP 引き数と、inotify ファイル構造体を \fBread\fP(2)
+したときに返される \fIinotify_event\fP 構造体の \fImask\fP フィールドは、ともに inotify イベントを識別するための
+ビットマスクである。 以下のビットが \fBinotify_add_watch\fP(2)  を呼ぶときの \fImask\fP に指定可能であり、
+\fBread\fP(2)  で返される \fImask\fP フィールドで返される:
+.RS 4
+.sp
+.PD 0
+.TP  18
+\fBIN_ACCESS\fP
+ファイルがアクセス (read) された。(*)
+.TP 
+\fBIN_ATTRIB\fP
+メタデータが変更された。 メタデータとは、例えば、許可 (permission)、タイムスタンプ、拡張属性、 リンクカウント (Linux 2.6.25
+以降)、UID、GID などである。(*)
+.TP 
+\fBIN_CLOSE_WRITE\fP
+書き込みのためにオープンされたファイルがクローズされた。(*)
+.TP 
+\fBIN_CLOSE_NOWRITE\fP
+書き込み以外のためにオープンされたファイルがクローズされた。(*)
+.TP 
+\fBIN_CREATE\fP
+監視対象ディレクトリ内でファイルやディレクトリが作成された。(*)
+.TP 
+\fBIN_DELETE\fP
+監視対象ディレクトリ内でファイルやディレクトリが削除された。(*)
+.TP 
+\fBIN_DELETE_SELF\fP
+監視対象のディレクトリまたはファイル自身が削除された。
+.TP 
+\fBIN_MODIFY\fP
+ファイルが修正された。(*)
+.TP 
+\fBIN_MOVE_SELF\fP
+監視対象のディレクトリまたはファイル自身が移動された。
+.TP 
+\fBIN_MOVED_FROM\fP
+ファイルが監視対象ディレクトリ外へ移動された。(*)
+.TP 
+\fBIN_MOVED_TO\fP
+ファイルが監視対象ディレクトリ内へ移動された。(*)
+.TP 
+\fBIN_OPEN\fP
+ファイルがオープンされた。(*)
+.PD
+.RE
+.PP
+ディレクトリを監視する場合、 上記でアスタリスク (*) を付けたイベントは、 そのディレクトリ内のファイルに対して発生する。 このとき
+\fIinotify_event\fP 構造体で返される \fIname\fP フィールドは、ディレクトリ内のファイル名を表す。
+.PP
+\fBIN_ALL_EVENTS\fP マクロは上記のイベント全てのマスクとして定義される。 このマクロは \fBinotify_add_watch\fP(2)
+を呼び出すときの \fImask\fP 引き数として使える。
+
+さらに 2 つの便利なマクロがある。
+\fBIN_MOVE\fP は IN_MOVED_FROM|IN_MOVED_TO と同じで、
+\fBIN_CLOSE\fP は IN_CLOSE_WRITE|IN_CLOSE_NOWRITE と同じである。
+.PP
+その他にも以下のビットを \fBinotify_add_watch\fP(2)  を呼ぶときの \fImask\fP に指定できる:
+.RS 4
+.sp
+.PD 0
+.TP  18
+\fBIN_DONT_FOLLOW\fP
+\fIpathname\fP がシンボリックリンクである場合に辿らない。 (Linux 2.6.15 以降)
+.TP 
+\fBIN_EXCL_UNLINK\fP (Linux 2.6.36 以降)
+.\" commit 8c1934c8d70b22ca8333b216aec6c7d09fdbd6a6
+デフォルトでは、あるディレクトリの子ファイルに関するイベントを監視 (watch)
+した際、ディレクトリからその子ファイルが削除 (unlink) された場合であっても
+その子ファイルに対してイベントが生成される。このことは、アプリケーションに
+よってはあまり興味のないイベントが大量に発生することにつながる (例えば、\fI/tmp\fP
+を監視している場合、たくさんのアプリケーションが、すぐにその名前が削除される
+一時ファイルをそのディレクトリにに作成する)。 \fBIN_EXCL_UNLINK\fP を指定すると
+このデフォルトの動作を変更でき、監視対象のディレクトリから子ファイルが削除
+された後に子ファイルに関するイベントが生成されなくなる。
+.TP 
+\fBIN_MASK_ADD\fP
+\fIpathname\fP に対する監視マスクが既に存在する場合、 (マスクの置き換えではなく) イベントを追加 (OR) する。
+.TP 
+\fBIN_ONESHOT\fP
+1 つのイベントについて \fIpathname\fP を監視し、 イベントが発生したら監視対象リストから削除する。
+.TP 
+\fBIN_ONLYDIR\fP (Linux 2.6.15 以降)
+\fIpathname\fP がディレクトリの場合にのみ監視する。
+.PD
+.RE
+.PP
+以下のビットが \fBread\fP(2)  で返される \fImask\fP フィールドに設定される:
+.RS 4
+.sp
+.PD 0
+.TP  18
+\fBIN_IGNORED\fP
+監視対象が (\fBinotify_rm_watch\fP(2) により) 明示的に 削除された。もしくは (ファイルの削除、またはファイル
+システムのアンマウントにより) 自動的に削除された。
+.TP 
+\fBIN_ISDIR\fP
+このイベントの対象がディレクトリである。
+.TP 
+\fBIN_Q_OVERFLOW\fP
+イベントキューが溢れた (このイベントの場合、\fIwd\fP は \-1 である)。
+.TP 
+\fBIN_UNMOUNT\fP
+監視対象オブジェクトを含むファイルシステムがアンマウントされた。
+.PD
+.RE
+.SS "/proc インターフェース"
+以下のインターフェースは、inotify で消費される カーネルメモリの総量を制限するのに使用できる:
+.TP 
+\fI/proc/sys/fs/inotify/max_queued_events\fP
+このファイルの値は、アプリケーションが \fBinotify_init\fP(2)  を呼び出すときに使用され、対応する inotify インスタンスについて
+キューに入れられるイベントの数の上限を設定する。 この制限を超えたイベントは破棄されるが、 \fBIN_Q_OVERFLOW\fP イベントが常に生成される。
+.TP 
+\fI/proc/sys/fs/inotify/max_user_instances\fP
+1 つの実ユーザ ID に対して生成できる inotify インスタンスの数の上限を指定する。
+.TP 
+\fI/proc/sys/fs/inotify/max_user_watches\fP
+作成可能な監視対象の数の実 UID 単位の上限を指定する。
+.SH バージョン
+inotify は 2.6.13 の Linux カーネルに組込まれた。 これに必要なライブラリのインターフェースは、 glibc のバージョン 2.4
+に追加された (\fBIN_DONT_FOLLOW\fP, \fBIN_MASK_ADD\fP, \fBIN_ONLYDIR\fP だけはバージョン 2.5
+で追加された)。
+.SH 準拠
+inotify API は Linux 独自のものである。
+.SH 注意
+inotify ファイルディスクリプタは \fBselect\fP(2), \fBpoll\fP(2), \fBepoll\fP(7)  を使って監視できる。
+イベントがある場合、ファイルディスクリプタは読み込み可能と通知する。
+
+Linux 2.6.25 以降では、シグナル駆動 (signal\-driven) I/O の通知が inotify
+ファイルディスクリプタについて利用可能である。 \fBfcntl\fP(2)  に書かれている (\fBO_ASYNC\fP フラグを設定するための)
+\fBF_SETFL\fP, \fBF_SETOWN\fP, \fBF_SETSIG\fP の議論を参照のこと。 シグナルハンドラに渡される \fIsiginfo_t\fP
+構造体は、以下のフィールドが設定される (\fIsiginfo_t\fP は \fBsigaction\fP(2)  で説明されている)。 \fIsi_fd\fP には
+inotify ファイルディスクリプタ番号が、 \fIsi_signo\fP にはシグナル番号が、 \fIsi_code\fP には \fBPOLL_IN\fP が、
+\fIsi_band\fP には \fBPOLLIN\fP が設定される。
+
+inotify ファイルディスクリプタに対して 連続して生成される出力 inotify イベントが同一の場合 (\fIwd\fP, \fImask\fP,
+\fIcookie\fP, \fIname\fP が等しい場合)、 前のイベントがまだ読み込まれていなければ、 連続するイベントが 1 つのイベントにまとめられる
+(ただし「バグ」の節も参照のこと)。
+
+inotify ファイルディスクリプタの読み込みで返されるイベントは、 順序付けられたキューになる。
+従って、たとえば、あるディレクトリの名前を別の名前に変更した場合、 inotify ファイルディスクリプタについての正しい順番で
+イベントが生成されることが保証される。
+
+\fBFIONREAD\fP \fBioctl\fP(2)  は inotify ファイルディスクリプタから何バイト読み込めるかを返す。
+.SS 制限と警告
+inotify によるディレクトリの監視は再帰的に行われない: あるディレクトリ以下の
+サブディレクトリを監視する場合、 監視対象を追加で作成しなければならない。
+大きなディレクトリツリーの場合には、この作業にかなり時間がかかることがある。
+
+inotify API では inotify イベントのきっかけとなったユーザやプロセスに関する
+情報が提供されない。
+
+イベントキューは溢れる場合があることに注意すること。この場合にはイベントは
+失われてしまう。堅牢性が必要なアプリケーションでは、イベントが失われる可能性
+を適切に扱う必要がある。
+
+inotify API では影響が受けるファイルをファイル名で特定する。
+しかしながら、アプリケーションが inotify イベントを処理する時点では、
+そのファイル名がすでに削除されたり変更されたりしている可能性がある。
+
+ディレクトリツリー全体を監視していて、そのツリー内に新しいサブディレクトリが
+作成される場合、新しいサブディレクトリに対する watch を作成するまでに、
+新しいファイルがそのサブディレクトリ内にすでに作成されている場合がある点に
+注意すること。したがって、watch を追加した直後にサブディレクトリの内容を
+スキャンしたいと思う場合もあるだろう。
+.SH バグ
+2.6.16 以前のカーネルでは \fBIN_ONESHOT\fP \fImask\fP フラグが働かない。
+
+カーネル 2.6.25 より前では、 連続する同一のイベントを一つにまとめることを意図したコード (古い方のイベントがまだ読み込まれていない場合に、
+最新の 2 つのイベントを一つにまとめられる可能性がある) が、 最新のイベントが「最も古い」読み込まれていないイベントとまとめられるか
+をチェックするようになっていた。
+.SH 関連項目
+\fBinotify_add_watch\fP(2), \fBinotify_init\fP(2), \fBinotify_init1\fP(2),
+\fBinotify_rm_watch\fP(2), \fBread\fP(2), \fBstat\fP(2),
+\fIDocumentation/filesystems/inotify.txt\fP.
index 0dc3b4e..874cb87 100644 (file)
@@ -1,4 +1,4 @@
-'\" t
+.\" t
 .\" Don't change the line above. it tells man that tbl is needed.
 .\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
 .\" Permission is granted to distribute possibly modified copies
 .\" of the modification is added to the header.
 .\" $Id: ip.7,v 1.19 2000/12/20 18:10:31 ak Exp $
 .\"
-.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
-.\" Translated 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated 2001-02-14, Kentaro Shirakata <argrath@ub32.org>
-.\" Updated 2001-04-04, Yuichi SATO <ysato@h4.dion.ne.jp>
-.\" Updated & Modified 2003-10-16, Yuichi SATO <ysato444@yahoo.co.jp>
-.\" Updated & Modified 2005-01-22, Yuichi SATO
-.\" Updated & Modified 2005-09-10, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" Updated & Modified 2005-10-06, Akihiro MOTOKI
-.\" Updated 2007-01-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.43
-.\" Updated 2007-05-28, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.48
-.\" Updated 2008-12-26, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.14
+.\" FIXME: Document IP_MINTTL, added in Linux 2.6.34
 .\"
-.\"WORD                ancillary message       補助メッセージ
-.\"WORD                ... oriented            〜指向の
-.\"WORD                capability              権限
-.\"WORD                payload                 ペイロード
-.\"WORD                drop(ped)       (パケットを) 落とす、(受動の場合) 到着しない
-.\"WORD                tap                     タップ(する)
+.\"*******************************************************************
 .\"
-.TH IP  7 2009-02-28 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH IP 7 2011\-09\-22 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O ip \- Linux IPv4 protocol implementation
 ip \- Linux IPv4 プロトコルの実装
-.\"O .SH SYNOPSIS
 .SH 書式
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .br
 .\" .B #include <net/netinet.h> -- does not exist anymore
 .\" .B #include <linux/errqueue.h> -- never include <linux/foo.h>
-.B #include <netinet/in.h>
+\fB#include <netinet/in.h>\fP
 .br
-.\"O .B #include <netinet/ip.h>        \fR/* superset of previous */
-.B #include <netinet/ip.h>        \fR/* 上記のスーパーセット */
+\fB#include <netinet/ip.h> \fP/* 上記のスーパーセット */
 .sp
-.IB tcp_socket " = socket(AF_INET, SOCK_STREAM, 0);"
+\fItcp_socket\fP\fB = socket(AF_INET, SOCK_STREAM, 0);\fP
 .br
-.IB udp_socket " = socket(AF_INET, SOCK_DGRAM, 0);"
+\fIudp_socket\fP\fB = socket(AF_INET, SOCK_DGRAM, 0);\fP
 .br
-.IB raw_socket " = socket(AF_INET, SOCK_RAW, " protocol ");"
-.\"O .SH DESCRIPTION
+\fIraw_socket\fP\fB = socket(AF_INET, SOCK_RAW, \fP\fIprotocol\fP\fB);\fP
 .SH 説明
-.\"O Linux implements the Internet Protocol, version 4,
-.\"O described in RFC\ 791 and RFC\ 1122.
-.\"O .B ip
-.\"O contains a level 2 multicasting implementation conforming to RFC\ 1112.
-.\"O It also contains an IP router including a packet filter.
-Linux は RFC\ 791 と RFC\ 1122 で記述されている
-Internet Protocol, version 4 を実装している。
-.B ip
-には RFC\ 1112 に準拠した level 2 マルチキャストの実装が含まれている。
-またパケットフィルタ機能を含む IP ルーターも実装されている。
 .\" FIXME has someone verified that 2.1 is really 1812 compliant?
+Linux は RFC\ 791 と RFC\ 1122 で記述されている Internet Protocol, version 4 を実装している。
+\fBip\fP には RFC\ 1112 に準拠した level 2 マルチキャストの実装が含まれている。 またパケットフィルタ機能を含む IP
+ルーターも実装されている。
 .PP
-.\"O The programming interface is BSD-sockets compatible.
-.\"O For more information on sockets, see
-.\"O .BR socket (7).
-プログラミング・インターフェースは BSD ソケットと互換である。
-ソケットに関するより詳細な情報は
-.BR socket (7)
-を参照のこと。
+プログラミング・インターフェースは BSD ソケットと互換である。 ソケットに関するより詳細な情報は \fBsocket\fP(7)  を参照のこと。
 .PP
-.\"O An IP socket is created by calling the
-.\"O .BR socket (2)
-.\"O function as
-.\"O .BR "socket(AF_INET, socket_type, protocol)" .
-IP ソケットは、
-.BR socket (2)
-関数を
-.B "socket(AF_INET, socket_type, protocol)"
-のように呼び出すことで生成される。
-.\"O Valid socket types are
-.\"O .B SOCK_STREAM
-.\"O to open a
-.\"O .BR tcp (7)
-.\"O socket,
-.\"O .B SOCK_DGRAM
-.\"O to open a
-.\"O .BR udp (7)
-.\"O socket, or
-.\"O .B SOCK_RAW
-.\"O to open a
-.\"O .BR raw (7)
-.\"O socket to access the IP protocol directly.
-指定できるソケットタイプは 3 つあり、
-.BR tcp (7)
-ソケットをオープンする場合
-.BR SOCK_STREAM 、
-.BR udp (7)
-ソケットをオープンする場合
-.BR SOCK_DGRAM 、
-IP プロトコルに直接アクセスするために
-.BR raw (7)
-ソケットをオープンする場合には
-.B SOCK_RAW
-である。
-.\"O .I protocol
-.\"O is the IP protocol in the IP header to be received or sent.
-.\"O The only valid values for
-.\"O .I protocol
-.\"O are 0 and
-.\"O .B IPPROTO_TCP
-.\"O for TCP sockets, and 0 and
-.\"O .B IPPROTO_UDP
-.\"O for UDP sockets.
-.\"O For
-.\"O .B SOCK_RAW
-.\"O you may specify a valid IANA IP protocol defined in
-.\"O RFC\ 1700 assigned numbers.
-.I protocol
-は送受信される IP ヘッダに書かれる IP プロトコルである。
-指定できる値は、
-TCP ソケットには 0 か
-.BR IPPROTO_TCP 、
-UDP ソケットには 0 か
-.B IPPROTO_UDP
-に限られる。
-.B SOCK_RAW
-に対しては、 RFC\ 1700 で定義されている有効な IANA IP プロトコルを、
-割り当てられている番号で指定することができる。
+IP ソケットは、 \fBsocket\fP(2) 関数を \fBsocket(AF_INET, \fP\fIsocket_type\fP\fB, \fP
+\fIprotocol\fP\fB)\fP のように呼び出すことで生成される。指定できるソケットタイプは
+3 つあり、 \fBtcp\fP(7) ソケットをオープンする場合 \fBSOCK_STREAM\fP、 \fBudp\fP(7)
+ソケットをオープンする場合 \fBSOCK_DGRAM\fP、 IP プロトコルに直接アクセスする
+ために \fBraw\fP(7) ソケットをオープンする場合には \fBSOCK_RAW\fP である。
+\fIprotocol\fP は送受信される IP ヘッダに書かれる IP プロトコルである。
+指定できる値は、 TCP ソケットには 0 か \fBIPPROTO_TCP\fP、 UDP ソケットには
+0 か \fBIPPROTO_UDP\fP に限られる。 \fBSOCK_RAW\fP に対しては、 RFC\ 1700 で定義
+されている有効な IANA IP プロトコルを、 割り当てられている番号で指定する
+ことができる。
 .PP
 .\" FIXME ip current does an autobind in listen, but I'm not sure
 .\" if that should be documented.
-.\"O When a process wants to receive new incoming packets or connections, it
-.\"O should bind a socket to a local interface address using
-.\"O .BR bind (2).
-.\"O Only one IP socket may be bound to any given local (address, port) pair.
-.\"O When
-.\"O .B INADDR_ANY
-.\"O is specified in the bind call, the socket will be bound to
-.\"O .I all
-.\"O local interfaces.
-.\"O When
-.\"O .BR listen (2)
-.\"O or
-.\"O .BR connect (2)
-.\"O are called on an unbound socket, it is automatically bound to a
-.\"O random free port with the local address set to
-.\"O .BR INADDR_ANY .
-あるプロセスで、やってくるパケットを受信したり
-接続要求を受けたりしたい場合には、
-そのプロセスはローカルなインターフェースアドレスに、
-.BR bind (2)
-を用いてソケットをバインドしなければならない。
-あるローカルな「アドレスとポート」のペアに対してバインドできる
-IP ソケットは一つに限られる。
-.BR bind (2)
-の呼び出しで
-.B INADDR_ANY
-が指定されていた場合は、ソケットはローカルなインターフェースの
-\fIすべて\fPにバインドされる。
-.BR listen (2)
-または
-.BR connect (2)
-がバインドされていないソケットでコールされると、
-そのソケットは自動的にローカルなアドレスを
-.B INADDR_ANY
+あるプロセスで、やってくるパケットを受信したり 接続要求を受けたりしたい場合には、 そのプロセスはローカルなインターフェースアドレスに、
+\fBbind\fP(2)  を用いてソケットをバインドしなければならない。 あるローカルな「アドレスとポート」のペアに対してバインドできる IP
+ソケットは一つに限られる。 \fBbind\fP(2)  の呼び出しで \fBINADDR_ANY\fP
+が指定されていた場合は、ソケットはローカルなインターフェースの \fIすべて\fPにバインドされる。 \fBlisten\fP(2)  または
+\fBconnect\fP(2)  がバインドされていないソケットでコールされると、 そのソケットは自動的にローカルなアドレスを \fBINADDR_ANY\fP
 にセットし、空いているポートをランダムに選んでバインドする。
 
-.\"O A TCP local socket address that has been bound is unavailable for
-.\"O some time after closing, unless the
-.\"O .B SO_REUSEADDR
-.\"O flag has been set.
-.\"O Care should be taken when using this flag as it makes TCP less reliable.
-.B SO_REUSEADDR
-フラグがセットされていない場合には、
-バインドされていた TCP ローカルソケットアドレスは
-クローズされた後しばらくの間使えなくなる。
-.B SO_REUSEADDR
-フラグを使うと TCP の信頼性を低下させるので、
+\fBSO_REUSEADDR\fP フラグがセットされていない場合には、 バインドされていた TCP ローカルソケットアドレスは
+クローズされた後しばらくの間使えなくなる。 \fBSO_REUSEADDR\fP フラグを使うと TCP の信頼性を低下させるので、
 使うときには注意が必要である。
-.\"O .SS Address Format
 .SS アドレスのフォーマット
-.\"O An IP socket address is defined as a combination of an IP interface
-.\"O address and a 16-bit port number.
-.\"O The basic IP protocol does not supply port numbers, they
-.\"O are implemented by higher level protocols like
-.\"O .BR udp (7)
-.\"O and
-.\"O .BR tcp (7).
-.\"O On raw sockets
-.\"O .I sin_port
-.\"O is set to the IP protocol.
-IP ソケットアドレスは、 IP インターフェースアドレスと
-16ビットのポート番号の組み合わせで定義される。
-IP プロトコルそのものはポート番号を扱わない。
-ポート番号は、
-.BR udp (7)
-や
-.BR tcp (7)
-といった、上位のプロトコルで実装される。
-raw ソケットでは、
-.I sin_port
-が IP プロトコルにセットされる。
+IP ソケットアドレスは、 IP インターフェースアドレスと 16ビットのポート番号の組み合わせで定義される。 IP
+プロトコルそのものはポート番号を扱わない。 ポート番号は、 \fBudp\fP(7)  や \fBtcp\fP(7)  といった、上位のプロトコルで実装される。
+raw ソケットでは、 \fIsin_port\fP が IP プロトコルにセットされる。
 .PP
 .in +4n
 .nf
@@ -217,183 +82,43 @@ struct in_addr {
 .fi
 .in
 .PP
-.\"O .I sin_family
-.\"O is always set to
-.\"O .BR AF_INET .
-.\"O This is required; in Linux 2.2 most networking functions return
-.\"O .B EINVAL
-.\"O when this setting is missing.
-.\"O .I sin_port
-.\"O contains the port in network byte order.
-.\"O The port numbers below 1024 are called
-.\"O .IR "privileged ports"
-.\"O (or sometimes:
-.\"O .IR "reserved ports" ).
-.\"O Only privileged processes (i.e., those having the
-.\"O .B CAP_NET_BIND_SERVICE
-.\"O capability) may
-.\"O .BR bind (2)
-.\"O to these sockets.
-.\"O Note that the raw IPv4 protocol as such has no concept of a
-.\"O port, they are only implemented by higher protocols like
-.\"O .BR tcp (7)
-.\"O and
-.\"O .BR udp (7).
-.I sin_familiy
-には常に
-.B AF_INET
-をセットする。これは必須である。 Linux 2.2 では、このセットを忘れると
-ほとんどのネットワーク関数は
-.B EINVAL
-を返すようになっている。
-.I sin_port
-にはポート番号をネットワークバイトオーダーで指定する。
-1024 未満のポート番号は
-.I "特権ポート (privileged ports)"
-と呼ばれる
-.RI ( "予約ポート (reserved ports)"
-とも時々呼ばれる)。
-特権プロセス
-.RB ( CAP_NET_BIND_SERVICE
-ケーパビリティを持つプロセス) 以外のプロセスは、これらのポートには
-.BR bind (2)
-できない。 IPv4 プロトコルそのものにはポートに関する概念がない。
-ポートは、
-.BR tcp (7)
-や
-.BR udp (7)
+\fIsin_familiy\fP には常に \fBAF_INET\fP をセットする。これは必須である。 Linux 2.2 では、このセットを忘れると
+ほとんどのネットワーク関数は \fBEINVAL\fP を返すようになっている。 \fIsin_port\fP
+にはポート番号をネットワークバイトオーダーで指定する。 1024 未満のポート番号は \fI特権ポート (privileged ports)\fP と呼ばれる
+(\fI予約ポート (reserved ports)\fP とも時々呼ばれる)。 特権プロセス (\fBCAP_NET_BIND_SERVICE\fP
+ケーパビリティを持つプロセス) 以外のプロセスは、これらのポートには \fBbind\fP(2)  できない。 IPv4
+プロトコルそのものにはポートに関する概念がない。 ポートは、 \fBtcp\fP(7)  や \fBudp\fP(7)
 といった、上位のプロトコルにおいて実装される。
 .PP
-.\"O .I sin_addr
-.\"O is the IP host address.
-.\"O The
-.\"O .I s_addr
-.\"O member of
-.\"O .I struct in_addr
-.\"O contains the host interface address in network byte order.
-.I sin_addr
-は IP ホストアドレスである。
-.I struct in_addr
-の
-.I s_addr
-メンバには、ホストのインターフェースアドレスを
-ネットワークバイトオーダーで指定する。
-.\"O .I in_addr
-.\"O should be assigned one of the INADDR_* values (e.g.,
-.\"O .BR INADDR_ANY )
-.\"O or set using the
-.\"O .BR inet_aton (3),
-.\"O .BR inet_addr (3),
-.\"O .BR inet_makeaddr (3)
-.\"O library functions or directly with the name resolver (see
-.\"O .BR gethostbyname (3)).
-.I in_addr
-は、INADDR_* の一つ (例えば
-.BR INADDR_ANY )
-を代入する、
-ライブラリ関数
-.BR inet_aton (3),
-.BR inet_addr (3),
-.BR inet_makeaddr (3)
-を用いる、あるいは名前解決機構 (name resolver)
-を直接用いる、のどれかで設定すべきである。
-.RB ( gethostbyname (3)
-を見よ)。
+\fIsin_addr\fP は IP ホストアドレスである。 \fIstruct in_addr\fP の \fIs_addr\fP
+メンバには、ホストのインターフェースアドレスを ネットワークバイトオーダーで
+指定する。 \fIin_addr\fP は、\fBINADDR_*\fP の一つ (例えば \fBINADDR_ANY\fP) を代入する、
+ライブラリ関数 \fBinet_aton\fP(3), \fBinet_addr\fP(3), \fBinet_makeaddr\fP(3) を用いる、
+あるいは名前解決機構 (name resolver) を直接用いる、のどれかで設定すべきである。
+(\fBgethostbyname\fP(3) を見よ)。
 
-.\"O IPv4 addresses are divided into unicast, broadcast
-.\"O and multicast addresses.
-.\"O Unicast addresses specify a single interface of a host,
-.\"O broadcast addresses specify all hosts on a network and multicast
-.\"O addresses address all hosts in a multicast group.
-.\"O Datagrams to broadcast addresses can be only sent or received when the
-.\"O .B SO_BROADCAST
-.\"O socket flag is set.
-IPv4 アドレスには、ユニキャストアドレス、
-ブロードキャストアドレス、マルチキャストアドレスがある。
-ユニキャストアドレスは、あるホストの一つのアドレスを指定する。
-ブロードキャストアドレスは、あるネットワーク上の全てのホストを指定する。
-マルチキャストアドレスは、マルチキャストグループに所属する
-全てのホストを指定する。ブロードキャストアドレスへのデータグラムは、
-.B SO_BROADCAST
-ソケットフラグがセットされていないと送信・受信できない。
-.\"O In the current implementation, connection oriented sockets are only allowed
-.\"O to use unicast addresses.
-現在の実装では、接続指向のソケットにはユニキャストアドレスしか使えない。
 .\" Leave a loophole for XTP @)
+IPv4 アドレスには、ユニキャストアドレス、 ブロードキャストアドレス、マルチキャストアドレスがある。
+ユニキャストアドレスは、あるホストの一つのアドレスを指定する。 ブロードキャストアドレスは、あるネットワーク上の全てのホストを指定する。
+マルチキャストアドレスは、マルチキャストグループに所属する 全てのホストを指定する。ブロードキャストアドレスへのデータグラムは、
+\fBSO_BROADCAST\fP ソケットフラグがセットされていないと送信・受信できない。
+現在の実装では、接続指向のソケットにはユニキャストアドレスしか使えない。
 
-.\"O Note that the address and the port are always stored in
-.\"O network byte order.
-.\"O In particular, this means that you need to call
-.\"O .BR htons (3)
-.\"O on the number that is assigned to a port.
-.\"O All address/port manipulation
-.\"O functions in the standard library work in network byte order.
-アドレスとポートは常にネットワークバイトオーダーで格納されることに注意せよ。
-具体的には、ポートを指定する数値には
-.BR htons (3)
-を呼び出す必要がある。
-標準ライブラリにあるアドレス/ポート操作関数は
-すべてネットワークバイトオーダーで動作する。
+アドレスとポートは常にネットワークバイトオーダーで格納されることに注意せよ。 具体的には、ポートを指定する数値には \fBhtons\fP(3)
+を呼び出す必要がある。 標準ライブラリにあるアドレス/ポート操作関数は すべてネットワークバイトオーダーで動作する。
 
-.\"O There are several special addresses:
-.\"O .B INADDR_LOOPBACK
-.\"O (127.0.0.1)
-.\"O always refers to the local host via the loopback device;
-.\"O .B INADDR_ANY
-.\"O (0.0.0.0)
-.\"O means any address for binding;
-.\"O .B INADDR_BROADCAST
-.\"O (255.255.255.255)
-.\"O means any host and has the same effect on bind as
-.\"O .B INADDR_ANY
-.\"O for historical reasons.
-特別なアドレスがいくつか存在する:
-.TP
-.BR INADDR_LOOPBACK (127.0.0.1)
-loopback デバイスを通して常にローカルなホストを参照する。
-.TP
-.BR INADDR_ANY (0.0.0.0)
-バインドに用いる任意のアドレス。
-.TP
-.BR INADDR_BROADCAST (255.255.255.255)
-任意のホスト。歴史的理由から、バインドの際には
-.B INADDR_ANY
-と同じ効果になる。
-.\"O .SS Socket Options
+特別なアドレスがいくつか存在する: \fBINADDR_LOOPBACK\fP(127.0.0.1)  は loopback
+デバイスを通して常にローカルなホストを参照する。 \fBINADDR_ANY\fP(0.0.0.0)  は任意のアドレスを意味し、バインド用である。
+\fBINADDR_BROADCAST\fP(255.255.255.255)  は任意のホストを意味し、歴史的理由から、バインドの際には
+\fBINADDR_ANY\fP と同じ効果になる。
 .SS ソケットオプション
-.\"O IP supports some protocol-specific socket options that can be set with
-.\"O .BR setsockopt (2)
-.\"O and read with
-.\"O .BR getsockopt (2).
-.\"O The socket option level for IP is
-.\"O .BR IPPROTO_IP .
-.\"O .\" or SOL_IP on Linux
-.\"O A boolean integer flag is zero when it is false, otherwise true.
-IP にはプロトコル固有のソケットオプションがいくつか存在し、
-.BR setsockopt (2)
-で設定が、
-.BR getsockopt (2)
-で取得ができる。 IP のソケットオプションレベルは
-.B IPPROTO_IP
-.\" Linux では SOL_IP も可
-である。
-ブール整数値のフラグでは、 0 は偽、それ以外は真を意味する。
-.\"
-.\" FIXME Document IP_FREEBIND
-.\" Boolean
-.\" Since Linux 2.4.0-test10
-.\"
-.TP
-.\"O .BR IP_ADD_MEMBERSHIP " (since Linux 1.2)"
-.BR IP_ADD_MEMBERSHIP " (Linux 1.2 以降)"
-.\"O Join a multicast group.
-.\"O Argument is an
-.\"O .I ip_mreqn
-.\"O structure.
-マルチキャストグループに参加する。
-引き数は
-.I ip_mreqn
-構造体である。
+.\" or SOL_IP on Linux
+IP にはプロトコル固有のソケットオプションがいくつか存在し、 \fBsetsockopt\fP(2)  で設定が、 \fBgetsockopt\fP(2)
+で取得ができる。 IP のソケットオプションレベルは \fBIPPROTO_IP\fP である。 ブール整数値のフラグでは、 0
+は偽、それ以外は真を意味する。
+.TP 
+\fBIP_ADD_MEMBERSHIP\fP (Linux 1.2 以降)
+マルチキャストグループに参加する。 引き数は \fIip_mreqn\fP 構造体である。
 .sp
 .in +4n
 .nf
@@ -407,412 +132,142 @@ struct ip_mreqn {
 .fi
 .in
 .sp
-.\"O .I imr_multiaddr
-.\"O contains the address of the multicast group the application
-.\"O wants to join or leave.
-.\"O It must be a valid multicast address
-.\"O .\" (i.e., within the 224.0.0.0-239.255.255.255 range)
-.\"O (or
-.\"O .BR setsockopt (2)
-.\"O fails with the error
-.\"O .BR EINVAL ).
-.\"O .I imr_address
-.\"O is the address of the local interface with which the system
-.\"O should join the multicast group; if it is equal to
-.\"O .B INADDR_ANY
-.\"O an appropriate interface is chosen by the system.
-.\"O .I imr_ifindex
-.\"O is the interface index of the interface that should join/leave the
-.\"O .I imr_multiaddr
-.\"O group, or 0 to indicate any interface.
-.I imr_multiaddr
-には、アプリケーションが参加または撤退したい
-マルチキャストグループのアドレスが入る。
-指定するアドレスは有効なマルチキャストアドレスでなければならない
-.\" (つまり、224.0.0.0-239.255.255.255 の範囲内)
-(さもなければ
-.BR setsockopt (2)
-がエラー
-.B EINVAL
-で失敗する)。
-.I imr_address
-はシステムがマルチキャストグループに参加する際に用いる
-ローカルなインターフェースのアドレスである。
-これが
-.B INADDR_ANY
-であった場合には、適切なインターフェースがシステムによって選択される。
-.I imr_ifindex
-は
-.I imr_multiaddr
-グループに参加/撤退するインターフェースの interface index である。
+.\" (i.e., within the 224.0.0.0-239.255.255.255 range)
+\fIimr_multiaddr\fP には、アプリケーションが参加または撤退したい マルチキャストグループのアドレスが入る。
+指定するアドレスは有効なマルチキャストアドレスでなければならない (さもなければ \fBsetsockopt\fP(2)  がエラー \fBEINVAL\fP
+で失敗する)。 \fIimr_address\fP はシステムがマルチキャストグループに参加する際に用いる ローカルなインターフェースのアドレスである。
+これが \fBINADDR_ANY\fP であった場合には、適切なインターフェースがシステムによって選択される。 \fIimr_ifindex\fP は
+\fIimr_multiaddr\fP グループに参加/撤退するインターフェースの interface index である。
 どのインターフェースでもよい場合は 0 にする。
 .IP
-.\"O The
-.\"O .I ip_mreqn
-.\"O is available only since Linux 2.2.
-.\"O For compatibility, the old
-.\"O .I ip_mreq
-.\"O structure (present since Linux 1.2) is still supported.
-.\"O It differs from
-.\"O .I ip_mreqn
-.\"O only by not including the
-.\"O .I imr_ifindex
-.\"O field.
-.\"O Only valid as a
-.\"O .BR setsockopt (2).
-.I ip_mreqn
-は Linux 2.2 以降でのみ利用可能である。
-互換性のため、古い
-.I ip_mreq
-構造体 (Linux 1.2 以降で存在する) もまだサポートされている。
-.I ip_mreqn
-との違いは、
-.I imr_ifindex
-フィールドを含まないことだけである。
-.BR setsockopt (2)
-でのみ使える。
 .\"
-.TP
-.\"O .BR IP_DROP_MEMBERSHIP " (since Linux 1.2)"
-.BR IP_DROP_MEMBERSHIP " (Linux 1.2 以降)"
-.\"O Leave a multicast group.
-.\"O Argument is an
-.\"O .I ip_mreqn
-.\"O or
-.\"O .I ip_mreq
-.\"O structure similar to
-.\"O .BR IP_ADD_MEMBERSHIP .
-マルチキャストグループから抜ける。引き数は
-.B IP_ADD_MEMBERSHIP
-と同様に
-.I ip_mreqn
-または
-.I ip_mreq
+\fIip_mreqn\fP 構造体は Linux 2.2 以降でのみ利用可能である。互換性のため、
+古い \fIip_mreq\fP 構造体 (Linux 1.2 以降で存在する) もまだサポートされている。
+\fIip_mreqn\fP との違いは、 \fIimr_ifindex\fP フィールドを含まないことだけである。
+\fBsetsockopt\fP(2) でのみ使える。
+.TP 
+\fBIP_DROP_MEMBERSHIP\fP (Linux 1.2 以降)
+マルチキャストグループから抜ける。引き数は \fBIP_ADD_MEMBERSHIP\fP と同様に \fIip_mreqn\fP または \fIip_mreq\fP
 構造体である。
-.TP
-.\"O .BR IP_HDRINCL " (since Linux 2.0)"
-.BR IP_HDRINCL " (Linux 2.0 以降)"
-.\"O If enabled,
-.\"O the user supplies an IP header in front of the user data.
-.\"O Only valid for
-.\"O .B SOCK_RAW
-.\"O sockets.
-.\"O See
-.\"O .BR raw (7)
-.\"O for more information.
-.\"O When this flag is enabled the values set by
-.\"O .BR IP_OPTIONS ,
-.\"O .B IP_TTL
-.\"O and
-.\"O .B IP_TOS
-.\"O are ignored.
-有効になっていると、ユーザは IP ヘッダをユーザーデータの前に与える。
-.B SOCK_RAW
-ソケットでのみ有効である。詳細は
-.BR raw (7)
-を見よ。このフラグが有効になっていると、
-.BR IP_OPTIONS ,
-.BR IP_TTL ,
-.B IP_TOS
-は無視される。
+.TP 
+\fBIP_FREEBIND\fP (Linux 2.4 以降)
+.\" Precisely: 2.4.0-test10
+このブール値のオプションを有効にすると、ローカルではない IP アドレスや存在
+しない IP アドレスをバインドできるようになる。これを使うと、対応するネット
+ワークインターフェイスがなかったり、アプリケーションがソケットをバインドしようと
+する時点で特定の動的 IP アドレスが有効になっていなかったりしても、ソケットを
+接続待ち状態 (listening) にできるようになる。
+このオプションは、下記に説明がある \fIip_nonlocal_bind\fP \fI/proc\fP インターフェイス
+のソケット単位の設定である。
+.TP 
+\fBIP_HDRINCL\fP (Linux 2.0 以降)
+.\"
 .\" FIXME Document IP_IPSEC_POLICY
 .\" Since Linux 2.5.47
 .\" Needs CAP_NET_ADMIN
-.TP
-.\"O .BR IP_MTU " (since Linux 2.2)"
-.BR IP_MTU " (Linux 2.2 以降)"
+有効になっていると、ユーザは IP ヘッダをユーザーデータの前に与える。 \fBSOCK_RAW\fP ソケットでのみ有効である。詳細は \fBraw\fP(7)
+を見よ。このフラグが有効になっていると、 \fBIP_OPTIONS\fP, \fBIP_TTL\fP, \fBIP_TOS\fP は無視される。
+.TP 
+\fBIP_MTU\fP (Linux 2.2 以降)
 .\" Precisely: 2.1.124
-.\"O Retrieve the current known path MTU of the current socket.
-.\"O Only valid when the socket has been connected.
-.\"O Returns an integer.
-.\"O Only valid as a
-.\"O .BR getsockopt (2).
-ソケットの、既知の path MTU を取得する。
-ソケットが接続している場合のみ有効である。
-.BR getsockopt (2)
-でのみ使える。
-.TP
-.\"O .BR IP_MTU_DISCOVER " (since Linux 2.2)"
-.BR IP_MTU_DISCOVER " (Linux 2.2 以降)"
+ソケットの、既知の path MTU を取得する。 ソケットが接続している場合のみ有効である。 \fBgetsockopt\fP(2)  でのみ使える。
+.TP 
+\fBIP_MTU_DISCOVER\fP (Linux 2.2 以降)
 .\" Precisely: 2.1.124
-.\"O Set or receive the Path MTU Discovery setting for a socket.
-.\"O When enabled, Linux will perform Path MTU Discovery
-.\"O as defined in RFC\ 1191
-.\"O on this socket.
-.\"O The don't-fragment flag is set on all outgoing datagrams.
-.\"O The system-wide default is controlled by the
-.\"O .I /proc/sys/net/ipv4/ip_no_pmtu_disc
-.\"O file for
-.\"O .B SOCK_STREAM
-.\"O sockets, and disabled on all others.
-.\"O For
-.\"O .RB non- SOCK_STREAM
-.\"O sockets, it is the user's responsibility to packetize the data
-.\"O in MTU sized chunks and to do the retransmits if necessary.
-.\"O The kernel will reject packets that are bigger than the known
-.\"O path MTU if this flag is set (with
-.\"O .B EMSGSIZE
-.\"O ).
 ソケットの Path MTU Discovery の設定をセット・取得する。
-有効になっていると、 Linux はこのソケットに対して
+有効になっていると、Linux は \fBSOCK_STREAM\fP ソケットに対して
 RFC\ 1191 で定義されている Path MTU Discovery を行う。
-発信データグラムには、全て「フラグメント不許可」フラグがセットされる。
-システム全体に対するデフォルトは、
-.B SOCK_STREAM
\82½ã\82±ã\83\83ã\83\88ã\81«å¯¾ã\81\97ã\81¦ã\81¯
-.I /proc/sys/net/ipv4/ip_no_pmtu_disc
-ファイルにより制御できる。
\81\9dã\81®ä»\96ã\81«ã\81¤ã\81\84ã\81¦ã\81¯ç\84¡å\8a¹ã\81¨ã\81ªã\81£ã\81¦ã\81\84る。
-.B SOCK_STREAM
\81§ã\81ªã\81\84ã\82½ã\82±ã\83\83ã\83\88ã\81«å¯¾ã\81\97ã\81¦ã\81¯ã\80\81
-ユーザーがデータを MTU のサイズの塊にパケット化したり、
-必要な場合には再送したりしなければならない。
\81\93ã\81®ã\83\95ã\83©ã\82°ã\81\8cã\82»ã\83\83ã\83\88ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\81¨
-ã\82«ã\83¼ã\83\8dã\83«ã\81¯æ\97¢ç\9f¥ã\81® path MTU ã\82\88ã\82\8a大ã\81\8dã\81ªã\83\91ã\82±ã\83\83ã\83\88ã\82\92æ\8b\92å\90¦ã\81\99ã\82\8b
-.RB ( EMSGSIZE
-となる)。
+\fBSOCK_STREAM\fP でないソケットについては、 \fBIP_PMTUDISC_DO\fP をセットすると、
+全ての送信パケットでフラグメント不許可フラグ (don't\-fragment flag) が必ず
+セットされるようになる。 \fBSOCK_STREAM\fP でないソケットでは、
\83\91ã\82±ã\83\83ã\83\88ã\82\92 MTU ã\81®ã\82µã\82¤ã\82ºã\81®å¡\8aã\81«å\88\86å\89²ã\81\97ã\81\9fã\82\8aã\80\81å¿\85è¦\81ã\81«å¿\9cã\81\98ã\81¦å\86\8dé\80\81ã\81\97ã\81\9fã\82\8aã\81\99ã\82\8bã\81®ã\81¯ã\80\81
+ユーザが責任を持って行う必要がある。
+既知の Path MTU よりも大きなデータグラムの送信が要求されると、
\82«ã\83¼ã\83\8dã\83«ã\81¯ (\fBEMSGSIZE\fP ã\81§) é\80\81ä¿¡ã\82\92æ\8b\92å\90¦ã\81\99る。
+\fBIP_PMTUDISC_WANT\fP の場合は、 Path MTU に基づいて必要であればデータグラム
\81®å\88\86å\89²ã\81\8cè¡\8cã\82\8fã\82\8cã\80\81ã\81\9dã\82\8c以å¤\96ã\81®å ´å\90\88ã\81¯ã\83\95ã\83©ã\82°ã\83¡ã\83³ã\83\88ä¸\8d許å\8f¯ã\83\95ã\83©ã\82°ã\81\8cã\82»ã\83\83ã\83\88ã\81\95ã\82\8cã\82\8bã\80\82
+
+システム全体のデフォルトは \fBIP_PMTUDISC_WANT\fP と \fBIP_PMTUDISC_DONT\fP の
\81©ã\81¡ã\82\89ã\81\8bã\81«è¨­å®\9aã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82設å®\9aã\81®å¤\89æ\9b´ã\81¯
+\fI/proc/sys/net/ipv4/ip_no_pmtu_disc\fP ã\83\95ã\82¡ã\82¤ã\83«ã\81«ã\80\810 (\fBIP_PMTUDISC_WANT\fP) ã\81\8b
+0 以外 (\fBIP_PMTUDISC_DONT\fP) を書き込むことで行う。
+
 .TS
 tab(:);
 c l
 l l.
-.\"O Path MTU discovery flags:Meaning
-.\"O IP_PMTUDISC_WANT:Use per-route settings.
-.\"O IP_PMTUDISC_DONT:Never do Path MTU Discovery.
-.\"O IP_PMTUDISC_DO:Always do Path MTU Discovery.
-.\"O IP_PMTUDISC_PROBE:Set DF but ignore Path MTU.
-Path MTU discovery フラグ:意味
+Path MTU discovery 値:意味
 IP_PMTUDISC_WANT:ルートごとの設定を用いる。
 IP_PMTUDISC_DONT:Path MTU Discovery を行わない。
 IP_PMTUDISC_DO:常に Path MTU Discovery を行う。
 IP_PMTUDISC_PROBE:DFビットをセットするが、Path MTU を無視する。
 .TE
 
-.\"O When PMTU discovery is enabled, the kernel automatically keeps track of
-.\"O the path MTU per destination host.
-.\"O When it is connected to a specific peer with
-.\"O .BR connect (2),
-.\"O the currently known path MTU can be retrieved conveniently using the
-.\"O .B IP_MTU
-.\"O socket option (e.g., after a
-.\"O .B EMSGSIZE
-.\"O error occurred).
-.\"O It may change over time.
-.\"O For connectionless sockets with many destinations,
-.\"O the new MTU for a given destination can also be accessed using the
-.\"O error queue (see
-.\"O .BR IP_RECVERR ).
-.\"O A new error will be queued for every incoming MTU update.
-path MTU discovery が有効になっていると、カーネルは宛先ホストごとに
-自動的に path MTU を処理する。特定の相手に
-.BR connect (2)
-で接続した場合には、
-.B IP_MTU
-ソケットオプションを用いれば、既知の path MTU の取得に便利である
-(たとえば
-.B EMSGSIZE
-エラーが起きた後など)。これは時間とともに変化するかもしれない。
-宛先がたくさんあるコネクションレスなソケットでは、
-与えられた宛先に対する新しい MTU にも、
-エラーキューを用いてアクセスすることができる
-.RB ( IP_RECVERR
-を見よ)。
-MTU 更新が到着するごとに、新たなエラーがキューイングされる。
+path MTU discovery が有効になっていると、カーネルは宛先ホストごとに 自動的に
+path MTU を処理する。特定の相手に \fBconnect\fP(2) で接続した場合には、
+\fBIP_MTU\fP ソケットオプションを用いれば、既知の path MTU の取得に便利である
+(たとえば \fBEMSGSIZE\fP エラーが起きた後など)。 path MTU は時間とともに変化する
+かもしれない。 宛先がたくさんあるコネクションレスなソケットでは、 与えられた
+宛先に対する新しい MTU にも、 エラーキューを用いてアクセスすることができる
+(\fBIP_RECVERR\fP を見よ)。 MTU 更新が到着するごとに、新たなエラーがキューイング
+される。
 
-.\"O While MTU discovery is in progress, initial packets from datagram sockets
-.\"O may be dropped.
-.\"O Applications using UDP should be aware of this and not
-.\"O take it into account for their packet retransmit strategy.
-MTU discovery の進行中には、データグラムソケットからの初期パケットは
-到着しないかもしれない。 UDP を用いるアプリケーションでは、
-このことを気にかけておき、
-パケットの再送アルゴリズムにこの分を除外させるべきである。
+MTU discovery の進行中には、データグラムソケットからの初期パケットは 到着しないかもしれない。 UDP を用いるアプリケーションでは、
+このことを気にかけておき、 パケットの再送アルゴリズムにこの分を除外させるべきである。
 
-.\"O To bootstrap the path MTU discovery process on unconnected sockets, it
-.\"O is possible to start with a big datagram size
-.\"O (up to 64K-headers bytes long) and let it shrink by updates of the path MTU.
-接続していないソケットに対して
-path MTU discovery プロセスを立ち上げるには、
-大きなデータグラムサイズ (最大 64K ヘッダバイト長) からはじめて、
-path MTU が更新されるまでサイズを縮めていくことも可能である。
 .\" FIXME this is an ugly hack
+接続していないソケットに対して path MTU discovery プロセスを立ち上げるには、 大きなデータグラムサイズ (最大 64K
+ヘッダバイト長) からはじめて、 path MTU が更新されるまでサイズを縮めていくことも可能である。
 
-.\"O To get an initial estimate of the
-.\"O path MTU, connect a datagram socket to the destination address using
-.\"O .BR connect (2)
-.\"O and retrieve the MTU by calling
-.\"O .BR getsockopt (2)
-.\"O with the
-.\"O .B IP_MTU
-.\"O option.
-path MTU の値をまず見積もってみるには、宛先アドレスに
-.BR connect (2)
-を使ってデータグラムソケットを接続し、
-.BR getsockopt (2)
-を
-.B IP_MTU
-オプションとともに呼び、 MTU を取得することである。
+path MTU の値をまず見積もってみるには、宛先アドレスに \fBconnect\fP(2)  を使ってデータグラムソケットを接続し、
+\fBgetsockopt\fP(2)  を \fBIP_MTU\fP オプションとともに呼び、 MTU を取得することである。
 
-.\"O It is possible to implement RFC 4821 MTU probing with
-.\"O .B SOCK_DGRAM
-.\"O or
-.\"O .B SOCK_RAW
-.\"O sockets by setting a value of
-.\"O .BR IP_PMTUDISC_PROBE
-.\"O (available since Linux 2.6.22).
-.\"O This is also particularly useful for diagnostic tools such as
-.\"O .BR tracepath (8)
-.\"O that wish to deliberately send probe packets larger than
-.\"O the observed Path MTU.
-.B IP_PMTUDISC_PROBE
-(Linux 2.6.22 以降で利用可能) を設定することで、
-.B SOCK_DGRAM
-や
-.B SOCK_RAW
-のソケットで RFC 4821 の MTU 探索を実装することが可能である。
-また、この機能は、
-.BR tracepath (8)
-のような診断ツールで特に有用である。これらのツールでは、
-観測された Path MTU よりも大きな探索パケットを意図的に
-送信しようとする。
-.TP
-.\"O .BR IP_MULTICAST_IF " (since Linux 1.2)"
-.BR IP_MULTICAST_IF " (Linux 1.2 以降)"
-.\"O Set the local device for a multicast socket.
-.\"O Argument is an
-.\"O .I ip_mreqn
-.\"O or
-.\"O .I ip_mreq
-.\"O structure similar to
-.\"O .BR IP_ADD_MEMBERSHIP .
-ローカルデバイスをマルチキャストソケットとして設定する。引き数は
-.B IP_ADD_MEMBERSHIP
-と同様に
-.I ip_mreqn
-または
-.I ip_mreq
-構造体である。
+\fBIP_PMTUDISC_PROBE\fP (Linux 2.6.22 以降で利用可能) を設定することで、 \fBSOCK_DGRAM\fP や
+\fBSOCK_RAW\fP のソケットで RFC 4821 の MTU 探索を実装することが可能である。 また、この機能は、 \fBtracepath\fP(8)
+のような診断ツールで特に有用である。これらのツールでは、 観測された Path MTU よりも大きな探索パケットを意図的に 送信しようとする。
+.TP 
+\fBIP_MULTICAST_IF\fP (Linux 1.2 以降)
+ローカルデバイスをマルチキャストソケットとして設定する。引き数は \fBIP_ADD_MEMBERSHIP\fP と同様に \fIip_mreqn\fP または
+\fIip_mreq\fP 構造体である。
 .IP
-.\"O When an invalid socket option is passed,
-.\"O .B ENOPROTOOPT
-.\"O is returned.
-不正なソケットオプションが渡されると、
-.B ENOPROTOOPT
-が返される。
-.TP
-.\"O .BR IP_MULTICAST_LOOP " (since Linux 1.2)"
-.BR IP_MULTICAST_LOOP " (Linux 1.2 以降)"
-.\"O Set or read a boolean integer argument that determines whether
-.\"O sent multicast packets should be looped back to the local sockets.
-マルチキャストパケットをローカルなソケットにループバックするかどうかを
-定めるブール値の整数引き数を設定・取得する。
-.TP
-.\"O .BR IP_MULTICAST_TTL " (since Linux 1.2)"
-.BR IP_MULTICAST_TTL " (Linux 1.2 以降)"
-.\"O Set or read the time-to-live value of outgoing multicast packets for this
-.\"O socket.
-.\"O It is very important for multicast packets to set the smallest TTL possible.
-.\"O The default is 1 which means that multicast packets don't leave the local
-.\"O network unless the user program explicitly requests it.
-.\"O Argument is an integer.
-このソケットから発信されるマルチキャストパケットの
-time-to-live 値を設定・取得する。
-マルチキャストパケットに対しては、できるだけ小さな
-TTL に設定することがとても重要である。デフォルトは 1 で、
-ユーザープログラムが明示的に要求しない限り
-マルチキャストパケットはローカルなネットワークから出ないことになる。
-引き数に整数を取る。
-.TP
-.\"O .BR IP_OPTIONS " (since Linux 2.0)"
-.BR IP_OPTIONS " (Linux 2.0 以降)"
+不正なソケットオプションが渡されると、 \fBENOPROTOOPT\fP が返される。
+.TP 
+\fBIP_MULTICAST_LOOP\fP (Linux 1.2 以降)
+マルチキャストパケットをローカルなソケットにループバックするかどうかを 定めるブール値の整数引き数を設定・取得する。
+.TP 
+\fBIP_MULTICAST_TTL\fP (Linux 1.2 以降)
+このソケットから発信されるマルチキャストパケットの time\-to\-live 値を設定・取得する。 マルチキャストパケットに対しては、できるだけ小さな
+TTL に設定することがとても重要である。デフォルトは 1 で、 ユーザープログラムが明示的に要求しない限り
+マルチキャストパケットはローカルなネットワークから出ないことになる。 引き数に整数を取る。
+.TP 
+\fBIP_NODEFRAG\fP (Linux 2.6.36 以降)
+有効 (引き数が 0 以外の場合) になっていると、netfilter 層での出力パケットの
+再構築 (reassembly) が行われなくなる。このオプションは \fBSOCK_RAW\fP ソケット
+においてのみ有効である。引き数は整数である。
+.TP 
+\fBIP_OPTIONS\fP (Linux 2.0 以降)
 .\" Precisely: 1.3.30
-.\"O Set or get the IP options to be sent with every packet from this socket.
-.\"O The arguments are a pointer to a memory buffer containing the options
-.\"O and the option length.
-このソケットから送られるパケット全てに付随する IP オプションを
-設定・取得する。オプションを保存しているメモリバッファへのポインタと
-オプションの長さとを引き数に取る。
-.\"O The
-.\"O .BR setsockopt (2)
-.\"O call sets the IP options associated with a socket.
-.\"O The maximum option size for IPv4 is 40 bytes.
-.\"O See RFC\ 791 for the allowed options.
-.\"O When the initial connection request packet for a
-.\"O .B SOCK_STREAM
-.\"O socket contains IP options, the IP options will be set automatically
-.\"O to the options from the initial packet with routing headers reversed.
-.\"O Incoming packets are not allowed to change options after the connection
-.\"O is established.
-.BR setsockopt (2)
-を呼び出すと、ソケットに関連づけられる IP オプションを設定できる。
-IPv4 におけるオプションのサイズの最大値は 40 バイトである。
-用いることのできるオプションについては RFC\ 791 を見よ。
-.B SOCK_STREAM
-ソケットに対する初期接続要求パケットに IP オプションが含まれていると、
-ルーティングヘッダを付けて戻されてくる初期パケットの
-IP オプションに同じオプションがセットされる。接続が確立された後、
-やってきたパケットのオプションを変更することはできない。
-.\"O The processing of all incoming source routing options
-.\"O is disabled by default and can be enabled by using the
-.\"O .I accept_source_route
-.\"O .I /proc
-.\"O interface.
-.\"O Other options like timestamps are still handled.
-.\"O For datagram sockets, IP options can be only set by the local user.
-.\"O Calling
-.\"O .BR getsockopt (2)
-.\"O with
-.\"O .B IP_OPTIONS
-.\"O puts the current IP options used for sending into the supplied buffer.
-デフォルトでは。外部から受信したパケットの全ての source routing オプション
-の処理は無効となっており、
-.I /proc
-インタフェースの
-.I accept_source_route
-を使うとこれを有効にできる。これを無効にしていても timestamps など
-の他のオプションの処理は行われる。データグラムソケットでは、
-IP オプションはローカルユーザーしか設定できない。
-.BR getsockopt (2)
-を
-.B IP_OPTIONS
-をつけて呼ぶと、現在送信に用いられている IP オプションを
-引き数に与えたバッファに取得できる。
 .\" FIXME Document IP_PASSSEC
 .\" Boolean
 .\" Since Linux 2.6.17
 .\" commit 2c7946a7bf45ae86736ab3b43d0085e43947945c
 .\" Author: Catherine Zhang <cxzhang@watson.ibm.com>
-.TP
-.\"O .BR IP_PKTINFO " (since Linux 2.2)"
-.BR IP_PKTINFO " (Linux 2.2 以降)"
+このソケットから送られるパケット全てに付随する IP オプションを 設定・取得する。オプションを保存しているメモリバッファへのポインタと
+オプションの長さとを引き数に取る。 \fBsetsockopt\fP(2)  を呼び出すと、ソケットに関連づけられる IP オプションを設定できる。 IPv4
+におけるオプションのサイズの最大値は 40 バイトである。 用いることのできるオプションについては RFC\ 791 を見よ。
+\fBSOCK_STREAM\fP ソケットに対する初期接続要求パケットに IP オプションが含まれていると、
+ルーティングヘッダを付けて戻されてくる初期パケットの IP オプションに同じオプションがセットされる。接続が確立された後、
+やってきたパケットのオプションを変更することはできない。 デフォルトでは。外部から受信したパケットの全ての source routing オプション
+の処理は無効となっており、 \fI/proc\fP インタフェースの \fIaccept_source_route\fP
+を使うとこれを有効にできる。これを無効にしていても timestamps など の他のオプションの処理は行われる。データグラムソケットでは、 IP
+オプションはローカルユーザーしか設定できない。 \fBgetsockopt\fP(2)  を \fBIP_OPTIONS\fP
+をつけて呼ぶと、現在送信に用いられている IP オプションを 引き数に与えたバッファに取得できる。
+.TP 
+\fBIP_PKTINFO\fP (Linux 2.2 以降)
 .\" Precisely: 2.1.68
-.\"O Pass an
-.\"O .B IP_PKTINFO
-.\"O ancillary message that contains a
-.\"O .I pktinfo
-.\"O structure that supplies some information about the incoming packet.
-.\"O This only works for datagram oriented sockets.
-.B IP_PKTINFO
-補助メッセージを渡す。これには到着パケットに関する情報を提供する
-.I pktinfo
-構造体が含まれている。
-データグラム指向のソケットでしか動作しない。
-.\"O The argument is a flag that tells the socket whether the
-.\"O .B IP_PKTINFO
-.\"O message should be passed or not.
-.\"O The message itself can only be sent/retrieved
-.\"O as control message with a packet using
-.\"O .BR recvmsg (2)
-.\"O or
-.\"O .BR sendmsg (2).
-引き数は
-.B IP_PKTINFO
-メッセージを通過させるかどうかをソケットに知らせるフラグである。
-メッセージ自身は
-.BR recvmsg (2)
-または
-.BR sendmsg (2)
-を用いたパケットの制御メッセージとしてのみ送受信できる。
-
+\fBIP_PKTINFO\fP 補助メッセージを渡す。これには到着パケットに関する情報を提供する \fIpktinfo\fP 構造体が含まれている。
+データグラム指向のソケットでしか動作しない。 引き数は \fBIP_PKTINFO\fP メッセージを通過させるかどうかをソケットに知らせるフラグである。
+メッセージ自身は \fBrecvmsg\fP(2)  または \fBsendmsg\fP(2)  を用いたパケットの制御メッセージとしてのみ送受信できる。
 .IP
 .in +4n
 .nf
@@ -826,101 +281,24 @@ struct in_pktinfo {
 .in
 .IP
 .\" FIXME elaborate on that.
-.\"O .I ipi_ifindex
-.\"O is the unique index of the interface the packet was received on.
-.I ipi_ifindex
-はパケットが受信されたインターフェースの、他と重ならないインデックスである。
-.\"O .I ipi_spec_dst
-.\"O is the local address of the packet and
-.\"O .I ipi_addr
-.\"O is the destination address in the packet header.
-.I ipi_spec_dst
-はパケットのローカルアドレスである。
-.I ipi_addr
-はパケットヘッダにある宛先アドレスである。
-.\"O If
-.\"O .B IP_PKTINFO
-.\"O is passed to
-.\"O .BR sendmsg (2)
-.\"O and
-.\"O .\" This field is grossly misnamed
-.\"O .I ipi_spec_dst
-.\"O is not zero, then it is used as the local source address for the routing
-.\"O table lookup and for setting up IP source route options.
-.B IP_PKTINFO
-が
-.BR sendmsg (2)
-に渡されて、かつ
-.\" このフィールドは、名前の付け方が明らかに間違っているのだが
-.I ipi_spec_dst
-が 0 以外の場合、
-.I ipi_spec_dst
-はルーティングテーブルを検索する際にローカルな送信元アドレスとして使用され、
-IP source route オプションを設定するのにも使用される。
-.\"O When
-.\"O .I ipi_ifindex
-.\"O is not zero, the primary local address of the interface specified by the
-.\"O index overwrites
-.\"O .I ipi_spec_dst
-.\"O for the routing table lookup.
-.I ipi_ifindex
-が 0 以外の場合、このインデックスによって指定されるインターフェースの
-プライマリローカルアドレスで
-.I ipi_spec_dst
-を上書きし、ルーティングテーブルを検索する。
-.TP
-.\"O .BR IP_RECVERR " (since Linux 2.2)"
-.BR IP_RECVERR " (Linux 2.2 以降)"
+.\" This field is grossly misnamed
+\fIipi_ifindex\fP はパケットが受信されたインターフェースの、他と重ならないインデックスである。 \fIipi_spec_dst\fP
+はパケットのローカルアドレスである。 \fIipi_addr\fP はパケットヘッダにある宛先アドレスである。 \fBIP_PKTINFO\fP が
+\fBsendmsg\fP(2)  に渡されて、かつ \fIipi_spec_dst\fP が 0 以外の場合、 \fIipi_spec_dst\fP
+はルーティングテーブルを検索する際にローカルな送信元アドレスとして使用され、 IP source route オプションを設定するのにも使用される。
+\fIipi_ifindex\fP が 0 以外の場合、このインデックスによって指定されるインターフェースの プライマリローカルアドレスで
+\fIipi_spec_dst\fP を上書きし、ルーティングテーブルを検索する。
+.TP 
+\fBIP_RECVERR\fP (Linux 2.2 以降)
 .\" Precisely: 2.1.15
-.\"O Enable extended reliable error message passing.
-.\"O When enabled on a datagram socket, all
-.\"O generated errors will be queued in a per-socket error queue.
-.\"O When the user receives an error from a socket operation,
-.\"O the errors can be received by calling
-.\"O .BR recvmsg (2)
-.\"O with the
-.\"O .B MSG_ERRQUEUE
-.\"O flag set.
-.\"O The
-.\"O .I sock_extended_err
-.\"O structure describing the error will be passed in an ancillary message with
-.\"O the type
-.\"O .B IP_RECVERR
-.\"O and the level
-.\"O .BR IPPROTO_IP .
-.\"O .\" or SOL_IP on Linux
-.\"O This is useful for reliable error handling on unconnected sockets.
-.\"O The received data portion of the error queue contains the error packet.
-エラーメッセージの受け渡しに、信頼性の高い拡張された方法を有効にする。
-データグラムソケットに対して有効になっていると、
-発生したエラーは全てソケットごとのエラーキューに保存される。
-ユーザーはソケット操作からエラーを受け取ったとき、
-.BR recvmsg (2)
-を
-.B MSG_ERRQUEUE
-フラグとともに呼べばそのエラーを取得できる。
-そのエラーを記述する
-.I sock_extended_err
-構造体が、タイプ
-.BR IP_RECVERR ・
-レベル
-.B IPPROTO_IP
-.\" Linux では SOL_IP も可
-の補助メッセージとして渡される。
-これは接続志向でないソケットで信頼性の高いエラー処理を行いたい場合に
-有用である。エラーキューの受信データフラグメントには
-エラーパケットが含まれる。
-.\"NAKANO portion をフラグメントって言っちゃっていいのか?
+.\" or SOL_IP on Linux
+エラーメッセージの受け渡しに、信頼性の高い拡張された方法を有効にする。 データグラムソケットに対して有効になっていると、
+発生したエラーは全てソケットごとのエラーキューに保存される。 ユーザーはソケット操作からエラーを受け取ったとき、 \fBrecvmsg\fP(2)  を
+\fBMSG_ERRQUEUE\fP フラグとともに呼べばそのエラーを取得できる。 そのエラーを記述する \fIsock_extended_err\fP
+構造体が、タイプ \fBIP_RECVERR\fP・ レベル \fBIPPROTO_IP\fP の補助メッセージとして渡される。
+これは接続志向でないソケットで信頼性の高いエラー処理を行いたい場合に 有用である。エラーキューの受信データフラグメントには エラーパケットが含まれる。
 .IP
-.\"O The
-.\"O .B IP_RECVERR
-.\"O control message contains a
-.\"O .I sock_extended_err
-.\"O structure:
-.B IP_RECVERR
-制御メッセージには
-.I sock_extended_err
-構造体が含まれる:
+\fBIP_RECVERR\fP 制御メッセージには \fIsock_extended_err\fP 構造体が含まれる:
 .IP
 .in +4n
 .ne 18
@@ -945,888 +323,343 @@ struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);
 .fi
 .in
 .IP
-.\"O .I ee_errno
-.\"O contains the
-.\"O .I errno
-.\"O number of the queued error.
-.\"O .I ee_origin
-.\"O is the origin code of where the error originated.
-.I ee_errno
-にはキューに入っているエラーの
-.I errno
-番号が入る。
-.I ee_origin
-にはエラーが発生した場所を示すコードが入る。
-.\"O The other fields are protocol-specific.
-.\"O The macro
-.\"O .B SO_EE_OFFENDER
-.\"O returns a pointer to the address of the network object
-.\"O where the error originated from given a pointer to the ancillary message.
-その他のフィールドはプロトコル依存である。
-.B SO_EE_OFFENDER
-マクロは与えられた補助メッセージへのポインタから
-エラーの発生したネットワークオブジェクトのアドレスへのポインタを返す。
-.\"O If this address is not known, the
-.\"O .I sa_family
-.\"O member of the
-.\"O .I sockaddr
-.\"O contains
-.\"O .B AF_UNSPEC
-.\"O and the other fields of the
-.\"O .I sockaddr
-.\"O are undefined.
-アドレスが不明な場合、
-.I sockaddr
-構造体の
-.I sa_family
-フィールドは
-.B AF_UNSPEC
-となり、その他のフィールド値は不定である。
+\fIee_errno\fP にはキューに入っているエラーの \fIerrno\fP 番号が入る。 \fIee_origin\fP
+にはエラーが発生した場所を示すコードが入る。 その他のフィールドはプロトコル依存である。 \fBSO_EE_OFFENDER\fP
+マクロは与えられた補助メッセージへのポインタから エラーの発生したネットワークオブジェクトのアドレスへのポインタを返す。 アドレスが不明な場合、
+\fIsockaddr\fP 構造体の \fIsa_family\fP フィールドは \fBAF_UNSPEC\fP となり、その他のフィールド値は不定である。
 .IP
-.\"O IP uses the
-.\"O .I sock_extended_err
-.\"O structure as follows:
-IP は以下のような
-.I sock_extended_err
-構造体を用いる:
-.\"O .I ee_origin
-.\"O is set to
-.\"O .B SO_EE_ORIGIN_ICMP
-.\"O for errors received as an ICMP packet, or
-.\"O .B SO_EE_ORIGIN_LOCAL
-.\"O for locally generated errors.
-.\"O Unknown values should be ignored.
-.I ee_origin
-は、
-エラーが ICMP パケットとして受信された場合には
-.B SO_EE_ORIGIN_ICMP
-にセットされ、ローカルで起こった場合には
-.B SO_EE_ORIGIN_LOCAL
-にセットされる。
-不明な値は無視される。
-.\"O .I ee_type
-.\"O and
-.\"O .I ee_code
-.\"O are set from the type and code fields of the ICMP header.
-.I ee_type
-と
-.I ee_code
-は ICMP ヘッダの type フィールドと code フィールドの値にセットされる。
-.\"O .I ee_info
-.\"O contains the discovered MTU for
-.\"O .B EMSGSIZE
-.\"O errors.
-.\"O The message also contains the
-.\"O .I sockaddr_in of the node
-.\"O caused the error, which can be accessed with the
-.\"O .B SO_EE_OFFENDER
-.\"O macro.
-.\"O The
-.\"O .I sin_family
-.\"O field of the SO_EE_OFFENDER address is
-.\"O .B AF_UNSPEC
-.\"O when the source was unknown.
-.I ee_info
-には
-.B EMSGSIZE
-エラーに対する discover された MTU が入る。
-メッセージにはエラーを引き起こしたノードの
-.I sockaddr_in
-構造体も含まれる。
-これには
-.B SO_EE_OFFENDER
-マクロを使ってアクセスできる。
-ソースが不明の場合、
-SO_EE_OFFENDER アドレスの
-.I sin_family
-フィールドは
-.B AF_UNSPEC
-となる。
-.\"O When the error originated from the network, all IP options
-.\"O .RI ( IP_OPTIONS ", " IP_TTL ", "
-.\"O etc.) enabled on the socket and contained in the
-.\"O error packet are passed as control messages.
-.\"O The payload of the packet causing the error is returned as normal payload.
-エラーがネットワークで起きた場合には、
-ソケットで有効になっていたすべての IP オプション
-.RB ( IP_OPTIONS ", " IP_TTL
-など) とエラーパケットに含まれていたすべての IP オプションとが、
-制御メッセージとして渡される。
-エラーを起こしたパケットのペイロード (payload) は
-普通のペイロードとして返される。
-.\" FIXME . is it a good idea to document that? It is a dubious feature.
-.\"O .\" On
-.\"O .\" .B SOCK_STREAM
-.\"O .\" sockets,
-.\"O .\" .B IP_RECVERR
-.\"O .\" has slightly different semantics. Instead of
-.\"O .\" saving the errors for the next timeout, it passes all incoming
-.\"O .\" errors immediately to the user.
-.\"O .\" This might be useful for very short-lived TCP connections which
-.\"O .\" need fast error handling. Use this option with care:
-.\"O .\" it makes TCP unreliable
-.\"O .\" by not allowing it to recover properly from routing
-.\"O .\" shifts and other normal
-.\"O .\" conditions and breaks the protocol specification.
+.\" FIXME . Is it a good idea to document that? It is a dubious feature.
+.\" On
 .\" .B SOCK_STREAM
-.\" ソケットでは、
+.\" sockets,
 .\" .B IP_RECVERR
-.\" はやや異なる意味を持つ。次のタイムアウトまでデータを保持するのでなく、
-.\" やってきたエラーは全てただちにユーザーに渡される。これは、
-.\" 高速なエラー処理が必要となるような、極端に寿命の短い
-.\" TCP 接続に対して有用である。このオプションは注意して用いること。
-.\" 経路が変わったり、その他通常の状況に対して、適切な回復が不可能となり、
-.\" TCP の信頼性を低くしてしまう。またプロトコルの仕様に反してしまう。
-.\"O Note that TCP has no error queue;
-.\"O .B MSG_ERRQUEUE
-.\"O is not permitted on
-.\"O .B SOCK_STREAM
-.\"O sockets.
-.\"O .B IP_RECVERR
-.\"O is valid for TCP, but all errors are returned by socket function return or
-.\"O .B SO_ERROR
-.\"O only.
-TCP にはエラーキューがないことに注意してほしい。
-.B MSG_ERRQUEUE
-は
-.B SOCK_STREAM
-ソケットに対しては使えない。
-TCP では
-.B IP_RECVERR
\81 ã\81\91ã\81\8cæ\9c\89å\8a¹ã\81 ã\81\8cã\80\81ã\82½ã\82±ã\83\83ã\83\88é\96¢æ\95°ã\81\8bã\82\89è¿\94ã\81\95ã\82\8cã\82\8bã\82¨ã\83©ã\83¼ã\81¯
-.B SO_ERROR
-だけになる。
+.\" has slightly different semantics. Instead of
+.\" saving the errors for the next timeout, it passes all incoming
+.\" errors immediately to the user.
+.\" This might be useful for very short-lived TCP connections which
+.\" need fast error handling. Use this option with care:
+.\" it makes TCP unreliable
+.\" by not allowing it to recover properly from routing
+.\" shifts and other normal
+.\" conditions and breaks the protocol specification.
+IP は以下のような \fIsock_extended_err\fP 構造体を用いる: \fIee_origin\fP は、エラー
+が ICMP パケットとして受信された場合には \fBSO_EE_ORIGIN_ICMP\fP にセットされ、
+ローカルで起こった場合には \fBSO_EE_ORIGIN_LOCAL\fP にセットされる。 不明な値は
+無視される。 \fIee_type\fP と \fIee_code\fP は ICMP ヘッダの type フィールドと
+code フィールドの値にセットされる。 \fIee_info\fP には \fBEMSGSIZE\fP エラーに対す
+る discover された MTU が入る。 メッセージにはエラーを引き起こしたノードの
+\fIsockaddr_in\fP 構造体も含まれる。 これには \fBSO_EE_OFFENDER\fP マクロを使ってア
+クセスできる。 ソースが不明の場合、 \fBSO_EE_OFFENDER\fP アドレスの
+\fIsin_family\fP フィールドは \fBAF_UNSPEC\fP となる。 エラーがネットワークで起きた
+場合には、 ソケットで有効になっていたすべての IP オプション (\fBIP_OPTIONS\fP,
+\fBIP_TTL\fP など) とエラーパケットに含まれていたすべての IP オプションとが、 制
+御メッセージとして渡される。 エラーを起こしたパケットのペイロード (payload)
+は 普通のペイロードとして返される。 TCP にはエラーキューがないことに注意して
\81»ã\81\97ã\81\84ã\80\82 \fBMSG_ERRQUEUE\fP ã\81¯ \fBSOCK_STREAM\fP ã\82½ã\82±ã\83\83ã\83\88ã\81«å¯¾ã\81\97ã\81¦ã\81¯ä½¿ã\81\88ã\81ªã\81\84ã\80\82 TCP
+では \fBIP_RECVERR\fP だけが有効だが、ソケット関数から返されるエラーは
+\fBSO_ERROR\fP だけになる。
 .IP
-.\"O For raw sockets,
-.\"O .B IP_RECVERR
-.\"O enables passing of all received ICMP errors to the
-.\"O application, otherwise errors are only reported on connected sockets
-raw ソケットに対して
-.B IP_RECVERR
-を指定すると、受信したすべての ICMP エラーをアプリケーションに
-渡すようになる。指定しないと、
-接続済みのソケットに対するエラーだけを報告する。
+raw ソケットに対して \fBIP_RECVERR\fP を指定すると、受信したすべての ICMP エラーをアプリケーションに
+渡すようになる。指定しないと、 接続済みのソケットに対するエラーだけを報告する。
 .IP
-.\"O It sets or retrieves an integer boolean flag.
-.\"O .B IP_RECVERR
-.\"O defaults to off.
-このオプションはブール値のフラグを設定・取得する。
-.B IP_RECVERR
-はデフォルトではオフになっている。
-.TP
-.\"O .BR IP_RECVOPTS " (since Linux 2.2)"
-.BR IP_RECVOPTS " (Linux 2.2 以降)"
+このオプションはブール値のフラグを設定・取得する。 \fBIP_RECVERR\fP はデフォルトではオフになっている。
+.TP 
+\fBIP_RECVOPTS\fP (Linux 2.2 以降)
 .\" Precisely: 2.1.15
-.\"O Pass all incoming IP options to the user in a
-.\"O .B IP_OPTIONS
-.\"O control message.
-.\"O The routing header and other options are already filled in
-.\"O for the local host.
-.\"O Not supported for
-.\"O .B SOCK_STREAM
-.\"O sockets.
-到着した全ての IP オプションを
-.B IP_OPTION
-コントロールメッセージに入れてユーザーに渡す。
-ルーティングヘッダとその他のオプションとは、
-ローカルホストに対してはあらかじめ記入されている。
-.B SOCK_STREAM
+到着した全ての IP オプションを \fBIP_OPTION\fP コントロールメッセージに入れてユーザーに渡す。
+ルーティングヘッダとその他のオプションとは、 ローカルホストに対してはあらかじめ記入されている。 \fBSOCK_STREAM\fP
 ソケットではサポートされていない。
-.TP
-.\"O .BR IP_RECVTOS " (since Linux 2.2)"
-.BR IP_RECVTOS " (Linux 2.2 以降)"
+.TP 
+\fBIP_RECVORIGDSTADDR\fP (Linux 2.6.29 以降)
+.\" commit e8b2dfe9b4501ed0047459b2756ba26e5a940a69
+このブール値のオプションがセットされると、
+\fBrecvmsg\fP(2) で \fBIP_ORIGDSTADDR\fP 補助メッセージが有効になる。
+カーネルはデータグラムを受信した元の宛先アドレスをこの補助メッセージで返す。
+この補助メッセージには \fIstruct sockaddr_in\fP が格納される。
+.TP 
+\fBIP_RECVTOS\fP (Linux 2.2 以降)
 .\" Precisely: 2.1.68
-.\"O If enabled the
-.\"O .B IP_TOS
-.\"O ancillary message is passed with incoming packets.
-.\"O It contains a byte which specifies the Type of Service/Precedence
-.\"O field of the packet header.
-.\"O Expects a boolean integer flag.
-有効になっていると、
-.B IP_TOS
-補助メッセージが到着パケットとともに渡される。
-これにはパケットヘッダの Service/Precedence
-フィールドのタイプを指定するバイトデータが含まれている。
-ブール整数値のフラグをとる。
-.TP
-.\"O .BR IP_RECVTTL " (since Linux 2.2)"
-.BR IP_RECVTTL " (Linux 2.2 以降)"
+有効になっていると、 \fBIP_TOS\fP 補助メッセージが到着パケットとともに渡される。 これにはパケットヘッダの Service/Precedence
+フィールドのタイプを指定するバイトデータが含まれている。 ブール整数値のフラグをとる。
+.TP 
+\fBIP_RECVTTL\fP (Linux 2.2 以降)
 .\" Precisely: 2.1.68
-.\"O When this flag is set, pass a
-.\"O .B IP_TTL
-.\"O control message with the time to live
-.\"O field of the received packet as a byte.
-.\"O Not supported for
-.\"O .B SOCK_STREAM
-.\"O sockets.
-このフラグがセットされていると、
-.B IP_TTL
-コントロールメッセージが受信パケットの
-time-to-live フィールドのバイトデータとともに渡される。
-.B SOCK_STREAM
-ソケットではサポートされていない。
-.TP
-.B IP_RETOPTS
-.\"O .BR IP_RETOPTS " (since Linux 2.2)"
-.BR IP_RETOPTS " (Linux 2.2 以降)"
+このフラグがセットされていると、 \fBIP_TTL\fP コントロールメッセージが受信パケットの time\-to\-live
+フィールドのバイトデータとともに渡される。 \fBSOCK_STREAM\fP ソケットではサポートされていない。
+.TP 
+\fBIP_RETOPTS\fP
 .\" Precisely: 2.1.15
-.\"O Identical to
-.\"O .BR IP_RECVOPTS ,
-.\"O but returns raw unprocessed options with timestamp and route record
-.\"O options not filled in for this hop.
-.B IP_RECVOPTS
-と等価だが、未処理の生のオプションを、
-この hop では記入されない timestamp レコードと route レコードとともに返す。
-.\"NAKANO 意味不明...(^^;
-.TP
-.\"O .BR IP_ROUTER_ALERT " (since Linux 2.2)"
-.BR IP_ROUTER_ALERT " (Linux 2.2 以降)"
+\fBIP_RETOPTS\fP (Linux 2.2 以降)  \fBIP_RECVOPTS\fP と等価だが、未処理の生のオプションを、 この hop
+では記入されない timestamp レコードと route レコードとともに返す。
+.TP 
+\fBIP_ROUTER_ALERT\fP (Linux 2.2 以降)
 .\" Precisely: 2.1.68
-.\"O Pass all to-be forwarded packets with the
-.\"O IP Router Alert option set to this socket.
-.\"O Only valid for raw sockets.
-.\"O This is useful, for instance, for user-space RSVP daemons.
-.\"O The tapped packets are not forwarded by the kernel; it is
-.\"O the user's responsibility to send them out again.
-.\"O Socket binding is ignored,
-.\"O such packets are only filtered by protocol.
-.\"O Expects an integer flag.
-フォワードすべきパケットを IP Router Alert オプションをつけて
-このソケットに渡す。
-raw ソケットに対してのみ有効である。これはたとえばユーザー空間の
-RSVP デーモンに対して便利である。タップされたパケットは
-カーネルによってはフォワードされないので、これらを再送するのは
-ユーザーの責任となる。ソケットのバインドは無視され、
-このようなパケットはプロトコルによってのみフィルタリングされる。
-整数値のフラグを取る。
-.\"NAKANO Socket binding... の文、意味わからん。
-.TP
-.\"O .BR IP_TOS " (since Linux 1.0)"
-.BR IP_TOS " (Linux 1.0 以降)"
-.\"O Set or receive the Type-Of-Service (TOS) field that is sent
-.\"O with every IP packet originating from this socket.
-.\"O It is used to prioritize packets on the network.
-.\"O TOS is a byte.
-.\"O There are some standard TOS flags defined:
-.\"O .B IPTOS_LOWDELAY
-.\"O to minimize delays for interactive traffic,
-.\"O .B IPTOS_THROUGHPUT
-.\"O to optimize throughput,
-.\"O .B IPTOS_RELIABILITY
-.\"O to optimize for reliability,
-.\"O .B IPTOS_MINCOST
-.\"O should be used for "filler data" where slow transmission doesn't matter.
-このソケットから送信されるすべての IP パケットに適用される
-Type-Of-Service (TOS) フィールドを設定・取得する。
-これはネットワーク上でのパケットの優先度を決めるために用いられる。
-TOS はバイトデータである。標準の TOS フラグがいくつか定義されている。
-.B IPTOS_LOWDELAY
-はインタラクティブなトラフィックの遅延を最小にする。
-.B IPTOS_THROUGHPUT
-はスループットを最大にする。
-.B IPTOS_RELIABILITY
-は信頼性を最高にする。
-.B IPTOS_MINCOST
-は転送速度が遅くてもかまわないとき、「データを詰め込む」のに用いられる。
-.\"O At most one of these TOS values can be specified.
-.\"O Other bits are invalid and shall be cleared.
-これらのうち、 1 つまでだけを設定できる。
-他のビットは無効で、クリアされる。
-.\"NAKANO ↑訳あってる?
-.\"O Linux sends
-.\"O .B IPTOS_LOWDELAY
-.\"O datagrams first by default,
-.\"O but the exact behavior depends on the configured queueing discipline.
-Linux はデフォルトでは
-.B IPTOS_LOWDELAY
-データグラムを最初に送信する。
-しかし、正確な振る舞いはキュー処理の設定に依存する。
+フォワードすべきパケットを IP Router Alert オプションをつけて このソケットに渡す。 raw
+ソケットに対してのみ有効である。これはたとえばユーザー空間の RSVP デーモンに対して便利である。タップされたパケットは
+カーネルによってはフォワードされないので、これらを再送するのは ユーザーの責任となる。ソケットのバインドは無視され、
+このようなパケットはプロトコルによってのみフィルタリングされる。 整数値のフラグを取る。
+.TP 
+\fBIP_TOS\fP (Linux 1.0 以降)
 .\" FIXME elaborate on this
-.\"O Some high priority levels may require superuser privileges (the
-.\"O .B CAP_NET_ADMIN
-.\"O capability).
-.\"O The priority can also be set in a protocol independent way by the
-.\"O .RB ( SOL_SOCKET ", " SO_PRIORITY )
-.\"O socket option (see
-.\"O .BR socket (7)).
-高い優先度にするにはスーパーユーザー権限
-.RB ( CAP_NET_ADMIN
-ケーパビリティ) が必要となるかもしれない。
-優先度は
-.RB ( SOL_SOCKET ", " SO_PRIORITY )
-ソケットオプションを用いれば、
-プロトコルに依存しない形でも設定できる
-.RB ( socket (7)
-を見よ)。
-.\" FIXME Document IP_TRANSPARENT
 .\" Needs CAP_NET_ADMIN
 .\" Boolean
 .\" Since Linux 2.6.27
-.\" commit f5715aea4564f233767ea1d944b2637a5fd7cd2e
 .\" Author: KOVACS Krisztian <hidden@sch.bme.hu>
-.TP
-.\"O .BR IP_TTL " (since Linux 1.0)"
-.BR IP_TTL " (Linux 1.0 以降)"
-.\"O Set or retrieve the current time-to-live field that is used in every packet
-.\"O sent from this socket.
-time-to-live フィールドの値を設定または取得する。
-この値はこのソケットから送信されるすべてのパケットに用いられる。
+.\" http://lwn.net/Articles/252545/
+このソケットから送信されるすべての IP パケットに適用される Type\-Of\-Service (TOS) フィールドを設定・取得する。
+これはネットワーク上でのパケットの優先度を決めるために用いられる。 TOS はバイトデータである。標準の TOS フラグがいくつか定義されている。
+\fBIPTOS_LOWDELAY\fP はインタラクティブなトラフィックの遅延を最小にする。 \fBIPTOS_THROUGHPUT\fP
+はスループットを最大にする。 \fBIPTOS_RELIABILITY\fP は信頼性を最高にする。 \fBIPTOS_MINCOST\fP
+は転送速度が遅くてもかまわないとき、「データを詰め込む」のに用いられる。 これらのうち、 1 つまでだけを設定できる。
+他のビットは無効で、クリアされる。 Linux はデフォルトでは \fBIPTOS_LOWDELAY\fP データグラムを最初に送信する。
+しかし、正確な振る舞いはキュー処理の設定に依存する。 高い優先度にするにはスーパーユーザー権限 (\fBCAP_NET_ADMIN\fP ケーパビリティ)
+が必要となるかもしれない。 優先度は (\fBSOL_SOCKET\fP, \fBSO_PRIORITY\fP)  ソケットオプションを用いれば、
+プロトコルに依存しない形でも設定できる (\fBsocket\fP(7)  を見よ)。
+.TP 
+\fBIP_TRANSPARENT\fP (Linux 2.6.24 以降)
+.\" commit f5715aea4564f233767ea1d944b2637a5fd7cd2e
+.\"     This patch introduces the IP_TRANSPARENT socket option: enabling that
+.\"     will make the IPv4 routing omit the non-local source address check on
+.\"     output. Setting IP_TRANSPARENT requires NET_ADMIN capability.
+.\" http://lwn.net/Articles/252545/
+このブール値のオプションを有効にすると、
+このソケットで透過プロキシ (transparent proxy) ができるようになる。
+このソケットオプションを使うと、呼び出したアプリケーションは、
+ローカルではない IP アドレスをバインドして、ローカルの端点として自分以外の
+アドレス (foreign address) を持つクライアントやサーバの両方として
+動作できるようになる。
+\fB注意\fP: この機能が動作するためには、自分以外のアドレス宛のパケットが
+透過プロキシが動作するマシン (TProxy box) 経由で転送されるように、
+ルーティングが設定される必要がある。
+このソケットオプションを有効にするには、スーパーユーザ特権
+(\fBCAP_NET_ADMIN\fP ケーパビリティ) が必要である。
+.IP
+iptables の TPROXY ターゲットで透過プロキシリダイレクション
+(TProxy redirection) を行うには、リダイレクトされるソケットに対して
+このオプションを設定する必要がある。
+.TP 
+\fBIP_TTL\fP (Linux 1.0 以降)
 .\" FIXME Document IP_XFRM_POLICY
 .\" Since Linux 2.5.48
 .\" Needs CAP_NET_ADMIN
-.\"O .SS /proc interfaces
-.SS /proc インタフェース
-.\"O The IP protocol
-.\"O supports a set of
-.\"O .I /proc
-.\"O interfaces to configure some global parameters.
-.\"O The parameters can be accessed by reading or writing files in the directory
-.\"O .IR /proc/sys/net/ipv4/ .
-IP プロトコルでは、いくつかのグローバルパラメータを設定するための
-.I /proc
-ファイル群が用意されている。
-これらのパラメータには、
-.I /proc/sys/net/ipv4/
-ディレクトリ内のファイルの読み書きでアクセスできる。
+time\-to\-live フィールドの値を設定または取得する。 この値はこのソケットから送信されるすべてのパケットに用いられる。
+.SS "/proc インタフェース"
 .\" FIXME As at 2.6.12, 14 Jun 2005, the following are undocumented:
 .\"    ip_queue_maxlen
 .\"    ip_conntrack_max
-.\"O Interfaces described as
-.\"O .I Boolean
-.\"O take an integer value, with a nonzero value ("true") meaning that
-.\"O the corresponding option is enabled, and a zero value ("false")
-.\"O meaning that the option is disabled.
-.I Boolean
-と書かれたインタフェースは整数値をとり、
-0 以外の値 ("true") は対応するオプションが有効、
-0 値 ("false") は無効、であることを意味する。
 .\"
-.TP
-.\"O .IR ip_always_defrag " (Boolean; since Linux 2.2.13)"
-.IR ip_always_defrag " (Boolean; Linux 2.2.13 以降)"
-.\"O [New with kernel 2.2.13; in earlier kernel versions this feature
-.\"O was controlled at compile time by the
-.\"O .B CONFIG_IP_ALWAYS_DEFRAG
-.\"O option; this option is not present in 2.4.x and later]
-[2.2.13 で新規登場。以前のバージョンのカーネルでは、この機能は
-コンパイル時に
-.B CONFIG_IP_ALWAYS_DEFRAG
-オプションによって制御されていた;
-このファイルは 2.4.x 以降では存在しない]
+IP プロトコルでは、いくつかのグローバルパラメータを設定するための \fI/proc\fP ファイル群が用意されている。 これらのパラメータには、
+\fI/proc/sys/net/ipv4/\fP ディレクトリ内のファイルの読み書きでアクセスできる。 \fIBoolean\fP
+と書かれたインタフェースは整数値をとり、 0 以外の値 ("true") は対応するオプションが有効、 0 値 ("false")
+は無効、であることを意味する。
+.TP 
+\fIip_always_defrag\fP (Boolean; Linux 2.2.13 以降)
+[2.2.13 で新規登場。以前のバージョンのカーネルでは、この機能は コンパイル時に \fBCONFIG_IP_ALWAYS_DEFRAG\fP
+オプションによって制御されていた; このファイルは 2.4.x 以降では存在しない]
 
-.\"O When this boolean flag is enabled (not equal 0), incoming fragments
-.\"O (parts of IP packets
-.\"O that arose when some host between origin and destination decided
-.\"O that the packets were too large and cut them into pieces) will be
-.\"O reassembled (defragmented) before being processed, even if they are
-.\"O about to be forwarded.
-このブール値のフラグが有効になっている (0 以外になっている) と、
-到着したフラグメント (IP パケットの一部で、
-発信元と発信先の間のどこかのホストで、そのパケットが
-大きすぎると判断され、分割された場合に生じる)
-は、たとえフォワードされる場合であっても
+このブール値のフラグが有効になっている (0 以外になっている) と、 到着したフラグメント (IP パケットの一部で、
+発信元と発信先の間のどこかのホストで、そのパケットが 大きすぎると判断され、分割された場合に生じる)  は、たとえフォワードされる場合であっても
 処理前に再構築 (デフラグメント) される。
 
-.\"O Only enable if running either a firewall that is the sole link
-.\"O to your network or a transparent proxy; never ever use it for a
-.\"O normal router or host.
-.\"O Otherwise fragmented communication can be disturbed
-.\"O if the fragments travel over different links.
-.\"O Defragmentation also has a large memory and CPU time cost.
-ファイアウォールがローカル側のネットワークに唯一のリンクを持っている
-場合や、透過プロクシの場合に限って有効にすべきである。
-通常のルーターやホストでは決して使用することのないように。
-さもないとフラグメントが別のリンクを経由して伝わる場合に、
-通信のフラグメント化ができなくなってしまう。
-またフラグメント再構築処理はメモリと CPU 時間のコストが非常に大きい。
+ファイアウォールがローカル側のネットワークに唯一のリンクを持っている 場合や、透過プロクシの場合に限って有効にすべきである。
+通常のルーターやホストでは決して使用することのないように。 さもないとフラグメントが別のリンクを経由して伝わる場合に、
+通信のフラグメント化ができなくなってしまう。 またフラグメント再構築処理はメモリと CPU 時間のコストが非常に大きい。
 
-.\"O This is automagically turned on when masquerading or transparent
-.\"O proxying are configured.
-これはマスカレードや透過プロクシが設定されると、
-不思議な仕組みによって自動的に有効になる。
 .\"
-.TP
-.\"O .IR ip_autoconfig " (since Linux 2.2 to 2.6.17)"
-.IR ip_autoconfig " (Linux 2.2 以降 2.6.17 まで)"
+これはマスカレードや透過プロクシが設定されると、 不思議な仕組みによって自動的に有効になる。
+.TP 
+\fIip_autoconfig\fP (Linux 2.2 以降 2.6.17 まで)
 .\" Precisely: since 2.1.68
 .\" FIXME document ip_autoconfig
-.\"O Not documented.
-まだ記述していない。
 .\"
-.TP
-.\"O .IR ip_default_ttl " (integer; default: 64; since Linux 2.2)"
-.IR ip_default_ttl " (integer; default: 64; Linux 2.2 以降)"
+まだ記述していない。
+.TP 
+\fIip_default_ttl\fP (integer; default: 64; Linux 2.2 以降)
 .\" Precisely: 2.1.15
-.\"O Set the default time-to-live value of outgoing packets.
-.\"O This can be changed per socket with the
-.\"O .B IP_TTL
-.\"O option.
-送出されるパケットの time-to-live 値のデフォルトをセットする。
-これは
-.B IP_TTL
+.\"
+送出されるパケットの time\-to\-live 値のデフォルトをセットする。 これは \fBIP_TTL\fP
 オプションを用いれば、パケットごとに変えることもできる。
+.TP 
+\fIip_dynaddr\fP (Boolean; default: disabled; Linux 2.0.31 以降)
 .\"
-.TP
-.\"O .IR ip_dynaddr " (Boolean; default: disabled; since Linux 2.0.31)"
-.IR ip_dynaddr " (Boolean; default: disabled; Linux 2.0.31 以降)"
-.\"O Enable dynamic socket address and masquerading entry rewriting on interface
-.\"O address change.
-.\"O This is useful for dialup interface with changing IP addresses.
-.\"O 0 means no rewriting, 1 turns it on and 2 enables verbose mode.
-動的ソケットアドレスと、インターフェースアドレスが変更された際の
-マスカレードエントリの再書き込みを有効にする。
-ダイアルアップインターフェースで、
+動的ソケットアドレスと、インターフェースアドレスが変更された際の マスカレードエントリの再書き込みを有効にする。 ダイアルアップインターフェースで、
 IP アドレスが変更される場合に便利である。
+.TP 
+\fIip_forward\fP (Boolean; default: disabled; Linux 1.2 以降)
 .\"
-.TP
-.\"O .IR ip_forward " (Boolean; default: disabled; since Linux 1.2)"
-.IR ip_forward " (Boolean; default: disabled; Linux 1.2 以降)"
-.\"O Enable IP forwarding with a boolean flag.
-.\"O IP forwarding can be also set on a per-interface basis.
-IP forwarding を有効にするかどうかのブール値フラグ。
-IP forwarding するかどうかはインターフェースごとにも設定できる。
-.\"
-.TP
-.\"O .IR ip_local_port_range " (since Linux 2.2)"
-.IR ip_local_port_range " (Linux 2.2 以降)"
+IP forwarding を有効にするかどうかのブール値フラグ。 IP forwarding するかどうかはインターフェースごとにも設定できる。
+.TP 
+\fIip_local_port_range\fP (Linux 2.2 以降)
 .\" Precisely: since 2.1.68
-.\"O Contains two integers that define the default local port range
-.\"O allocated to sockets.
-.\"O Allocation starts with the first number and ends with the second number.
-.\"O Note that these should not conflict with the ports used by masquerading
-.\"O (although the case is handled).
-.\"O Also arbitrary choices may cause problems with some firewall packet
-.\"O filters that make assumptions about the local ports in use.
-.\"O First number should be at least greater than 1024,
-.\"O or better greater than 4096, to avoid clashes
-.\"O with well known ports and to minimize firewall problems.
-ソケットに割り当てられているデフォルトのローカルポートの範囲を定める
-二つの整数を与える。割り当ては 1 番目の番号から始まり、 2 番目の番号で終わる。
-これらはマスカレードで用いられているポートと重なってはならない
-(その場合も取り扱われるが)。
-ファイアウォールのパケットフィルターが「利用中のローカルポート」
-について何らかの仮定をしている場合には、
-番号を勝手に決めてしまうと問題が起きるかもしれない。
-1 番目の番号は少なくとも 1024 より大きくすべきである。
-良く使われるポートとの衝突を避けたり、ファイアウォールの問題を
-回避したければ、 4096 よりも大きくするほうが良いだろう。
 .\"
-.TP
-.\"O .IR ip_no_pmtu_disc " (Boolean; default: disabled; since Linux 2.2)"
-.IR ip_no_pmtu_disc " (Boolean; default: disabled; Linux 2.2 以降)"
+ソケットに割り当てられているデフォルトのローカルポートの範囲を定める 二つの整数を与える。割り当ては 1 番目の番号から始まり、 2
+番目の番号で終わる。 これらはマスカレードで用いられているポートと重なってはならない (その場合も取り扱われるが)。
+ファイアウォールのパケットフィルターが「利用中のローカルポート」 について何らかの仮定をしている場合には、
+番号を勝手に決めてしまうと問題が起きるかもしれない。 1 番目の番号は少なくとも 1024 より大きくすべきである。
+良く使われるポートとの衝突を避けたり、ファイアウォールの問題を 回避したければ、 4096 よりも大きくするほうが良いだろう。
+.TP 
+\fIip_no_pmtu_disc\fP (Boolean; default: disabled; Linux 2.2 以降)
 .\" Precisely: 2.1.15
-.\"O If enabled, don't do Path MTU Discovery for TCP sockets by default.
-.\"O Path MTU discovery may fail if misconfigured firewalls (that drop
-.\"O all ICMP packets) or misconfigured interfaces (e.g., a point-to-point
-.\"O link where the both ends don't agree on the MTU) are on the path.
-.\"O It is better to fix the broken routers on the path than to turn off
-.\"O Path MTU Discovery globally, because not doing it incurs a high cost
-.\"O to the network.
-有効になっていると、デフォルトで TCP ソケットに対する
-Path MTU Discoverty を行わない。
-Path MTU Discovery は、
-正しく設定されていない (ICMP パケットを全てドロップする) ファイアウォールや、
-(point-to-point リンクで双方の MTU が一致していない場合など)
-正しく設定されていないインターフェースが経路上に存在すると失敗してしまう。
-Path MTU Discovery をグローバルに無効にするよりは、
-壊れているルータを直すほうが良い。
-Path MTU Discovery を無効にするとネットワークのコストが
-大きくなってしまうからである。
 .\"
 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
-.TP
-.\"O .IR ip_nonlocal_bind " (Boolean; default: disabled; since Linux 2.4)"
-.IR ip_nonlocal_bind " (Boolean; default: disabled; Linux 2.4 以降)"
+有効になっていると、デフォルトで TCP ソケットに対する Path MTU Discoverty を行わない。 Path MTU Discovery
+は、 正しく設定されていない (ICMP パケットを全てドロップする) ファイアウォールや、 (point\-to\-point リンクで双方の MTU
+が一致していない場合など)  正しく設定されていないインターフェースが経路上に存在すると失敗してしまう。 Path MTU Discovery
+をグローバルに無効にするよりは、 壊れているルータを直すほうが良い。 Path MTU Discovery を無効にするとネットワークのコストが
+大きくなってしまうからである。
+.TP 
+\fIip_nonlocal_bind\fP (Boolean; default: disabled; Linux 2.4 以降)
 .\" Precisely: patch-2.4.0-test10
-.\"O If set, allows processes to
-.\"O .BR bind (2)
-.\"O to nonlocal IP addresses,
-.\"O which can be quite useful, but may break some applications.
-セットされていれば、プロセスが自分以外の IP アドレスを
-.BR bind (2)
-できるようになる。これはかなり便利だが、うまく動かないアプリケーションもある。
 .\"
 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
-.TP
-.IR ip6frag_time " (integer; default 30)"
-.\"O Time in seconds to keep an IPv6 fragment in memory.
-IPv6 フラグメントをメモリに保持しておく時間 (秒単位)。
+セットされていれば、プロセスが自分以外の IP アドレスを \fBbind\fP(2)
+できるようになる。これはかなり便利だが、うまく動かないアプリケーションもある。
+.TP 
+\fIip6frag_time\fP (integer; default: 30)
 .\"
 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
-.TP
-.IR ip6frag_secret_interval " (integer; default 600)"
-.\"O Regeneration interval (in seconds) of the hash secret (or lifetime
-.\"O for the hash secret) for IPv6 fragments.
-IPv6 フラグメントの hash secret の生成間隔 (hash secret の寿命)
-(秒単位)。
-.TP
-.IR ipfrag_high_thresh " (integer), " ipfrag_low_thresh " (integer)"
-.\"O If the amount of queued IP fragments reaches
-.\"O .IR ipfrag_high_thresh ,
-.\"O the queue is pruned down to
-.\"O .IR ipfrag_low_thresh .
-.\"O Contains an integer with the number of bytes.
-キューイングされている IP フラグメントの量が
-.I ipfrag_high_thresh
-に達すると、キューの内容は
-.I ipfrag_low_thresh
-にまで切り捨てられる。それぞれの大きさを
-バイト単位で表す整数値が入っている。
-.TP
-.I neigh/*
-.\"O See
-.\"O .BR arp (7).
-.BR arp (7)
-を見よ。
+IPv6 フラグメントをメモリに保持しておく時間 (秒単位)。
+.TP 
+\fIip6frag_secret_interval\fP (integer; default: 600)
+IPv6 フラグメントの hash secret の生成間隔 (hash secret の寿命)  (秒単位)。
+.TP 
+\fIipfrag_high_thresh\fP (integer), \fIipfrag_low_thresh\fP (integer)
+キューイングされている IP フラグメントの量が \fIipfrag_high_thresh\fP に達すると、キューの内容は
+\fIipfrag_low_thresh\fP にまで切り捨てられる。それぞれの大きさを バイト単位で表す整数値が入っている。
+.TP 
+\fIneigh/*\fP
 .\" FIXME Document the conf/*/* interfaces
 .\" FIXME Document the route/* interfaces
 .\" FIXME document them all
-.\"O .SS Ioctls
+\fBarp\fP(7)  を見よ。
 .SS ioctl
-.\"O All ioctls described in
-.\"O .BR socket (7)
-.\"O apply to
-.\"O .BR ip .
-.BR socket (7)
-に記述されている ioctl は、すべて
-.B ip
-にも適用される。
 .\" 2006-04-02, mtk
 .\" commented out the following because ipchains is obsolete
 .\" .PP
-.\"O .\" The ioctls to configure firewalling are documented in
-.\"O .\" .BR ipfw (4)
-.\"O .\" from the
-.\"O .\" .B ipchains
-.\"O .\" package.
-.\" ファイアウォール関係の設定に関する ioctl については
-.\" .B ipchains
-.\" パッケージの
+.\" The ioctls to configure firewalling are documented in
 .\" .BR ipfw (4)
-.\" に記述されている。
+.\" from the
+.\" .B ipchains
+.\" package.
+\fBsocket\fP(7)  に記述されている ioctl は、すべて \fBip\fP にも適用される。
 .PP
-.\"O Ioctls to configure generic device parameters are described in
-.\"O .BR netdevice (7).
-ジェネリックデバイスのパラメータを設定する ioctl については
-.BR netdevice (7)
-に記述されている。
 .\" FIXME Add a discussion of multicasting
-.\"O .SH ERRORS
+ジェネリックデバイスのパラメータを設定する ioctl については \fBnetdevice\fP(7)  に記述されている。
 .SH エラー
 .\" FIXME document all errors.
 .\"     We should really fix the kernels to give more uniform
 .\"     error returns (ENOMEM vs ENOBUFS, EPERM vs EACCES etc.)
-.TP
-.B EACCES
-.\"O The user tried to execute an operation without the necessary permissions.
-.\"O These include:
-.\"O sending a packet to a broadcast address without having the
-.\"O .B SO_BROADCAST
-.\"O flag set;
-.\"O sending a packet via a
-.\"O .I prohibit
-.\"O route;
-.\"O modifying firewall settings without superuser privileges (the
-.\"O .B CAP_NET_ADMIN
-.\"O capability);
-.\"O binding to a privileged port without superuser privileges (the
-.\"O .B CAP_NET_BIND_SERVICE
-.\"O capability).
-必要な権限のないユーザーが操作を実行しようとした。
-以下のような場合が考えられる:
-.B SO_BROADCAST
-フラグを設定していない状態でブロードキャストアドレスに
-パケットを送ろうとした。
-.I prohibit
-なルートを通してパケットを送ろうとした。
-スーパーユーザー権限
-.RB ( CAP_NET_ADMIN
-ケーパビリティ) なしでファイアウォールの設定を変更しようとした。
-スーパーユーザー権限
-.RB ( CAP_NET_BIND_SERVICE
-ケーパビリティ) なしで特権ポートにバインドしようとした。
-.TP
-.B EADDRINUSE
-.\"O Tried to bind to an address already in use.
-既に使われているアドレスにバインドしようとした。
-.TP
-.B EADDRNOTAVAIL
-.\"O A nonexistent interface was requested or the requested source
-.\"O address was not local.
-存在しないソケットが要求された。または要求された
-ソースアドレスがローカルでない。
-.TP
-.B EAGAIN
-.\"O Operation on a nonblocking socket would block.
+.TP 
+\fBEACCES\fP
+必要な権限のないユーザーが操作を実行しようとした。 以下のような場合が考えられる: \fBSO_BROADCAST\fP
+フラグを設定していない状態でブロードキャストアドレスに パケットを送ろうとした。 \fIprohibit\fP なルートを通してパケットを送ろうとした。
+スーパーユーザー権限 (\fBCAP_NET_ADMIN\fP ケーパビリティ) なしでファイアウォールの設定を変更しようとした。 スーパーユーザー権限
+(\fBCAP_NET_BIND_SERVICE\fP ケーパビリティ) なしで特権ポートにバインドしようとした。
+.TP 
+\fBEADDRINUSE\fP
+既に使用されているアドレスにバインドしようとした。
+.TP 
+\fBEADDRNOTAVAIL\fP
+存在しないインターフェースが要求された。または 要求されたソースアドレスがローカルでない。
+.TP 
+\fBEAGAIN\fP
 非ブロッキングソケットに対してブロックする操作を行った。
-.TP
-.B EALREADY
-.\"O An connection operation on a nonblocking socket is already in progress.
+.TP 
+\fBEALREADY\fP
 非ブロッキングソケットに対する接続操作が既に実行中である。
-.TP
-.B ECONNABORTED
-.\"O A connection was closed during an
-.\"O .BR accept (2).
-.BR accept (2)
-の最中に接続がクローズされた。
-.TP
-.B EHOSTUNREACH
-.\"O No valid routing table entry matches the destination address.
-.\"O This error can be caused by a ICMP message from a remote router or
-.\"O for the local routing table.
-宛先アドレスにマッチする有効なエントリがルーティングテーブルに
-存在しない。このエラーはリモートルータからの、
-あるいはローカルルーティングテーブルへの
+.TP 
+\fBECONNABORTED\fP
+\fBaccept\fP(2)  の途中で接続がクローズされた。
+.TP 
+\fBEHOSTUNREACH\fP
+宛先アドレスにマッチする有効なエントリがルーティングテーブルに 存在しない。このエラーはリモートルータからの、 あるいはローカルルーティングテーブルへの
 ICMP メッセージによって引き起こされることがある。
-.TP
-.B EINVAL
-.\"O Invalid argument passed.
-.\"O For send operations this can be caused by sending to a
-.\"O .I blackhole
-.\"O route.
-不正な引き数が渡された。送信操作において、
-.I blackhole
-ルートに送信しようとするとこのエラーが起こることがある。
-.TP
-.B EISCONN
-.\"O .BR connect (2)
-.\"O was called on an already connected socket.
-.BR connect (2)
-が、既に接続済みのソケットに対して呼ばれた。
-.TP
-.B EMSGSIZE
-.\"O Datagram is bigger than an MTU on the path and it cannot be fragmented.
+.TP 
+\fBEINVAL\fP
+不正な引き数が渡された。送信操作において、 \fIblackhole\fP ルートに送信しようとするとこのエラーが起こることがある。
+.TP 
+\fBEISCONN\fP
+接続済みのソケットに対して \fBconnect\fP(2)  が呼ばれた。
+.TP 
+\fBEMSGSIZE\fP
 データグラムが path MTU よりも大きく、フラグメント化もできない。
-.TP
-.BR ENOBUFS ", " ENOMEM
-.\"O Not enough free memory.
-.\"O This often means that the memory allocation is limited by the socket
-.\"O buffer limits, not by the system memory, but this is not 100% consistent.
-空きメモリが足りない。
-このエラーは、メモリアロケーションがソケットバッファの
-大きさによって制限されていることを意味しているのが通常であるが、
+.TP 
+\fBENOBUFS\fP, \fBENOMEM\fP
+空きメモリが足りない。 このエラーは、メモリアロケーションがソケットバッファの 大きさによって制限されていることを意味しているのが通常であるが、
 100% そうだというわけではない。
-.TP
-.B ENOENT
-.\"O .B SIOCGSTAMP
-.\"O was called on a socket where no packet arrived.
-パケットが全く到着していないソケットに対して
-.B SIOCGSTAMP
-が呼ばれた。
-.TP
-.B ENOPKG
-.\"O A kernel subsystem was not configured.
+.TP 
+\fBENOENT\fP
+パケットが到着していないソケットに対して \fBSIOCGSTAMP\fP が呼ばれた。
+.TP 
+\fBENOPKG\fP
 カーネルサブシステムが設定されていない。
-.TP
-.\"O .BR ENOPROTOOPT " and " EOPNOTSUPP
-.BR ENOPROTOOPT " と " EOPNOTSUPP
-.\"O Invalid socket option passed.
-不正なソケットオプションが渡された。
-.TP
-.B ENOTCONN
-.\"O The operation is only defined on a connected socket, but the socket wasn't
-.\"O connected.
-接続されていないソケットに対して、
-接続状態でしか定義されていない操作を行おうとした。
-.TP
-.B EPERM
-.\"O User doesn't have permission to set high priority, change configuration,
-.\"O or send signals to the requested process or group.
-高い優先度を設定したり、設定を変更したり、要求されたプロセスや
-プロセスグループにシグナルを送ったりするのに必要な権限を、
-ユーザーが持っていない。
-.TP
-.B EPIPE
-.\"O The connection was unexpectedly closed or shut down by the other end.
-接続が先方から期待していなかったやり方で
-クローズあるいはシャットダウンされた。
-.TP
-.B ESOCKTNOSUPPORT
-.\"O The socket is not configured or an unknown socket type was requested.
+.TP 
+\fBENOPROTOOPT\fP と \fBEOPNOTSUPP\fP
+無効なソケットオプションが渡された。
+.TP 
+\fBENOTCONN\fP
+接続されていないソケットに対して、 接続状態でしか定義されていない操作を行おうとした。
+.TP 
+\fBEPERM\fP
+高い優先度を設定したり、設定を変更したり、要求されたプロセスや プロセスグループにシグナルを送ったりするのに必要な権限を、 ユーザーが持っていない。
+.TP 
+\fBEPIPE\fP
+接続が接続相手によって、予期しないやり方でクローズまたはシャットダウンされた。
+.TP 
+\fBESOCKTNOSUPPORT\fP
 ソケットが未設定であるか、知らないソケットタイプが要求された。
 .PP
-.\"O Other errors may be generated by the overlaying protocols; see
-他のエラーが上層のプロトコルによって生じるかもしれない。
-.\"O .BR tcp (7),
-.\"O .BR raw (7),
-.\"O .BR udp (7)
-.\"O and
-.\"O .BR socket (7).
-.BR tcp (7),
-.BR raw (7),
-.BR udp (7),
-.BR socket (7)
+他のエラーが上層のプロトコルによって生じるかもしれない。 \fBtcp\fP(7), \fBraw\fP(7), \fBudp\fP(7), \fBsocket\fP(7)
 などを参照のこと。
-.\"O .SH NOTES
 .SH 注意
-.\"O .BR IP_MTU ,
-.\"O .BR IP_MTU_DISCOVER ,
-.\"O .BR IP_PKTINFO ,
-.\"O .B IP_RECVERR
-.\"O and
-.\"O .B IP_ROUTER_ALERT
-.BR IP_MTU ,
-.BR IP_MTU_DISCOVER ,
-.BR IP_PKTINFO ,
-.BR IP_RECVERR ,
-.B IP_ROUTER_ALERT
-.\"O are Linux-specific and should not be used in
-.\"O programs intended to be portable.
-は Linux 固有であり、移植性を考慮したプログラムでは
-用いるべきではない。
 .\" IP_PASSSEC is Linux-specific
-.\" IP_TRANSPARENT is Linux-specific
-.\" IP_FREEBIND is Linux-specific
 .\" IP_XFRM_POLICY is Linux-specific
 .\" IP_IPSEC_POLICY is a nonstandard extension, also present on some BSDs
-.\"O Be very careful with the
-.\"O .B SO_BROADCAST
-.\"O option \- it is not privileged in Linux.
-.\"O It is easy to overload the network
-.\"O with careless broadcasts.
-.\"O For new application protocols
-.\"O it is better to use a multicast group instead of broadcasting.
-.\"O Broadcasting is discouraged.
-.B SO_BROADCAST
-オプションの利用には、くれぐれも注意すること。
+\fBIP_FREEBIND\fP, \fBIP_MTU\fP, \fBIP_MTU_DISCOVER\fP, \fBIP_RECVORIGDSTADDR\fP,
+\fBIP_PKTINFO\fP, \fBIP_RECVERR\fP, \fBIP_ROUTER_ALERT\fP, and \fBIP_TRANSPARENT\fP
+は Linux 固有である。
+
+\fBSO_BROADCAST\fP オプションの利用には、くれぐれも注意すること。
 これは Linux では特権操作ではない。
 不注意なブロードキャストを行うと、ネットワークは簡単に過負荷状態になる。
 新しいアプリケーションプロトコルには、ブロードキャストではなく
-マルチキャストグループを用いるほうがよい。
-ブロードキャストは推奨されない。
+マルチキャストグループを用いるほうがよい。 ブロードキャストは推奨されない。
 .PP
-.\"O Some other BSD sockets implementations provide
-.\"O .B IP_RCVDSTADDR
-.\"O and
-.\"O .B IP_RECVIF
-.\"O socket options to get the destination address and the interface of
-.\"O received datagrams.
-.\"O Linux has the more general
-.\"O .B IP_PKTINFO
-.\"O for the same task.
-他の BSD のソケット実装では、
-.B IP_RCVDSTADDR
-と
-.B IP_RECVIF
-といったソケットオプションがサポートされており、
-宛先アドレスや受信データグラムのインターフェースが取得できるように
-なっていることもある。
-Linux で同じことをやらせるには、より一般的な
-.B IP_PKTINFO
-が使える。
+他の BSD のソケット実装では、 \fBIP_RCVDSTADDR\fP と \fBIP_RECVIF\fP といったソケットオプションがサポートされており、
+宛先アドレスや受信データグラムのインターフェースが取得できるように なっていることもある。 Linux で同じことをやらせるには、より一般的な
+\fBIP_PKTINFO\fP が使える。
 .PP
-.\"O Some BSD sockets implementations also provide an
-.\"O .B IP_RECVTTL
-.\"O option, but an ancillary message with type
-.\"O .B IP_RECVTTL
-.\"O is passed with the incoming packet.
-.\"O This is different from the
-.\"O .B IP_TTL
-.\"O option used in Linux.
-いくつかの BSD のソケット実装では
-.B IP_RECVTTL
-オプションも提供されているが、タイプ
-.B IP_RECVTTL
-の補助メッセージは受信パケットとともに渡される。
-これは Linux で使われている
-.B IP_TTL
-オプションとは異なる動作である。
+いくつかの BSD のソケット実装では \fBIP_RECVTTL\fP オプションも提供されているが、タイプ \fBIP_RECVTTL\fP
+の補助メッセージは受信パケットとともに渡される。 これは Linux で使われている \fBIP_TTL\fP オプションとは異なる動作である。
 .PP
-.\"O Using
-.\"O .B SOL_IP
-.\"O socket options level isn't portable, BSD-based stacks use
-.\"O .B IPPROTO_IP
-.\"O level.
-.B SOL_IP
-ソケットオプションレベルは移植性がない。
-BSD ベースのプロトコルスタックでは
-.B IPPROTO_IP
+\fBSOL_IP\fP ソケットオプションレベルは移植性がない。 BSD ベースのプロトコルスタックでは \fBIPPROTO_IP\fP
 レベルが使用されている。
-.\"O .SS Compatibility
 .SS 移植性
-.\"O For compatibility with Linux 2.0, the obsolete
-.\"O .BI "socket(AF_INET, SOCK_PACKET, " protocol )
-.\"O syntax is still supported to open a
-.\"O .BR packet (7)
-.\"O socket.
-.\"O This is deprecated and should be replaced by
-.\"O .BI "socket(AF_PACKET, SOCK_RAW, " protocol )
-.\"O instead.
-.\"O The main difference is the
-.\"O new
-.\"O .I sockaddr_ll
-.\"O address structure for generic link layer information instead of the old
-.\"O .BR sockaddr_pkt .
-Linux 2.0 との互換性のために、 obsolete な
-.BI "socket(AF_INET, SOCK_PACKET, " protocol )
-という書式でも
-.BR packet (7)
-をオープンできるようになっているが、これはお勧めできない。今後は
-.BI "socket(AF_PACKET, SOCK_RAW, " protocol )
-を代わりに用いるべきである。主な違いは、ジェネリックなリンク層用の
-.I sockaddr_ll
-アドレス構造体が、古い
-.B sockaddr_pkt
+Linux 2.0 との互換性のために、 obsolete な \fBsocket(AF_INET, SOCK_PACKET,
+\fP\fIprotocol\fP\fB)\fP という書式でも \fBpacket\fP(7)  をオープンできるようになっているが、これはお勧めできない。今後は
+\fBsocket(AF_PACKET, SOCK_RAW, \fP\fIprotocol\fP\fB)\fP
+を代わりに用いるべきである。主な違いは、ジェネリックなリンク層用の \fIsockaddr_ll\fP アドレス構造体が、古い \fBsockaddr_pkt\fP
 に変わって用いられるようになったことである。
-.\"O .SH BUGS
 .SH バグ
-.\"O There are too many inconsistent error values.
-エラーの値が全く首尾一貫していない。
+エラーの値がまったく首尾一貫していない。
 .PP
-.\"O The ioctls to configure IP-specific interface options and ARP tables are
-.\"O not described.
-IP 固有のインターフェースオプションを指定するための ioctl と
-ARP テーブルのことが記述されていない。
+IP 固有のインターフェースオプションを指定するための ioctl と ARP テーブルのことが記述されていない。
 .PP
-.\"O Some versions of glibc forget to declare
-.\"O .IR in_pktinfo .
-.\"O Workaround currently is to copy it into your program from this man page.
-glibc のバージョンによっては
-.I in_pktinfo
-の定義を忘れているものがある。
-現時点でのとりあえずの対策としては、この man ページにある定義をプログラム中に
-コピーすることである。
+glibc のバージョンによっては \fIin_pktinfo\fP の定義を忘れているものがある。 現時点でのとりあえずの対策としては、この man
+ページにある定義をプログラム中に コピーすることである。
 .PP
-.\"O Receiving the original destination address with
-.\"O .B MSG_ERRQUEUE
-.\"O in
-.\"O .I msg_name
-.\"O by
-.\"O .BR recvmsg (2)
-.\"O does not work in some 2.2 kernels.
-.BR recvmsg (2)
-で
-.I msg_name
-に
-.B MSG_ERRQUEUE
-を指定して、受信パケットに入っていた宛先アドレスを取得する方法は
-2.2 カーネルの一部でうまく動かない。
-.\"O .\" .SH AUTHORS
-.\" .SH 著者
-.\"O .\" This man page was written by Andi Kleen.
-.\" この man ページは Andi Kleen が書いた。
-.\"O .SH SEE ALSO
+.\" .SH AUTHORS
+.\" This man page was written by Andi Kleen.
+\fBrecvmsg\fP(2)  で \fImsg_name\fP に \fBMSG_ERRQUEUE\fP
+を指定して、受信パケットに入っていた宛先アドレスを取得する方法は 2.2 カーネルの一部でうまく動かない。
 .SH 関連項目
-.BR recvmsg (2),
-.BR sendmsg (2),
-.BR byteorder (3),
-.BR ipfw (4),
-.BR capabilities (7),
-.BR netlink (7),
-.BR raw (7),
-.BR socket (7),
-.BR tcp (7),
-.BR udp (7)
+\fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBbyteorder\fP(3), \fBipfw\fP(4),
+\fBcapabilities\fP(7), \fBnetlink\fP(7), \fBraw\fP(7), \fBsocket\fP(7), \fBtcp\fP(7),
+\fBudp\fP(7)
 .PP
-.\"O RFC\ 791 for the original IP specification.
-.BR RFC\ 791 :
-オリジナルの IP の仕様
+\fBRFC\ 791\fP: オリジナルの IP の仕様
 .br
-.\"O RFC\ 1122 for the IPv4 host requirements.
-.BR RFC\ 1122 :
-IPv4 ホストの必要条件
+\fBRFC\ 1122\fP: IPv4 ホストの必要条件
 .br
-.\"O RFC\ 1812 for the IPv4 router requirements.
-.BR RFC\ 1812 :
-IPv4 ルータの必要条件
+\fBRFC\ 1812\fP: IPv4 ルータの必要条件
 .\" FIXME autobind INADDR REUSEADDR
index ecc5fce..5bf750e 100644 (file)
 .\" of this page provided the header is included verbatim,
 .\" and in case of nontrivial modification author and date
 .\" of the modification is added to the header.
-.\" $Id: ipv6.7,v 1.4 2001/08/15 18:01:06 hanataka Exp $
+.\" $Id: ipv6.7,v 1.3 2000/12/20 18:10:31 ak Exp $
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 2001 NAKANO Takeo all rights reserved.
-.\" Translated Sun 18 Feb 2001 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated Wed  4 Apr 2001 by Yuichi SATO <ysato@h4.dion.ne.jp>
-.\" Updated Sat Dec 17 09:31:21 JST 2005 by Yuichi SATO <ysato444@yahoo.co.jp>
-.\" Updated 2007-05-28, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.50
-.\" Updated 2008-08-07, Akihiro MOTOKI, LDP v3.05
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\"WORD:       flow identifier         フロー指定子
-.\"WORD:       control message         制御メッセージ
-.\"WORD:       incoming 〜            受信 (パケット、データグラム)
-.\"WORD:       outgoing 〜            送信 (パケット、データグラム)
-.\"WORD:       asynchronous error      非同期エラー
-.\"
-.TH IPV6 7 2011-09-08 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O ipv6, AF_INET6 \- Linux IPv6 protocol implementation
+.\"*******************************************************************
+.TH IPV6 7 2011\-09\-08 Linux "Linux Programmer's Manual"
 .SH 名前
 ipv6, AF_INET6 \- Linux の IPv6 プロトコル実装
-.\"O .SH SYNOPSIS
 .SH 書式
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .br
-.B #include <netinet/in.h>
+\fB#include <netinet/in.h>\fP
 .sp
-.IB tcp6_socket " = socket(AF_INET6, SOCK_STREAM, 0);"
+\fItcp6_socket\fP\fB = socket(AF_INET6, SOCK_STREAM, 0);\fP
 .br
-.IB raw6_socket " = socket(AF_INET6, SOCK_RAW, " protocol ");"
+\fIraw6_socket\fP\fB = socket(AF_INET6, SOCK_RAW, \fP\fIprotocol\fP\fB);\fP
 .br
-.IB udp6_socket " = socket(AF_INET6, SOCK_DGRAM, " protocol ");"
-.\"O .SH DESCRIPTION
+\fIudp6_socket\fP\fB = socket(AF_INET6, SOCK_DGRAM, \fP\fIprotocol\fP\fB);\fP
 .SH 説明
-.\"O Linux 2.2 optionally implements the Internet Protocol, version 6.
-.\"O This man page contains a description of the IPv6 basic API as
-.\"O implemented by the Linux kernel and glibc 2.1.
-.\"O The interface
-.\"O is based on the BSD sockets interface; see
-.\"O .BR socket (7).
-Linux 2.2 では、Internet Protocol, version 6 を
-オプションとして実装している。
-この man ページでは、Linux カーネルと glibc 2.1 での実装に基づいて、
-IPv6 の基本的な API を解説する。
-インターフェースは BSD ソケットインターフェースをもとにしている。
-.BR socket (7)
-を参照。
+Linux 2.2 では、Internet Protocol, version 6 を オプションとして実装している。 この man
+ページでは、Linux カーネルと glibc 2.1 での実装に基づいて、 IPv6 の基本的な API を解説する。 インターフェースは BSD
+ソケットインターフェースをもとにしている。 \fBsocket\fP(7)  を参照。
 .PP
-.\"O The IPv6 API aims to be mostly compatible with the
-.\"O IPv4 API (see
-.\"O .BR ip (7)).
-.\"O Only differences are described in this man page.
-IPv6 API は、
-IPv4 API
-.RB ( ip (7)
-参照) とほぼ互換になることを目指している。
-この man ページでは相違点のみを解説する。
+IPv6 API は、 IPv4 API (\fBip\fP(7)  参照) とほぼ互換になることを目指している。 この man
+ページでは相違点のみを解説する。
 .PP
-.\"O To bind an
-.\"O .B AF_INET6
-.\"O socket to any process, the local address should be copied from the
-.\"O .I in6addr_any
-.\"O variable which has
-.\"O .I in6_addr
-.\"O type.
-.\"O In static initializations,
-.\"O .B IN6ADDR_ANY_INIT
-.\"O may also be used, which expands to a constant expression.
-.\"O Both of them are in network byte order.
-.B AF_INET6
-ソケットを何らかのプロセスにバインドするには、
-ローカルアドレスを
-.I in6_addr
-型の変数
-.I in6addr_any
-からコピーしてくる必要がある。
-static な初期値
-.B IN6ADDR_ANY_INIT
-も用いることができ、これは定数式に展開される。
-これらの両者はネットワークバイトオーダーである。
+\fBAF_INET6\fP ソケットを何らかのプロセスにバインドするには、 ローカルアドレスを \fIin6_addr\fP 型の変数
+\fIin6addr_any\fP からコピーしてくる必要がある。 static な初期値 \fBIN6ADDR_ANY_INIT\fP
+も用いることができ、これは定数式に展開される。 これらの両者はネットワークバイトオーダーである。
 .PP
-.\"O The IPv6 loopback address (::1) is available in the global
-.\"O .I in6addr_loopback
-.\"O variable.
-.\"O For initializations,
-.\"O .B IN6ADDR_LOOPBACK_INIT
-.\"O should be used.
-IPv6 のループバックアドレス (::1) は global 変数
-.I in6addr_loopback
-から取得できる。初期化には
-.B IN6ADDR_LOOPBACK_INIT
-を用いるべきである。
+IPv6 のループバックアドレス (::1) は global 変数 \fIin6addr_loopback\fP から取得できる。初期化には
+\fBIN6ADDR_LOOPBACK_INIT\fP を用いるべきである。
 .PP
-.\"O IPv4 connections can be handled with the v6 API by using the
-.\"O v4-mapped-on-v6 address type;
-.\"O thus a program only needs to support this API type to
-.\"O support both protocols.
-.\"O This is handled transparently by the address
-.\"O handling functions in the C library.
-v4-mapped-on-v6 アドレス型を用いることで、
-IPv4 接続も v6 API で扱うことができる。
-こうすれば、プログラムは v6 の API をサポートするだけで、
-両方のプロトコルをサポートできる。
-v4-mapped-on-v6 アドレス型は C ライブラリ内部のアドレスを
+v4\-mapped\-on\-v6 アドレス型を用いることで、 IPv4 接続も v6 API で扱うことができる。 こうすれば、プログラムは v6 の
+API をサポートするだけで、 両方のプロトコルをサポートできる。 v4\-mapped\-on\-v6 アドレス型は C ライブラリ内部のアドレスを
 扱う関数によって透過的に処理される。
 .PP
-.\"O IPv4 and IPv6 share the local port space.
-.\"O When you get an IPv4 connection
-.\"O or packet to a IPv6 socket, its source address will be mapped
-.\"O to v6 and it will be mapped to v6.
-IPv4 と IPv6 はローカルポート空間を共有する。
-IPv4 の接続 (またはパケット) を IPv6 ソケットが取得すると、
-発信元アドレスが v6 にマップされ、その接続 (パケット) も v6 にマップされる。
-.\"nakano: 最後の it がなにを指すのかわからん。
-.\"O
-.\"O .SS Address Format
+IPv4 と IPv6 はローカルポート空間を共有する。 IPv4 の接続 (またはパケット) を IPv6 ソケットが取得すると、 発信元アドレスが
+v6 にマップされ、その接続 (パケット) も v6 にマップされる。
 .SS アドレスのフォーマット
 .in +4n
 .nf
@@ -135,458 +60,132 @@ struct in6_addr {
 .fi
 .in
 .sp
-.\"O .I sin6_family
-.\"O is always set to
-.\"O .BR AF_INET6 ;
-.\"O .I sin6_port
-.\"O is the protocol port (see
-.\"O .I sin_port
-.\"O in
-.\"O .BR ip (7));
-.\"O .I sin6_flowinfo
-.\"O is the IPv6 flow identifier;
-.\"O .I sin6_addr
-.\"O is the 128bit IPv6 address.
-.\"O .I sin6_scope_id
-.\"O is an ID depending on the scope of the address.
-.\"O It is new in Linux 2.4.
-.\"O Linux only supports it for link scope addresses, in that case
-.\"O .I sin6_scope_id
-.\"O contains the interface index (see
-.\"O .BR netdevice (7))
-.I sin6_family
-は常に
-.B AF_INET6
-に設定される。
-.I sin6_port
-はプロトコルポートである
-.RB ( ip (7)
-の
-.I sin_port
-を参照)。
-.I sin6_flowinfo
-は IPv6 のフロー指定子 (flow identifier) である。
-.I sin6_addr
-は 128 ビットの IPv6 アドレスである。
-.I sin6_scope_id
-はアドレスのスコープに依存した ID である
-(これは Linux 2.4 で導入された)。
-Linux の場合は、これはリンクスコープアドレスでしかサポートされない。
-この場合
-.I sin6_scope_id
-にはインターフェースのインデックスが含まれることになる
-.RB ( netdevice (7)
-を参照)。
+\fIsin6_family\fP は常に \fBAF_INET6\fP に設定される。 \fIsin6_port\fP はプロトコルポートである (\fBip\fP(7)
+の \fIsin_port\fP を参照)。 \fIsin6_flowinfo\fP は IPv6 のフロー指定子 (flow identifier) である。
+\fIsin6_addr\fP は 128 ビットの IPv6 アドレスである。 \fIsin6_scope_id\fP はアドレスのスコープに依存した ID
+である (これは Linux 2.4 で導入された)。 Linux の場合は、これはリンクスコープアドレスでしかサポートされない。 この場合
+\fIsin6_scope_id\fP にはインターフェースのインデックスが含まれることになる (\fBnetdevice\fP(7)  を参照)。
 .PP
-.\"O IPv6 supports several address types: unicast to address a single
-.\"O host, multicast to address a group of hosts,
-.\"O anycast to address the nearest member of a group of hosts
-.\"O (not implemented in Linux), IPv4-on-IPv6 to
-.\"O address a IPv4 host, and other reserved address types.
-IPv6 は何種類かのアドレスタイプをサポートしている。
-単一のホストをアドレスするための unicast、
-ホストのグループをアドレスするための multicast、
-ホストのグループ中で最も近くにいるものをアドレスするための anycast
-(これは Linux では実装されていない)、
-IPv4 ホストをアドレスするための IPv4-on-IPv6。
-他にも予約済みのアドレスタイプがある。
+IPv6 は何種類かのアドレスタイプをサポートしている。 単一のホストをアドレスするための unicast、 ホストのグループをアドレスするための
+multicast、 ホストのグループ中で最も近くにいるものをアドレスするための anycast (これは Linux では実装されていない)、
+IPv4 ホストをアドレスするための IPv4\-on\-IPv6。 他にも予約済みのアドレスタイプがある。
 .PP
-.\"O The address notation for IPv6 is a group of 8 4-digit hexadecimal
-.\"O numbers, separated with a \(aq:\(aq.
-.\"O \&"::" stands for a string of 0 bits.
-.\"O Special addresses are ::1 for loopback and ::FFFF:<IPv4 address>
-.\"O for IPv4-mapped-on-IPv6.
-IPv6 でのアドレス表記は 4 桁の 16 進数 8 個からなり、
-\(aq:\(aq は区切り文字はで、"::" は 0 ビットの文字列を表す。
-特殊なアドレスとして、ループバックを表す ::1、
-IPv4-mapped-on-IPv6 を表す ::FFFF::<IPv4 アドレス> がある。
+IPv6 でのアドレス表記は 4 桁の 16 進数 8 個からなり、 \(aq:\(aq は区切り文字はで、"::" は 0 ビットの文字列を表す。
+特殊なアドレスとして、ループバックを表す ::1、 IPv4\-mapped\-on\-IPv6 を表す ::FFFF::<IPv4
+アドレス> がある。
 .PP
-.\"O The port space of IPv6 is shared with IPv4.
 IPv6 のポート空間は IPv4 と共有されている。
-.\"O .SS "Socket Options"
 .SS ソケットオプション
-.\"O IPv6 supports some protocol-specific socket options that can be set with
-.\"O .BR setsockopt (2)
-.\"O and read with
-.\"O .BR getsockopt (2).
-.\"O The socket option level for IPv6 is
-.\"O .BR IPPROTO_IPV6 .
-.\"O A boolean integer flag is zero when it is false, otherwise true.
-IPv6 はプロトコル固有のソケットオプションをいくつかサポートしている。
-これらは
-.BR setsockopt (2)
-で設定でき、
-.BR getsockopt (2)
-で取得できる。
-IPv6 のソケットオプションレベルは
-.B IPPROTO_IPV6
-である。
+IPv6 はプロトコル固有のソケットオプションをいくつかサポートしている。 これらは \fBsetsockopt\fP(2)  で設定でき、
+\fBgetsockopt\fP(2)  で取得できる。 IPv6 のソケットオプションレベルは \fBIPPROTO_IPV6\fP である。
 ブール整数のフラグは、0 が偽であり、それ以外は真である。
-.TP
-.B IPV6_ADDRFORM
-.\"O Turn an
-.\"O .B AF_INET6
-.\"O socket into a socket of a different address family.
-.\"O Only
-.\"O .B AF_INET
-.\"O is currently supported for that.
-.\"O It is only allowed for IPv6 sockets
-.\"O that are connected and bound to a v4-mapped-on-v6 address.
-.\"O The argument is a pointer to an integer containing
-.\"O .BR AF_INET .
-.\"O This is useful to pass v4-mapped sockets as file descriptors to
-.\"O programs that  don't know how to deal with the IPv6 API.
-.B AF_INET6
-ソケットを別のアドレスファミリーのソケットに変える。
-現在は
-.B AF_INET
-のみが変更先のアドレスファミリーとしてサポートされている。
-これが許可されるのは、IPv6 が接続され、
-v4-mapped-on-v6 アドレスにバインドされた場合に限られる。
-引き数は
-.B AF_INET
-が入っている整数へのポインタである。
-v4-mapped ソケットを、IPv6 API を扱えないプログラムに対して
-ファイルディスクリプターとして渡す場合に便利。
-.TP
-.B IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP
-.\"O Control membership in multicast groups.
-.\"O Argument is a pointer to a
-.\"O .I struct ipv6_mreq
-.\"O structure.
-multicast グループのメンバーを制御する。
-引き数は
-.I struct ipv6_mreq
-構造体へのポインタ。
-.\"O .\" FIXME IPV6_CHECKSUM is not documented, and probably should be
-.\"O .\" FIXME IPV6_JOIN_ANYCAST is not documented, and probably should be
-.\"O .\" FIXME IPV6_LEAVE_ANYCAST is not documented, and probably should be
-.\" FIXME IPV6_CHECKSUM は記述されていないが、記述すべきだろう。
-.\" FIXME IPV6_JOIN_ANYCAST は記述されていないが、記述すべきだろう。
-.\" FIXME IPV6_LEAVE_ANYCAST は記述されていないが、記述すべきだろう。
-.\"O .\" FIXME IPV6_RECVPKTINFO is not documented, and probably should be
-.\"O .\" FIXME IPV6_2292PKTINFO is not documented, and probably should be
-.\"O .\" FIXME there are probably many other IPV6_* socket options that
-.\"O .\" should be documented
-.\" FIXME IPV6_RECVPKTINFO は記述されていないが、記述すべきだろう。
-.\" FIXME IPV6_2292PKTINFO は記述されていないが、記述すべきだろう。
-.\" FIXME 他にも多くの記述すべき IPV6_* ソケットオプションがあるだろう。
-.TP
-.B IPV6_MTU
-.\"O Set the MTU to be used for the socket.
-.\"O The MTU is limited by the device
-.\"O MTU or the path MTU when path MTU discovery is enabled.
-.\"O Argument is a pointer to integer.
-そのソケットに対して用いる MTU の値を設定する。
-MTU の大きさは、
-そのデバイスの MTU または (Path MTU Discovery
-が可能なら) その経路の MTU の大きさ以下でなければならない。
-引き数は整数へのポインタ。
-.TP
-.B IPV6_MTU_DISCOVER
-.\"O Control path-MTU discovery on the socket.
-.\"O See
-.\"O .B IP_MTU_DISCOVER
-.\"O in
-.\"O .BR ip (7)
-.\"O for details.
-そのソケットでの Path MTU Discovery を制御する。
-詳細は
-.BR ip (7)
-の
-.B IP_MTU_DISCOVER
-を参照。
-.TP
-.B IPV6_MULTICAST_HOPS
-.\"O Set the multicast hop limit for the socket.
-.\"O Argument is a pointer to an
-.\"O integer.
-.\"O \-1 in the value means use the route default, otherwise it should be
-.\"O between 0 and 255.
-そのソケットでの multicast の hop 数の上限値を設定する。
-引き数は整数へのポインタである。
-\-1 を指定すると経路のデフォルトを用いることを意味する。
-それ以外の場合は 0 から 255 の範囲を指定する。
-.TP
-.B IPV6_MULTICAST_IF
-.\"O Set the device for outgoing multicast packets on the socket.
-.\"O This is only allowed
-.\"O for
-.\"O .B SOCK_DGRAM
-.\"O and
-.\"O .B SOCK_RAW
-.\"O socket.
-.\"O The argument is a pointer to an interface index (see
-.\"O .BR netdevice (7))
-.\"O in an integer.
-そのソケットでの、送信 multicast パケットに用いるデバイスを設定する。
-これは
-.B SOCK_DGRAM
-および
-.B SOCK_RAW
-各ソケットでのみ許される。
-引き数はインターフェースのインデックスの整数値
-.RB ( netdevice (7)
-を参照) へのポインタである。
-.TP
-.B IPV6_MULTICAST_LOOP
-.\"O Control whether the socket sees multicast packets that it has send itself.
-.\"O Argument is a pointer to boolean.
-ソケットが、自分自身の送信した
-multicast パケットを監視するかどうかを制御する。
-引き数はブール値へのポインタ。
-.TP
-.B IPV6_PKTINFO
-.\"O Set delivery of the
-.\"O .B IPV6_PKTINFO
-.\"O control message on incoming datagrams.
-.\"O Only allowed for
-.\"O .B SOCK_DGRAM
-.\"O or
-.\"O .B SOCK_RAW
-.\"O sockets.
-.\"O Argument is a pointer to a boolean value in an integer.
-データグラムの到着時における
-.B IPV6_PKTINFO
-制御メッセージを配送するかどうかを設定する。
-.B SOCK_DGRAM
-ソケットまたは
-.B SOCK_RAW
-ソケットに対してのみ許可される。
-引き数はブール値の入った整数。
-.TP
+.TP 
+\fBIPV6_ADDRFORM\fP
+\fBAF_INET6\fP ソケットを別のアドレスファミリーのソケットに変える。 現在は \fBAF_INET\fP
+のみが変更先のアドレスファミリーとしてサポートされている。 これが許可されるのは、IPv6 が接続され、 v4\-mapped\-on\-v6
+アドレスにバインドされた場合に限られる。 引き数は \fBAF_INET\fP が入っている整数へのポインタである。 v4\-mapped ソケットを、IPv6
+API を扱えないプログラムに対して ファイルディスクリプターとして渡す場合に便利。
+.TP 
+\fBIPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP\fP
+.\" FIXME IPV6_CHECKSUM is not documented, and probably should be
+.\" FIXME IPV6_JOIN_ANYCAST is not documented, and probably should be
+.\" FIXME IPV6_LEAVE_ANYCAST is not documented, and probably should be
+.\" FIXME IPV6_RECVPKTINFO is not documented, and probably should be
+.\" FIXME IPV6_2292PKTINFO is not documented, and probably should be
+.\" FIXME there are probably many other IPV6_* socket options that
+.\" should be documented
+multicast グループのメンバーを制御する。 引き数は \fIstruct ipv6_mreq\fP 構造体へのポインタ。
+.TP 
+\fBIPV6_MTU\fP
+そのソケットに対して用いる MTU の値を設定する。 MTU の大きさは、 そのデバイスの MTU または (Path MTU Discovery
+が可能なら) その経路の MTU の大きさ以下でなければならない。 引き数は整数へのポインタ。
+.TP 
+\fBIPV6_MTU_DISCOVER\fP
+そのソケットでの Path MTU Discovery を制御する。 詳細は \fBip\fP(7)  の \fBIP_MTU_DISCOVER\fP を参照。
+.TP 
+\fBIPV6_MULTICAST_HOPS\fP
+そのソケットでの multicast の hop 数の上限値を設定する。 引き数は整数へのポインタである。 \-1
+を指定すると経路のデフォルトを用いることを意味する。 それ以外の場合は 0 から 255 の範囲を指定する。
+.TP 
+\fBIPV6_MULTICAST_IF\fP
+そのソケットでの、送信 multicast パケットに用いるデバイスを設定する。 これは \fBSOCK_DGRAM\fP および \fBSOCK_RAW\fP
+各ソケットでのみ許される。 引き数はインターフェースのインデックスの整数値 (\fBnetdevice\fP(7)  を参照) へのポインタである。
+.TP 
+\fBIPV6_MULTICAST_LOOP\fP
+ソケットが、自分自身の送信した multicast パケットを監視するかどうかを制御する。 引き数はブール値へのポインタ。
+.TP 
+\fBIPV6_PKTINFO\fP
+データグラムの到着時における \fBIPV6_PKTINFO\fP 制御メッセージを配送するかどうかを設定する。 \fBSOCK_DGRAM\fP ソケットまたは
+\fBSOCK_RAW\fP ソケットに対してのみ許可される。 引き数はブール値の入った整数。
+.TP 
 .nh
-.B IPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO, IPV6_HOPLIMIT
+\fBIPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO,
+IPV6_HOPLIMIT\fP
 .hy
-.\"O Set delivery of control messages for incoming datagrams containing
-.\"O extension headers from the received packet.
-受信パケットのデータグラムに拡張ヘッダが含まれている場合の、
-制御メッセージの配送を設定する。
-.\"O .B IPV6_RTHDR
-.\"O delivers the routing header,
-.BR IPV6_RTHDR :
-routing ヘッダを配送するかどうか。
-.\"O .B IPV6_AUTHHDR
-.\"O delivers the authentication header,
-.BR IPV6_AUTHHDR :
-authentication ヘッダを配送するかどうか。
-.\"O .B IPV6_DSTOPTS
-.\"O delivers the destination options,
-.BR IPV6_DSTOPTS :
-destination オプションを配送するかどうか。
-.\"O .B IPV6_HOPOPTS
-.\"O delivers the hop options,
-.BR IPV6_HOPOPTS :
-hop オプションを配送するかどうか。
-.\"O .B IPV6_FLOWINFO
-.\"O delivers an integer containing the flow ID,
-.BR IPV6_FLOWINFO :
-flow ID を含む整数を配送するかどうか。
-.\"O .B IPV6_HOPLIMIT
-.\"O delivers an integer containing the hop count of the packet.
-.BR IPV6_HOPLIMIT :
-パケットの hop カウントを含む整数を配送するかどうか。
-.\"O The control messages have the same type as the socket option.
-.\"O All these header options can also be set for outgoing packets
-.\"O by putting the appropriate control message into the control buffer of
-.\"O .BR sendmsg (2).
-.\"O Only allowed for
-.\"O .B SOCK_DGRAM
-.\"O or
-.\"O .B SOCK_RAW
-.\"O sockets.
-.\"O Argument is a pointer to a boolean value.
-制御メッセージはソケットオプションのものと同じタイプを持つ。
-これらのすべてのヘッダオプションは、
-適切な制御メッセージを
-.BR sendmsg (2)
-の制御バッファーに書きこめば、
-送信パケットにでも設定できる。
-.B SOCK_DGRAM
-ソケットまたは
-.B SOCK_RAW
-ソケットでのみ許される。引き数はブール値へのポインタ。
-.TP
-.B IPV6_RECVERR
-.\"O Control receiving of asynchronous error options.
-.\"O See
-.\"O .B IP_RECVERR
-.\"O in
-.\"O .BR ip (7)
-.\"O for details.
-.\"O Argument is a pointer to boolean.
-非同期エラー (asynchronous error) オプションの受信を制御する。
-詳細は
-.BR ip (7)
-の
-.B IP_RECVERR
-を参照。
-引き数はブール値へのポインタ。
-.TP
-.B IPV6_ROUTER_ALERT
-.\"O Pass forwarded packets containing a router alert hop-by-hop option to
-.\"O this socket.
-.\"O Only allowed for SOCK_RAW sockets.
-.\"O The tapped packets are not forwarded by the kernel, it is the
-.\"O user's responsibility to send them out again.
-このソケットで、router alert hop-by-hop オプションの付いた転送パケットを
-通すかどうかを制御する。
-.B SOCK_RAW
-ソケットでのみ許可される。
-tap されたパケットはカーネルによっては転送されない。そうしたパケットを
-再度送信するのはユーザーの責任である。
-.\"O Argument is a pointer to an integer.
-.\"O A positive integer indicates a router alert option value to intercept.
-.\"O Packets carrying a router alert option with a value field containing
-.\"O this integer will be delivered to the socket.
-.\"O A negative integer disables delivery of packets with router alert options
-.\"O to this socket.
-引き数は整数 (integer) へのポインタ。
-正の整数は傍受を行う router alert オプション値を示す。
-オプション値がこの整数である router alert オプションの付いたパケットは
-ソケットに配送される。負の整数を指定すると、このソケットへの
-router alert オプションの付いたパケットの配送が行われない。
-.\" FLOWLABEL_MGR, FLOWINFO_SEND
-.TP
-.B IPV6_UNICAST_HOPS
-.\"O Set the unicast hop limit for the socket.
-.\"O Argument is a pointer to an integer.
-.\"O \-1 in the value means use the route default,
-.\"O otherwise it should be between 0 and 255.
-そのソケットでの unicast の hop 数の上限値を設定する。
-引き数は整数へのポインタである。
-\-1 を指定すると経路のデフォルトを用いることを意味する。
-それ以外の場合は 0 から 255 の範囲を指定する。
-.TP
-.\"O .BR IPV6_V6ONLY " (since Linux 2.4.21 and 2.6)"
-.BR IPV6_V6ONLY " (Linux 2.4.21 以降および 2.6 以降)"
+受信パケットのデータグラムに拡張ヘッダが含まれている場合の、 制御メッセージの配送を設定する。 \fBIPV6_RTHDR\fP: routing
+ヘッダを配送するかどうか。 \fBIPV6_AUTHHDR\fP: authentication ヘッダを配送するかどうか。 \fBIPV6_DSTOPTS\fP:
+destination オプションを配送するかどうか。 \fBIPV6_HOPOPTS\fP: hop オプションを配送するかどうか。
+\fBIPV6_FLOWINFO\fP: flow ID を含む整数を配送するかどうか。 \fBIPV6_HOPLIMIT\fP: パケットの hop
+カウントを含む整数を配送するかどうか。 制御メッセージはソケットオプションのものと同じタイプを持つ。 これらのすべてのヘッダオプションは、
+適切な制御メッセージを \fBsendmsg\fP(2)  の制御バッファーに書きこめば、 送信パケットにでも設定できる。 \fBSOCK_DGRAM\fP
+ソケットまたは \fBSOCK_RAW\fP ソケットでのみ許される。引き数はブール値へのポインタ。
+.TP 
+\fBIPV6_RECVERR\fP
+非同期エラー (asynchronous error) オプションの受信を制御する。 詳細は \fBip\fP(7)  の \fBIP_RECVERR\fP
+を参照。 引き数はブール値へのポインタ。
+.TP 
+\fBIPV6_ROUTER_ALERT\fP
+このソケットで、router alert hop\-by\-hop オプションの付いた転送パケットを 通すかどうかを制御する。 \fBSOCK_RAW\fP
+ソケットでのみ許可される。 tap されたパケットはカーネルによっては転送されない。そうしたパケットを 再度送信するのはユーザーの責任である。
+引き数は整数 (integer) へのポインタ。 正の整数は傍受を行う router alert オプション値を示す。 オプション値がこの整数である
+router alert オプションの付いたパケットは ソケットに配送される。負の整数を指定すると、このソケットへの router alert
+オプションの付いたパケットの配送が行われない。
+.TP 
+\fBIPV6_UNICAST_HOPS\fP
+そのソケットでの unicast の hop 数の上限値を設定する。 引き数は整数へのポインタである。 \-1
+を指定すると経路のデフォルトを用いることを意味する。 それ以外の場合は 0 から 255 の範囲を指定する。
+.TP 
+\fBIPV6_V6ONLY\fP (Linux 2.4.21 以降および 2.6 以降)
 .\" See RFC 3493
-.\"O If this flag is set to true (nonzero), then the socket is restricted
-.\"O to sending and receiving IPv6 packets only.
-.\"O In this case, an IPv4 and an IPv6 application can bind
-.\"O to a single port at the same time.
-このフラグを真 (0 以外) に設定すると、そのソケットは IPv6 パケットだけを
-送受信するように制限される。
-この場合、IPv4 アプリケーションと IPv6 アプリケーションが同時に
-一つのポートをバインドできる。
+このフラグを真 (0 以外) に設定すると、そのソケットは IPv6 パケットだけを 送受信するように制限される。 この場合、IPv4
+アプリケーションと IPv6 アプリケーションが同時に 一つのポートをバインドできる。
 
-.\"O If this flag is set to false (zero),
-.\"O then the socket can be used to send and receive packets
-.\"O to and from an IPv6 address or an IPv4-mapped IPv6 address.
-このフラグを偽 (0) に設定すると、そのソケットはパケットの送受信に
-IPv6 アドレスと IPv4-mapped IPv6 アドレスの両方を使用できる。
+このフラグを偽 (0) に設定すると、そのソケットはパケットの送受信に IPv6 アドレスと IPv4\-mapped IPv6
+アドレスの両方を使用できる。
 
-.\"O The argument is a pointer to a boolean value in an integer.
 引き数はブール値の入った整数へのポインタである。
 
-.\"O The default value for this flag is defined by the contents of the file
-.\"O .IR /proc/sys/net/ipv6/bindv6only .
-.\"O The default value for that file is 0 (false).
-このフラグのデフォルト値はファイル
-.I /proc/sys/net/ipv6/bindv6only
-の内容により定義される。
+.\" FLOWLABEL_MGR, FLOWINFO_SEND
+このフラグのデフォルト値はファイル \fI/proc/sys/net/ipv6/bindv6only\fP の内容により定義される。
 このファイルのデフォルト値は 0 (偽) である。
-.\"O .SH VERSIONS
 .SH バージョン
-.\"O The older
-.\"O .I libinet6
-.\"O libc5 based IPv6 API implementation for Linux is not described here
-.\"O and may vary in details.
-IPv6 API を libc5 ベースで Linux 向けに実装した、以前の
-.I libinet6
-についてはここでは記述していない。
+IPv6 API を libc5 ベースで Linux 向けに実装した、以前の \fIlibinet6\fP についてはここでは記述していない。
 おそらく細かいところには相違点があるだろう。
 .PP
-.\"O Linux 2.4 will break binary compatibility for the
-.\"O .I sockaddr_in6
-.\"O for 64-bit
-.\"O hosts by changing the alignment of
-.\"O .I in6_addr
-.\"O and adding an additional
-.\"O .I sin6_scope_id
-.\"O field.
-.\"O The kernel interfaces stay compatible, but a program including
-.\"O .I sockaddr_in6
-.\"O or
-.\"O .I in6_addr
-.\"O into other structures may not be.
-.\"O This is not
-.\"O a problem for 32bit hosts like i386.
-Linux 2.4 では 64 ビットのホストに対して
-.I sockaddr_in6
-のバイナリ互換性が保たれていない。
-.I in6_addr
-のアラインメントが変更され、また
-.I sin6_scope_id
-フィールドが新たに追加されたからである。
-カーネルインターフェースの互換性は保たれているが、
-.I sockaddr_in6
-や
-.I in6_addr
-を他の構造体に含んでいるようなプログラムでは
-保たれないかもしれない。
-これは i386 のような 32 ビットのホストでは問題にならない。
+Linux 2.4 では 64 ビットのホストに対して \fIsockaddr_in6\fP のバイナリ互換性が保たれていない。 \fIin6_addr\fP
+のアラインメントが変更され、また \fIsin6_scope_id\fP フィールドが新たに追加されたからである。
+カーネルインターフェースの互換性は保たれているが、 \fIsockaddr_in6\fP や \fIin6_addr\fP
+を他の構造体に含んでいるようなプログラムでは 保たれないかもしれない。 これは i386 のような 32 ビットのホストでは問題にならない。
 .PP
-.\"O The
-.\"O .I sin6_flowinfo
-.\"O field is new in Linux 2.4.
-.\"O It is transparently passed/read by the kernel
-.\"O when the passed address length contains it.
-.\"O Some programs that pass a longer address buffer and then
-.\"O check the outgoing address length may break.
-.I sin6_flowinfo
-フィールドは Linux 2.4 で登場した。
-これが渡されたアドレス長に含まれていると、
-カーネルに透過的に渡され、読まれる。
-.\"nakano ここわからないです...
-より長いアドレスバッファを渡し、
-そして送信アドレスの長さをチェックするようなプログラムは
+\fIsin6_flowinfo\fP フィールドは Linux 2.4 で登場した。 これが渡されたアドレス長に含まれていると、
+カーネルに透過的に渡され、読まれる。 より長いアドレスバッファを渡し、 そして送信アドレスの長さをチェックするようなプログラムは
 うまく動かないかもしれない。
-.\"O .SH "NOTES"
 .SH 注意
-.\"O The
-.\"O .I sockaddr_in6
-.\"O structure is bigger than the generic
-.\"O .IR sockaddr .
-.\"O Programs that assume that all address types can be stored safely in a
-.\"O .I struct sockaddr
-.\"O need to be changed to use
-.\"O .I struct sockaddr_storage
-.\"O for that instead.
-.I sockaddr_in6
-構造体はジェネリックな
-.I sockaddr
-よりも大きい。
-すべてのアドレスタイプが
-.I struct sockaddr
-の中に安全に納められると仮定しているプログラムは、代わりに
-.I struct sockaddr_storage
+\fIsockaddr_in6\fP 構造体はジェネリックな \fIsockaddr\fP よりも大きい。 すべてのアドレスタイプが \fIstruct
+sockaddr\fP の中に安全に納められると仮定しているプログラムは、代わりに \fIstruct sockaddr_storage\fP
 を用いるように変更する必要がある。
-.\"O .SH BUGS
 .SH バグ
-.\"O The IPv6 extended API as in RFC\ 2292 is currently only partly
-.\"O implemented;
-.\"O although the 2.2 kernel has near complete support for receiving options,
-.\"O the macros for generating IPv6 options are missing in glibc 2.1.
-IPv6 拡張 API は、現在まだ RFC\ 2292 を完全には実装していない。
-2.2 カーネルは受信オプションをほぼ完全にサポートサポートしているが、
-glibc2.1 には IPv6 オプションを生成するマクロが存在していない。
+IPv6 拡張 API は、現在まだ RFC\ 2292 を完全には実装していない。 2.2
+カーネルは受信オプションをほぼ完全にサポートサポートしているが、 glibc2.1 には IPv6 オプションを生成するマクロが存在していない。
 .PP
-.\"O IPSec support for EH and AH headers is missing.
 EH および AH ヘッダ での IPSec のサポートは存在しない。
 .PP
-.\"O Flow label management is not complete and not documented here.
 フローラベル管理はまだ完全でなく、ここにも記述されていない。
 .PP
-.\"O This man page is not complete.
 この man ページはまだ完成していない。
-.\"O .SH SEE ALSO
 .SH 関連項目
-.BR cmsg (3),
-.BR ip (7)
-.LP
-RFC\ 2553: IPv6 BASIC API.
-.\"O Linux tries to be compliant to this.
-Linux はこの RFC に準拠するようにしている。
-.LP
+\fBcmsg\fP(3), \fBip\fP(7)
+.PP
+RFC\ 2553: IPv6 BASIC API.  Linux はこの RFC に準拠するようにしている。
+.PP
 RFC\ 2460: IPv6 specification.
diff --git a/draft/man7/man.7 b/draft/man7/man.7
new file mode 100644 (file)
index 0000000..a9ae911
--- /dev/null
@@ -0,0 +1,328 @@
+.\" (C) Copyright 1992-1999 Rickard E. Faith and David A. Wheeler
+.\" (faith@cs.unc.edu and dwheeler@ida.org)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" Modified Sun Jul 25 11:06:05 1993 by Rik Faith (faith@cs.unc.edu)
+.\" Modified Sat Jun  8 00:39:52 1996 by aeb
+.\" Modified Wed Jun 16 23:00:00 1999 by David A. Wheeler (dwheeler@ida.org)
+.\" Modified Thu Jul 15 12:43:28 1999 by aeb
+.\" Modified Sun Jan  6 18:26:25 2002 by Martin Schulze <joey@infodrom.org>
+.\" Modified Tue Jul 27 20:12:02 2004 by Colin Watson <cjwatson@debian.org>
+.\" 2007-05-30, mtk: various rewrites and moved much text to new man-pages.7.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MAN 7 2011\-10\-05 Linux "Linux Programmer's Manual"
+.SH 名前
+man \- man ページを整形するマクロ
+.SH 書式
+\fBgroff \-Tascii \-man\fP \fIfile\fP \&...
+.LP
+\fBgroff \-Tps \-man\fP \fIfile\fP \&...
+.LP
+\fBman\fP [\fIsection\fP] \fItitle\fP
+.SH 説明
+このマニュアルページでは、 \fBgroff an.tmac\fP のマクロパッケージ (\fBman\fP マクロパッケージとも呼ばれることも多い)
+について説明する。 このマクロパッケージは、 Linux の man ページを書いたり移植したりするときに、 開発者が用いるものである。
+このマクロパッケージはバージョン間での互換性が高く、 man page の移植にあたっては大きな問題はないだろう (但し、NET\-2 BSD
+release は例外である。 こちらでは mdoc と呼ばれる全く異なるマクロパッケージが使用されている。 \fBmdoc\fP(7)  を参照)。
+.PP
+NET\-2 BSD の man ページも、 \fBgroff\fP のオプションとして \fB\-man\fP の代わりに \fB\-mdoc\fP
+を指定するだけで、利用することができる。 \fB\-mandoc\fP オプションを使えばどのマクロパッケージが用いられているか
+自動的に検出できるので、このオプションを使うのがお薦めである。
+.PP
+Linux \fIman\-pages\fP プロジェクトのマニュアルページを書く際に 従うべき決まり事については \fBman\-pages\fP(7)  を参照。
+.SS タイトル行
+man ページの (コメント行を除く) 最初のコマンドは、 以下のようにする必要がある。 コメント行とは \fB.\e"\fP で始まる行のことである。
+.RS
+.sp
+\fB\&.TH\fP \fItitle section date source manual\fP
+.sp
+.RE
+\fBTH\fP に渡す引き数の詳細については \fBman\-pages\fP(7)  を参照。
+.PP
+なお BSD の mdoc フォーマットのページは \fBTH\fP コマンドではなく \fBDd\fP コマンドから始まる。
+.SS セクション
+.\" The following doesn't seem to be required (see Debian bug 411303),
+.\" If the name contains spaces and appears
+.\" on the same line as
+.\" .BR \&.SH ,
+.\" then place the heading in double quotes.
+セクションは \fB\&.SH\fP で始まり、見出し名がそれに続く。
+
+NAME (名前) という見出しだけは必ず置かないといけない。 この見出しは一番最初のセクションにすべきで、見出しの
+次の行にはプログラムの説明を一行で書く。
+.RS
+.sp
+\&.SH NAME
+.br
+item \e\- description
+.sp
+.RE
+このフォーマットに従い、コマンド名に続くシングルダッシュ (\-) の前には必ず
+バックスラッシュを置くこと。 この文法は、 \fBmabdb\fP(8) プログラムが
+\fBwhatis\fP(1) や \fBapropos\fP(1) コマンド用の短い説明のデータベースを
+生成する際に利用される。
+.PP
+マニュアルページに登場する可能性のあるこれ以外のセクションのリストに ついては \fBman\-pages\fP(7)  を参照。
+.SS フォント
+タイプフェイスを選択するコマンドは以下のように指定する:
+.TP  4
+\fB\&.B\fP
+ボールド。
+.TP 
+\fB\&.BI\fP
+ボールドとイタリックとを交互に (特に関数指定に便利)。
+.TP 
+\fB\&.BR\fP
+ボールドとローマンとを交互に (特に他のマニュアルページを参照するときに便利)。
+.TP 
+\fB\&.I\fP
+イタリック。
+.TP 
+\fB\&.IB\fP
+イタリックとボールドとを交互に。
+.TP 
+\fB\&.IR\fP
+イタリックとローマンとを交互に。
+.TP 
+\fB\&.RB\fP
+ローマンとボールドとを交互に。
+.TP 
+\fB\&.RI\fP
+ローマンとイタリックとを交互に。
+.TP 
+\fB\&.SB\fP
+スモールとボールドを交互に。
+.TP 
+\fB\&.SM\fP
+スモール (頭字語などに用いる)
+.LP
+慣例としては、各コマンドは 6 つまでの引き数を持つ事が可能だが、 GNU の実装では制限はないようだ (しかし移植性を保持するためには 引き数は 6
+までに限っておくのが良いだろう)。 引き数はスペースで区切られる。 スペースを含んだ引き数を与えるには、ダブルクォートで囲えばよい。
+すべての引き数はスペースを取り除いて並べられるので、 \fB\&.BR\fP コマンドを使えば、単語はボールドで、句読点をローマンで表すことができる。
+引き数が全く与えられなければ、 そのコマンドは次の行のテキストに適用される。
+.SS その他のマクロや文字列
+.PP
+以下に、他のマクロや定義済みの文字列を示す。 特に記述がない限り、マクロを使うと改行が行われる (テキストの現在の行を終了する)。 多くのマクロは
+「優先インデント (prevailing indent)」を設定したり、使用する。 優先インデントの値は、どのマクロからもパラメータ \fIi\fP
+によって指定できる (以下に示す)。 マクロでは \fIi\fP を省略することもでき、その場合は現在の優先インデントの値が用いられる。
+これにより結果として、インデントされた段落が連続している場合、 インデントの値を再指定しなくてもインデント量を同じにすることができる。 通常の
+(インデントされていない) 段落が登場すると、 優先インデントの値はデフォルトの値 (0.5 インチ) にリセットされる。
+デフォルトでは、与えたインデントの値は ens 単位である。 インデントの単位には ens や ems を用いるとよい。これらの単位は
+フォントサイズが変更されると自動的に調整されるからである。 他の重要なマクロ定義は以下の通り:
+.SS 通常の段落
+.TP  9m
+\fB\&.LP\fP
+\fB\&.PP\fP と同じ (新たな段落の開始)。
+.TP 
+\fB\&.P\fP
+\fB\&.PP\fP と同じ (新たな段落の開始)。
+.TP 
+\fB\&.PP\fP
+新しい段落を開始し、インデントをリセットする。
+.SS 相対マージンインデント
+.TP  9m
+\fB\&.RS\fP\fI i\fP
+相対マージンインデント (relative margin indent) を開始する。 左マージンを \fIi\fP だけ右に移動する (\fIi\fP
+が省略されると優先インデントの値が用いられる)。 新たな優先インデントは 0.5 インチにセットされる。 結果として、以下の段落は対応する
+\fB\&.RE\fP が現れるまでインデントされる。
+.TP 
+\fB\&.RE\fP
+相対マージンインデントを終了し、 優先インデントの値を元に戻す。
+.SS 段落をインデントするマクロ
+.TP  9m
+\fB\&.HP\fP\fI i\fP
+ぶらさがりインデントの段落を開始する (段落の先頭行は通常の段落の左マージンとなり、 段落の残りの行はインデントされる)。
+.TP 
+\fB\&.IP\fP\fI x i\fP
+インデントされた段落。オプションとしてぶらさがりタグをとる。 タグ \fIx\fP が省略されると、以下の段落すべてが \fIi\fP でインデントされる。タグ
+\fIx\fP が与えられると、タグはインデントされた段落の前にぶら下げられる (\fB\&.TP\fP
+とちょうど同じ。ただしタグを次の行に書く代わりにコマンドに指定する)。 タグが長すぎる場合には、タグに続くテキストは次の行に移動する
+(テキストが失われたり混ざったりすることはない)。 箇条書きをするには、 \e(bu (点) あるいは \e(em (ダッシュ)
+をタグにしてこのマクロを用いるとよい。番号付きで箇条書きをする場合は、 数字または文字にピリオドを付けたものをタグにすればよい。
+こうすれば他のフォーマットへの変換が簡単になる。
+.TP 
+\fB\&.TP\fP\fI i\fP
+ぶらさがりタグの段落を開始する。タグは次の行に指定する。 結果は \fB\&.IP\fP コマンドと似たものになる。
+.SS ハイパーテキストリンク用のマクロ
+(\fBgroff\fP だけでサポートされている機能)  ハイパーテキストリンク用のマクロを使用するためには、 \fBwww.tmac\fP
+マクロパッケージをロードする必要がある。 ロードを行うには \fB.mso www.tmac\fP リクエストを使用する。
+.TP  9m
+\fB\&.URL\fP\fI link url trailer\fP
+.\" The following is a kludge to get a paragraph into the listing.
+URI (URL)  \fIurl\fP へのハイパーテキストリンクを挿入する。 \fIlink\fP はリンク名のテキストであり、 \fItrailer\fP
+の内容はリンクの直後に表示される。 HTML を生成する時に、このマクロは \fB<A
+HREF="\fP\fIurl\fP\fB">\fP\fIlink\fP\fB</A>\fP\fItrailer\fP という HTML コマンドに変換される。
+.TP 
+\fB\& \&\fR
+.\" The following is a kludge to get a paragraph into the listing.
+このマクロや他の関連マクロは新しく、 多くのツールはこれらに対しては何もしないであろう。 (troff を含めた)
+多くのツールは未定義のマクロを単に無視するだけ (あるいは最悪でもマクロをテキストとして挿入するだけ)  なので、これらを書いても危険はない。
+.TP 
+\fB\& \&\fR
+.\" The following is a kludge to get a paragraph into the listing.
+マニュアルページ内で自分で \fBURL\fP マクロを定義して、 \fBgroff\fP 以外の roff ビューアでも表示されるようにするのもいいだろう。
+こうすることで、URL も、リンク用のテキストも、(もしあれば) それに続く テキストも、表示できるようになる。
+.TP 
+\fB\& \&\fR
+以下に例を挙げる:
+.RS 1.5i
+\&.de URL
+.br
+\e\e$2 \e(laURL: \e\e$1 \e(ra\e\e$3
+.br
+\&..
+.br
+\&.if \en[.g] .mso www.tmac
+.br
+\&.TH \fI...\fP
+.br
+\fI(later in the page)\fP
+.br
+This software comes from the
+.br
+\&.URL "http://www.gnu.org/" "GNU Project" " of the"
+.br
+\&.URL "http://www.fsf.org/" "Free Software Foundation" .
+.RE
+.\" The following is a kludge to get a paragraph into the listing.
+.TP 
+\fB\& \&\fR
+上記の例において、 \fBgroff\fP を使って表示しようとした場合には、 \fBwww.tmac\fP マクロパッケージの URL マクロの定義の方が
+ローカルで行われた定義よりも優先される。
+.PP
+他にもいくつかのリンク用のマクロが用意されている。詳しくは \fBgroff_www\fP(7) を参照のこと。
+.SS その他のマクロ
+.TP  9m
+\fB\&.DT\fP
+タブをデフォルトのタブ値 (0.5 インチごと) にリセットする。 改行はしない。
+.TP 
+\fB\&.PD\fP\fI d\fP
+パラグラフ間の間隔を引き数にセットする (省略されると d=0.4v となる)。
+.TP 
+\fB\&.SS\fP\fI t\fP
+サブヘッダ \fIt\fP (\fB\&.SH\fP のようなものだが、サブセクションのために用いる)。
+.SS 定義済みの文字列
+\fBman\fP パッケージには、以下のような定義済みの文字列がある:
+.IP \e*R
+登録シンボル: \*R
+.IP \e*S
+デフォルトフォントサイズを変更する
+.IP \e*(Tm
+商標シンボル: \*(Tm
+.IP \e*(lq
+左に傾いたダブルクォート: \*(lq
+.IP \e*(rq
+右に傾いたダブルクォート: \*(rq
+.SS 安全なサブセット
+技術的には \fBman\fP は troff のマクロパッケージだが、実際には多数の別のツールが man ページのファイルを処理しており、それらは
+troff の全ての機能を 実装していないこともある。したがって、他のツールでも正しく処理できるように、 troff
+のあまり一般的でない機能は、可能ならば用いないのが望ましい。 様々な troff プリプロセッサ も用いないほうが良いだろう (やむを得ない場合は
+\fBtbl\fP(1)  は用いても良い。しかし 2 列の表なら、代わりに \fBIP\fP や \fBTP\fP コマンドを用いてみよう)。
+計算機能も用いない方が良いだろう。他のツールのほとんどはこれらを処理できない。 他のフォーマットに変換が容易な、単純なコマンドを使うようにしよう。
+以下の troff コマンドは、使っても問題ないと考えてよいだろう (多くの場合、変換コマンドによって無視されるかもしれないが)。 \fB\e"\fP,
+\&\fB.\fP, \fBad\fP, \fBbp\fP, \fBbr\fP, \fBce\fP, \fBde\fP, \fBds\fP, \fBel\fP, \fBie\fP, \fBif\fP, \fBfi\fP,
+\fBft\fP, \fBhy\fP, \fBig\fP, \fBin\fP, \fBna\fP, \fBne\fP, \fBnf\fP, \fBnh\fP, \fBps\fP, \fBso\fP, \fBsp\fP,
+\fBti\fP, \fBtr\fP
+.PP
+troff のエスケープシーケンスの多くも利用できる (これらのエスケープシーケンスは \e で始まる)。
+バックスラッシュ文字を通常のテキストとして使いたい場合は \ee とする。 利用できる他のシーケンスには以下のようなものがある (x や xx
+は任意の文字, N は任意の数字): \fB\e'\fP, \fB\e`\fP, \fB\e\-\fP, \fB\e.\fP, \fB\e"\fP, \fB\e%\fP, \fB\e*x\fP,
+\fB\e*(xx\fP, \fB\e(xx\fP, \fB\e$N\fP, \fB\enx\fP, \fB\en(xx\fP, \fB\efx\fP, \fB\ef(xx\fP.
+グラフィックの描画にはエスケープシーケンスは用いないほうが良い。
+.PP
+\fBbp\fP (改頁) にはオプションパラメータを用いないこと。 \fBsp\fP (垂直スペース) には正の値のみを用いること。 man や mdoc
+マクロパッケージにあるマクロと、 名前が同じで機能の異なるマクロを定義 (\fBde\fP)  しないこと。そのような再定義は無視される可能性が高い。
+正方向へのインデント (\fBin\fP)  には、負のインデントを対応させること (このマクロの代わりに \fBRS\fP と \fBRE\fP
+マクロを使った方がよいのだが)。 条件テスト (\fBif\fP,\fBie\fP)  は状態として \(aqt\(aq または \(aqn\(aq
+だけを持つようにすること。 変換 (\fBtr\fP)  には無視できるものだけを使うこと。 フォントの変更 (\fBft\fP と \fB\ef\fP
+エスケープシーケンス) には 1, 2, 3, 4, R, I, B, P, CW のみを用いること (ft
+コマンドの場合はパラメータを指定しなくてもよい)。
+.PP
+この制限を越えて機能を用いる場合は、いくつかのツールを使って、 その結果を注意してチェックすること。追加した機能が安全だと
+確信したら、この文書の管理者にその安全なコマンドまたはシーケンスを 教えてほしい。リストに追加する。
+.SH ファイル
+\fI/usr/share/groff/\fP[*/]\fItmac/an.tmac\fP
+.br
+\fI/usr/man/whatis\fP
+.SH 注意
+.PP
+テキストにはぜひとも完全な URL (または URI) を書くようにすること。 \fBman2html\fP(1)
+のようなツールは、これらを自動的にハイパーテキストリンクに変換する。 新たに取り入れられた \fBURL\fP マクロを関連情報へのリンクに用いても良い。
+URL を書く場合は、 例えば <http://www.kernelnotes.org> のように完全な形式で書き、 ツールによる
+URL 自動検知ができるようにすること。
+.PP
+これらのファイルを処理するツールは、ファイルをオープンして 最初の空白以外の文字を調べる。行の先頭にピリオド (.)  またはシングルクォート (')
+があると、これは troff ベースの ファイル (man や mdoc) であるとみなす。左角括弧 (<) は SGML/XML
+ベースのファイル (HTML や Docbook) であるとみなす。 それ以外は単純な ASCII テキスト ("catman" の結果など)
+とみなす。
+.PP
+多くの man ページは、最初の行が \fB\'\e"\fP とスペースで始まっており、
+そこにはそのページが処理されるべきプリプロセスを表す文字が書いてある。 troff 以外の変換プログラムへの移植性のため、 \fBtbl\fP(1)  や、
+Linux が自動的に検知できるもの以外は使わないようにすることを勧める。 しかし、この情報を記述して、書いたページが他の (より低機能な)
+システムでも 扱えるようにしたい場合もあるかも知れない。 以下にこれらの文字によって起動されるプリプロセッサの定義を示す:
+.TP  3
+\fBe\fP
+eqn(1)
+.TP 
+\fBg\fP
+grap(1)
+.TP 
+\fBp\fP
+pic(1)
+.TP 
+\fBr\fP
+refer(1)
+.TP 
+\fBt\fP
+tbl(1)
+.TP 
+\fBv\fP
+vgrind(1)
+.SH バグ
+.PP
+mdoc や DocBook に比べると、 マクロの多くは書式 (フォントタイプやスペーシングなど) に関するものであり、 意味上のもの
+(このテキストは他のページへの参照である、など) ではない (HTML ですら意味的なマーキングに思える)。 このため、 \fBman\fP
+フォーマットを他のメディアへ変換したり、 フォーマットを他のメディアで有効なものにしたり、 相互参照を自動的に挿入したりすることが困難になっている。
+上に挙げたような安全なサブセットを守れば、 将来別のリファレンスページフォーマットへ変換する作業が簡単になるだろう。
+.LP
+.\" .SH AUTHORS
+.\" .IP \(em 3m
+.\" James Clark (jjc@jclark.com) wrote the implementation of the macro package.
+.\" .IP \(em
+.\" Rickard E. Faith (faith@cs.unc.edu) wrote the initial version of
+.\" this manual page.
+.\" .IP \(em
+.\" Jens Schweikhardt (schweikh@noc.fdn.de) wrote the Linux Man-Page Mini-HOWTO
+.\" (which influenced this manual page).
+.\" .IP \(em
+.\" David A. Wheeler (dwheeler@ida.org) heavily modified this
+.\" manual page, such as adding detailed information on sections and macros.
+Sun のマクロである \fBTX\fP は定義されていない。
+.SH 関連項目
+\fBapropos\fP(1), \fBgroff\fP(1), \fBlexgrog\fP(1), \fBman\fP(1), \fBman2html\fP(1),
+\fBwhatis\fP(1), \fBgroff_man\fP(7), \fBgroff_www\fP(7), \fBman\-pages\fP(7), \fBmdoc\fP(7),
+\fBmdoc.samples\fP(7)
index 414eeae..e3e7e52 100644 (file)
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
 .\"
-.\" Japanese Version Copyright (c) 2008  Akihiro MOTOKI
-.\"         all rights reserved.
-.\" Translated 2008-08-17, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.07
-.\" 
-.\"WORD:       significand     仮数部
-.\"WORD:       domain error    領域エラー
-.\"WORD:       pole error      極エラー
-.\"WORD:       range error     範囲エラー
-.\" 
-.TH MATH_ERROR 7 2008-08-11 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MATH_ERROR 7 2008\-08\-11 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O math_error \- detecting errors from mathematical functions
 math_error \- 数学関数からのエラーの検出
-.\"O .SH SYNOPSIS
 .SH 書式
 .nf
-.B #include <math.h>
-.B #include <errno.h>
-.B #include <fenv.h>
+\fB#include <math.h>\fP
+\fB#include <errno.h>\fP
+\fB#include <fenv.h>\fP
 .fi
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O When an error occurs,
-.\"O most library functions indicate this fact by returning a special value
-.\"O (e.g., \-1 or NULL).
-.\"O Because they typically return a floating-point number,
-.\"O the mathematical functions declared in
-.\"O .IR <math.h>
-.\"O indicate an error using other mechanisms.
-.\"O There are two error-reporting mechanisms:
-.\"O the older one sets
-.\"O .IR errno ;
-.\"O the newer one uses the floating-point exception mechanism (the use of
-.\"O .BR feclearexcept (3)
-.\"O and
-.\"O .BR fetestexcept (3),
-.\"O as outlined below)
-.\"O described in
-.\"O .BR fenv (3).
-エラーが発生すると、ほとんどのライブラリ関数は (\-1 や NULL などの)
-特別な値を返すことでエラーを通知する。
-.I <math.h>
-で宣言されている数学関数は、通常は浮動小数点値を返すので、
-他の機構を使ってエラーを通知する。
-エラー通知機構は 2 種類あり、
-古いものが
-.I errno
-を設定するやり方であり、新しいものが
-.BR fenv (3)
-で説明されている浮動小数点例外機構である。
-.RB ( feclearexcept (3)
-と
-.BR fetestexcept (3)
-を使用する。これらについては以下で概要を説明している。)
+エラーが発生すると、ほとんどのライブラリ関数は (\-1 や NULL などの)  特別な値を返すことでエラーを通知する。
+\fI<math.h>\fP で宣言されている数学関数は、通常は浮動小数点値を返すので、 他の機構を使ってエラーを通知する。 エラー通知機構は
+2 種類あり、 古いものが \fIerrno\fP を設定するやり方であり、新しいものが \fBfenv\fP(3)  で説明されている浮動小数点例外機構である。
+(\fBfeclearexcept\fP(3)  と \fBfetestexcept\fP(3)  を使用する。これらについては以下で概要を説明している。)
 
-.\"O A portable program that needs to check for an error from a mathematical
-.\"O function should set
-.\"O .I errno
-.\"O to zero, and make the following call
-移植性が必要なプログラムで、数学関数からのエラーを確認する必要がある場合には、
-数学関数を呼び出す前に
-.I errno
-を 0 に設定し、以下を呼び出すべきである。
+移植性が必要なプログラムで、数学関数からのエラーを確認する必要がある場合には、 数学関数を呼び出す前に \fIerrno\fP を 0 に設定し、
 .in +4n
 .nf
 
 feclearexcept(FE_ALL_EXCEPT);
-.\"O 
+
 .fi
 .in
-.\"O before calling a mathematical function.
-.\"Omotoki: 対応する訳は feclearexcept の引用の前にある。
+を呼び出すべきである。
 
-.\"O Upon return from the mathematical function, if
-.\"O .I errno
-.\"O is nonzero, or the following call (see
-.\"O .BR fenv (3))
-.\"O returns nonzero
-数学関数から返ってきた際に、
-.I errno
-が 0 以外か、以下の呼び出しが 0 以外を返した場合
-.RB ( fenv (3)
-参照)、数学関数でエラーが発生している。
+数学関数から返ってきた際に、 \fIerrno\fP が 0 以外か、
 .in +4n
 .nf
 
 fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW |
              FE_UNDERFLOW);
-.\"O 
+
 .fi
 .in
 .\" enum
@@ -122,254 +69,50 @@ fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW |
 .\" FE_UNDERFLOW = 0x10,
 .\" FE_INEXACT = 0x20
 .\" };
-.\"O then an error occurred in the mathematical function.
-.\"Omotoki: 対応する訳は fetestexcept の引用の前にある。
+の呼び出しが 0 以外を返した場合 (\fBfenv\fP(3)  参照)、数学関数でエラーが発生している。
 
-.\"O The error conditions that can occur for mathematical functions
-.\"O are described below.
 数学関数で発生するエラー条件については以下で説明する。
-.\"O .SS Domain Error
-.SS 領域エラー (domain error)
-.\"O A
-.\"O .I domain error
-.\"O occurs when a mathematical function is supplied with an argument whose
-.\"O value falls outside the domain for which the function
-.\"O is defined (e.g., giving a negative argument to
-.\"O .BR log (3)).
-.\"O When a domain error occurs,
-.\"O math functions commonly return a NaN
-.\"O (though some functions return a different value in this case);
-.\"O .I errno
-.\"O is set to
-.\"O .BR EDOM ,
-.\"O and an "invalid"
-.\"O .RB ( FE_INVALID )
-.\"O floating-point exception is raised.
-.I 領域エラー
-が発生するのは、数学関数に渡された引き数の値がその関数が定義されている
-領域に入っていない場合である (例えば
-.BR log (3)
-に負の引き数を渡した場合)。
-領域エラーが発生すると、
-数学関数は普通は NaN を返し
-(同じ状況で違う値を返す関数もある)、
-.I errno
-に
-.B EDOM
-を設定し、「無効 (invalid)」
-浮動小数点例外
-.RB ( FE_INVALID )
-を上げる。
-.\"O .SS Pole Error
-.SS 極エラー (pole error)
-.\"O A
-.\"O .I pole error
-.\"O occurs when the mathematical result of a function is an exact infinity
-.\"O (e.g., the logarithm of 0 is negative infinity).
-.\"O When a pole error occurs,
-.\"O the function returns the (signed) value
-.\"O .BR HUGE_VAL ,
-.\"O .BR HUGE_VALF ,
-.\"O or
-.\"O .BR HUGE_VALL ,
-.\"O depending on whether the function result type is
-.\"O .IR double ,
-.\"O .IR float ,
-.\"O or
-.\"O .IR "long double" .
-.\"O The sign of the result is that which is mathematically correct for
-.\"O the function.
-.I 極エラー
-が発生するのは、関数の数学的な結果が無限大そのものとなる場合である
-(例えば
-0 の対数は負の無限大である)。
-極エラーが発生すると、その関数の返り値は (符号付きの)
-.BR HUGE_VAL ,
-.BR HUGE_VALF ,
-.B HUGE_VALL
-のいずれかとなる (前記の値のうちどれが返るかは関数の返り値の型により決まり、
-それぞれ
-.IR double ,
-.IR float ,
-.I "long double"
-に対応する)。
-結果の符号は、その関数の数学的な定義から決定される。
-.\"O .I errno
-.\"O is set to
-.\"O .BR ERANGE ,
-.\"O and a "divide-by-zero"
-.\"O .RB ( FE_DIVBYZERO )
-.\"O floating-point exception is raised.
-.I errno
-は
-.B ERANGE
-に設定され、「0 による除算 (divide-by-zero)」
-浮動小数点例外
-.RB ( FE_DIVBYZERO )
-が上がる。
-.\"O .SS Range Error
-.SS 範囲エラー (range エラー)
-.\"O A
-.\"O .I range error
-.\"O occurs when the magnitude of the function result means that it
-.\"O cannot be represented in the result type of the function.
-.\"O The return value of the function depends on whether the range error
-.\"O was an overflow or an underflow.
-.I 範囲エラー
-が発生するのは、関数の結果の値がその関数の返り値の型では表現できない場合
-である。関数の返り値は、範囲エラーがオーバーフローであったかアンダーフロー
-であったかによって異なる。
+.SS "領域エラー (domain error)"
+\fI領域エラー\fP が発生するのは、数学関数に渡された引き数の値がその関数が定義されている 領域に入っていない場合である (例えば \fBlog\fP(3)
+に負の引き数を渡した場合)。 領域エラーが発生すると、 数学関数は普通は NaN を返し (同じ状況で違う値を返す関数もある)、 \fIerrno\fP に
+\fBEDOM\fP を設定し、「無効 (invalid)」 浮動小数点例外 (\fBFE_INVALID\fP)  を上げる。
+.SS "極エラー (pole error)"
+\fI極エラー\fP が発生するのは、関数の数学的な結果が無限大そのものとなる場合である (例えば 0 の対数は負の無限大である)。
+極エラーが発生すると、その関数の返り値は (符号付きの)  \fBHUGE_VAL\fP, \fBHUGE_VALF\fP, \fBHUGE_VALL\fP
+のいずれかとなる (前記の値のうちどれが返るかは関数の返り値の型により決まり、 それぞれ \fIdouble\fP, \fIfloat\fP, \fIlong
+double\fP に対応する)。 結果の符号は、その関数の数学的な定義から決定される。 \fIerrno\fP は \fBERANGE\fP に設定され、「0
+による除算 (divide\-by\-zero)」 浮動小数点例外 (\fBFE_DIVBYZERO\fP)  が上がる。
+.SS "範囲エラー (range エラー)"
+\fI範囲エラー\fP が発生するのは、関数の結果の値がその関数の返り値の型では表現できない場合
+である。関数の返り値は、範囲エラーがオーバーフローであったかアンダーフロー であったかによって異なる。
 
-.\"O A floating result
-.\"O .I overflows
-.\"O if the result is finite,
-.\"O but is too large to represented in the result type.
-.\"O When an overflow occurs,
-.\"O the function returns the value
-.\"O .BR HUGE_VAL ,
-.\"O .BR HUGE_VALF ,
-.\"O or
-.\"O .BR HUGE_VALL ,
-.\"O depending on whether the function result type is
-.\"O .IR double ,
-.\"O .IR float ,
-.\"O or
-.\"O .IR "long double" .
-.\"O .I errno
-.\"O is set to
-.\"O .BR ERANGE ,
-.\"O and an "overflow"
-.\"O .RB ( FE_OVERFLOW )
-.\"O floating-point exception is raised.
-浮動小数点のオーバーフローは、結果が有限だが、大き過ぎて
-結果を返す型では表現できない場合に発生する。
-オーバーフローが発生すると、
-その関数は
-.BR HUGE_VAL ,
-.BR HUGE_VALF ,
-.B HUGE_VALL
-のいずれかを返す (前記の値のうちどれが返るかは関数の返り値の型により決まり、
-それぞれ
-.IR double ,
-.IR float ,
-.I "long double"
-に対応する)。
-.I errno
-は
-.B ERANGE
-に設定され、「オーバーフロー (overflow)」
-浮動小数点例外
-.RB ( FE_OVERFLOW )
-が上がる。
+浮動小数点のオーバーフローは、結果が有限だが、大き過ぎて 結果を返す型では表現できない場合に発生する。 オーバーフローが発生すると、 その関数は
+\fBHUGE_VAL\fP, \fBHUGE_VALF\fP, \fBHUGE_VALL\fP のいずれかを返す
+(前記の値のうちどれが返るかは関数の返り値の型により決まり、 それぞれ \fIdouble\fP, \fIfloat\fP, \fIlong double\fP
+に対応する)。 \fIerrno\fP は \fBERANGE\fP に設定され、「オーバーフロー (overflow)」 浮動小数点例外
+(\fBFE_OVERFLOW\fP)  が上がる。
 
-.\"O A floating result
-.\"O .I underflows
-.\"O if the result is too small to be represented in the result type.
-.\"O If an underflow occurs,
-.\"O a mathematical function typically returns 0.0
-.\"O (C99 says a function shall return "an implementation-defined value
-.\"O whose magnitude is no greater than the smallest normalized
-.\"O positive number in the specified type").
-浮動小数点のアンダーフローは、
-結果が小さ過ぎて、結果を返す型では表現できない場合に発生する。
-アンダーフローが発生すると、数学関数は通常は 0.0 を返す
-(C99 では、指定された型において最小の正規化された正の値より大きくない
-値を持つ実装定義 (implementation-defined) の値を返す、となっている)。
-.\"O .I errno
-.\"O may be set to
-.\"O .BR ERANGE ,
-.\"O and an "overflow"
-.\"O .RB ( FE_UNDERFLOW )
-.\"O floating-point exception may be raised.
-.I errno
-は
-.B ERANGE
-に設定され、「アンダーフロー」浮動小数点例外
-.RB ( FE_UNDERFLOW )
+浮動小数点のアンダーフローは、 結果が小さ過ぎて、結果を返す型では表現できない場合に発生する。 アンダーフローが発生すると、数学関数は通常は 0.0
+を返す (C99 では、指定された型において最小の正規化された正の値より大きくない 値を持つ実装定義 (implementation\-defined)
+の値を返す、となっている)。 \fIerrno\fP は \fBERANGE\fP に設定され、「アンダーフロー」浮動小数点例外 (\fBFE_UNDERFLOW\fP)
 が上がる。
 
-.\"O Some functions deliver a range error if the supplied argument value,
-.\"O or the correct function result, would be
-.\"O .IR subnormal .
-.\"O A subnormal value is one that is nonzero,
-.\"O but with a magnitude that is so small that
-.\"O it can't be presented in normalized form
-.\"O (i.e., with a 1 in the most significant bit of the significand).
-.\"O The representation of a subnormal number will contain one
-.\"O or more leading zeros in the significand.
-いくつかの関数では、渡された引き数の値や、正しい関数の結果が
-.I subnormal (非正規化数)
-になる場合に範囲エラーを上げる。
-subnormal な値とは、0 ではないが、その値が小さすぎて
-(仮数部の最上位ビットが 1 となる) 標準形では表現できないような値である。
-subnormal な値の表現では、仮数部の上位側のビットに 1 個以上の 0 が
-含まれることになる。
-.\"O .SH NOTES
+いくつかの関数では、渡された引き数の値や、正しい関数の結果が \fIsubnormal (非正規化数)\fP になる場合に範囲エラーを上げる。
+subnormal な値とは、0 ではないが、その値が小さすぎて (仮数部の最上位ビットが 1 となる) 標準形では表現できないような値である。
+subnormal な値の表現では、仮数部の上位側のビットに 1 個以上の 0 が 含まれることになる。
 .SH 注意
-.\"O The
-.\"O .I math_errhandling
-.\"O identifier specified by C99 and POSIX.1-2001 is not supported by glibc.
-C99 と POSIX.1-2001 で規定されている
-.I math_errhandling
-識別子は glibc ではサポートされていない。
 .\" See CONFORMANCE in the glibc 2.8 (and earlier) source.
-.\"O This identifier is supposed to indicate which of the two
-.\"O error-notification mechanisms
-.\"O .RI ( errno ,
-.\"O exceptions retrievable via
-.\"O .BR fettestexcept (3))
-.\"O is in use.
-この識別子は、2 つのエラー通知機構
-.RI ( errno
-と
-.BR fetestexcept (3)
-経由で取得できる例外) のうちどちらが使用されているかを通知
-することになっている。
-.\"O The standards require that at least one be in use,
-.\"O but permit both to be available.
-.\"O The current (version 2.8) situation under glibc is messy.
-.\"O Most (but not all) functions raise exceptions on errors.
-.\"O Some also set
-.\"O .IR errno .
-.\"O A few functions set
-.\"O .IR errno ,
-.\"O but don't raise an exception.
-.\"O A very few functions do neither.
-.\"O See the individual manual pages for details.
-標準では、少なくとも一つは使用されることが要求されているが、
-両方とも利用可能であってもよいとされている。
-glibc での現在の (バージョン 2.8 での) 状況はかなり混乱している。
-ほとんどの関数 (ただし全部ではない) はエラー時に例外を上げる。
-いくつかの関数は
-.I errno
-も設定する。
-.I errno
-を設定するが、例外を上げない関数も少しだけ存在する。
-どちらも行わない関数もごく少数だが存在する。
-詳細については個々のマニュアルページを参照のこと。
+C99 と POSIX.1\-2001 で規定されている \fImath_errhandling\fP 識別子は glibc ではサポートされていない。
+この識別子は、2 つのエラー通知機構 (\fIerrno\fP と \fBfetestexcept\fP(3)  経由で取得できる例外)
+のうちどちらが使用されているかを通知 することになっている。 標準では、少なくとも一つは使用されることが要求されているが、
+両方とも利用可能であってもよいとされている。 glibc での現在の (バージョン 2.8 での) 状況はかなり混乱している。 ほとんどの関数
+(ただし全部ではない) はエラー時に例外を上げる。 いくつかの関数は \fIerrno\fP も設定する。 \fIerrno\fP
+を設定するが、例外を上げない関数も少しだけ存在する。 どちらも行わない関数もごく少数だが存在する。 詳細については個々のマニュアルページを参照のこと。
 
-.\"O To avoid the complexities of using
-.\"O .I errno
-.\"O and
-.\"O .BR fetestexcept (3)
-.\"O for error checking,
-.\"O it is often advised that one should instead check for bad argument
-.\"O values before each call.
-.I errno
-と
-.BR fetestexcept (3)
-の両方を使ってエラーチェックを行うことで複雑になるのを避けるため、
-多くの場合、関数呼び出しを行う前に不正な引き数かのチェックを行う
-方法が推奨されている。
 .\" http://www.securecoding.cert.org/confluence/display/seccode/FLP32-C.+Prevent+or+detect+domain+and+range+errors+in+math+functions
-.\"O For example, the following code ensures that
-.\"O .BR log (3)'s
-.\"O argument is not a NaN and is not zero (a pole error) or
-.\"O less than zero (a domain error):
-例えば、以下のコードは、
-.BR log (3)
-の引き数が NaN でも (極エラーとなる) 0 でも (領域エラーとなる) 0 未満
-でもないことを保証するものである。
+\fIerrno\fP と \fBfetestexcept\fP(3)  の両方を使ってエラーチェックを行うことで複雑になるのを避けるため、
+多くの場合、関数呼び出しを行う前に不正な引き数かのチェックを行う 方法が推奨されている。 例えば、以下のコードは、 \fBlog\fP(3)  の引き数が
+NaN でも (極エラーとなる) 0 でも (領域エラーとなる) 0 未満 でもないことを保証するものである。
 .in +4n
 .nf
 
@@ -383,58 +126,15 @@ r = log(x);
 
 .fi
 .in
-.\"O The discussion on this page does not apply to the complex
-.\"O mathematical functions (i.e., those declared by
-.\"O .IR <complex.h> ),
-.\"O which in general are not required to return errors by C99
-.\"O and POSIX.1-2001.
-このページに書かれていることは、
-.RI ( <complex.h>
-で宣言されている) 複素数関数にはあてはまらない。
-一般に、C99 や POSIX.1-2001 ではこれらの関数がエラーを返すことを
-要求してない。
+このページに書かれていることは、 (\fI<complex.h>\fP で宣言されている) 複素数関数にはあてはまらない。 一般に、C99 や
+POSIX.1\-2001 ではこれらの関数がエラーを返すことを 要求してない。
 
-.\"O The
-.\"O .BR gcc (1)
-.\"O .I "-fno-math-errno"
-.\"O option causes the executable to employ implementations of some
-.\"O mathematical functions that are faster than the standard
-.\"O implementations, but do not set
-.\"O .I errno
-.\"O on error.
-.\"O (The
-.\"O .BR gcc (1)
-.\"O .I "-ffast-math"
-.\"O option also enables
-.\"O .IR "-fno-math-errno" .)
-.\"O An error can still be tested for using
-.\"O .BR fetestexcept (3).
-.BR gcc (1)
-の
-.I "-fno-math-errno"
-オプションを使うと、実行ファイルで、標準の実装よりも高速な数学関数の
-実装が使用されるようになるが、
-エラー時に
-.I errno
-が設定されない
-.RB ( gcc (1)
-の
-.I "-ffast-math"
-オプションを指定した場合にも
-.I "-fno-math-errno"
-は有効になる)。
-このオプションを指定した場合でも、
-.BR fetestexcept (3)
-を使ったエラーの検査は可能である。
-.\"O .SH SEE ALSO
+\fBgcc\fP(1)  の \fI\-fno\-math\-errno\fP オプションを使うと、実行ファイルで、標準の実装よりも高速な数学関数の
+実装が使用されるようになるが、 エラー時に \fIerrno\fP が設定されない (\fBgcc\fP(1)  の \fI\-ffast\-math\fP
+オプションを指定した場合にも \fI\-fno\-math\-errno\fP は有効になる)。 このオプションを指定した場合でも、
+\fBfetestexcept\fP(3)  を使ったエラーの検査は可能である。
 .SH 関連項目
-.BR gcc (1),
-.BR errno (3),
-.BR fenv (3),
-.BR fpclassify (3),
-.BR INFINITY (3),
-.BR isgreater (3),
-.BR matherr (3),
-.BR nan (3)
+\fBgcc\fP(1), \fBerrno\fP(3), \fBfenv\fP(3), \fBfpclassify\fP(3), \fBINFINITY\fP(3),
+\fBisgreater\fP(3), \fBmatherr\fP(3), \fBnan\fP(3)
 .br
-.I "info libc"
+\fIinfo libc\fP
index ebdbb1f..52896f4 100644 (file)
@@ -1,4 +1,4 @@
-'\" t
+.\" t
 .\" Hey Emacs! This file is -*- nroff -*- source.
 .\"
 .\" Copyright (C) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
 .\"
-.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
-.\" Translated 2006-03-13, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" Updated 2006-07-20, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.36
-.\" Updated 2009-02-23, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.19
-.\" Updated 2010-04-11, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.24
+.\"*******************************************************************
 .\"
-.\"WORD:       message queue descriptor        メッセージキュー記述子
-.\"WORD:       message queue description       メッセージキュー記述
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH MQ_OVERVIEW 7 2009-09-27 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.TH MQ_OVERVIEW 7 2009\-09\-27 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O mq_overview \- Overview of POSIX message queues
 mq_overview \- POSIX メッセージキューの概要
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O POSIX message queues allow processes to exchange data in
-.\"O the form of messages.
-.\"O This API is distinct from that provided by System V message queues
-.\"O .RB ( msgget (2),
-.\"O .BR msgsnd (2),
-.\"O .BR msgrcv (2),
-.\"O etc.), but provides similar functionality.
-POSIX メッセージキューを使用すると、プロセス間で
-メッセージの形でのデータのやり取りを行うことができる。
-この API は System V メッセージキューの API
-.RB ( msgget (2),
-.BR msgsnd (2),
-.BR msgrcv (2)
-など) とは異なるものだが、同様の機能を提供する。
+POSIX メッセージキューを使用すると、プロセス間で メッセージの形でのデータのやり取りを行うことができる。 この API は System V
+メッセージキューの API (\fBmsgget\fP(2), \fBmsgsnd\fP(2), \fBmsgrcv\fP(2)  など)
+とは異なるものだが、同様の機能を提供する。
 
-.\"O Message queues are created and opened using
-.\"O .BR mq_open (3);
-.\"O this function returns a
-.\"O .I message queue descriptor
-.\"O .RI ( mqd_t ),
-.\"O which is used to refer to the open message queue in later calls.
-.\"O Each message queue is identified by a name of the form
-.\"O .IR /somename ;
-.\"O that is, a null-terminated string of up to
-.\"O .BI NAME_MAX
-.\"O (i.e., 255) characters consisting of an initial slash,
-.\"O followed by one or more characters, none of which are slashes.
-メッセージキューの作成とオープンは
-.BR mq_open (3)
-を使って行う。この関数は
-.I メッセージキュー記述子 (message queue descriptor)
-.RI ( mqd_t )
-を返す。これ以降のコールでは、オープンされたメッセージキューは
-.I メッセージキュー記述子
-を使って参照される。
-各メッセージキューは
-.I /somename
-の形の名前で区別することができる。
-その名前は、最大で
-.B NAME_MAX
-(すなわち 255) 文字の NULL 終端された文字列で、
-スラッシュで始まり、スラッシュ以外の文字が 1 文字以上続く形式である。
-.\"O Two processes can operate on the same queue by passing the same name to
-.\"O .BR mq_open (3).
-.BR mq_open (3)
-に同じ名前を渡すことで、2つのプロセスで同一のキューを
-操作することができる。
+メッセージキューの作成とオープンは \fBmq_open\fP(3)  を使って行う。この関数は \fIメッセージキュー記述子 (message queue
+descriptor)\fP (\fImqd_t\fP)  を返す。これ以降のコールでは、オープンされたメッセージキューは \fIメッセージキュー記述子\fP
+を使って参照される。 各メッセージキューは \fI/somename\fP の形の名前で区別することができる。 その名前は、最大で \fBNAME_MAX\fP
+(すなわち 255) 文字の NULL 終端された文字列で、 スラッシュで始まり、スラッシュ以外の文字が 1 文字以上続く形式である。
+\fBmq_open\fP(3)  に同じ名前を渡すことで、2つのプロセスで同一のキューを 操作することができる。
 
-.\"O Messages are transferred to and from a queue using
-.\"O .BR mq_send (3)
-.\"O and
-.\"O .BR mq_receive (3).
-.\"O When a process has finished using the queue, it closes it using
-.\"O .BR mq_close (3),
-.\"O and when the queue is no longer required, it can be deleted using
-.\"O .BR mq_unlink (3).
-.\"O Queue attributes can be retrieved and (in some cases) modified using
-.\"O .BR mq_getattr (3)
-.\"O and
-.\"O .BR mq_setattr (3).
-.\"O A process can request asynchronous notification
-.\"O of the arrival of a message on a previously empty queue using
-.\"O .BR mq_notify (3).
-メッセージのキューへの送受信は
-.BR mq_send (3)
-と
-.BR mq_receive (3)
-を使って行う。プロセスがキューの使用を終えるときには、
-.BR mq_close (3)
-を使ってキューをクローズする。キューがもはや不要となった場合には、
-.BR mq_unlink (3)
-を使ってキューを削除できる。キューの属性は
-.BR mq_getattr (3)
-で取得でき、 (制限はあるが)
-.BR mq_setattr (3)
-で変更できる。
-.BR mq_notify (3)
-を使うことで、空のキューへのメッセージ到着を非同期で
-通知するように要求することもできる。
+メッセージのキューへの送受信は \fBmq_send\fP(3)  と \fBmq_receive\fP(3)
+を使って行う。プロセスがキューの使用を終えるときには、 \fBmq_close\fP(3)
+を使ってキューをクローズする。キューがもはや不要となった場合には、 \fBmq_unlink\fP(3)  を使ってキューを削除できる。キューの属性は
+\fBmq_getattr\fP(3)  で取得でき、 (制限はあるが)  \fBmq_setattr\fP(3)  で変更できる。 \fBmq_notify\fP(3)
+を使うことで、空のキューへのメッセージ到着を非同期で 通知するように要求することもできる。
 
-.\"O A message queue descriptor is a reference to an
-.\"O .I "open message queue description"
-.\"O (cf.
-.\"O .BR open (2)).
-.\"O After a
-.\"O .BR fork (2),
-.\"O a child inherits copies of its parent's message queue descriptors,
-.\"O and these descriptors refer to the same open message queue descriptions
-.\"O as the corresponding descriptors in the parent.
-.\"O Corresponding descriptors in the two processes share the flags
-.\"O .RI ( mq_flags )
-.\"O that are associated with the open message queue description.
-メッセージキュー記述子は
-.I "オープンメッセージキュー記述 (open message queue description)"
-への参照である
-.RB ( open (2)
-も参照)。
-.BR fork (2)
-実行後は、子プロセスは親プロセスのメッセージキュー記述子のコピーを継承する。
-これらの記述子は、親プロセスの対応する記述子と同じオープンメッセージキュー
-記述を参照している。親プロセスと子プロセスの対応する記述子は、フラグ
-.RI ( mq_flags )
-を共有する。なぜなら、フラグはオープンメッセージキュー記述に
-関連付けられているからである。
+メッセージキュー記述子は \fIオープンメッセージキュー記述 (open message queue description)\fP への参照である
+(\fBopen\fP(2)  も参照)。 \fBfork\fP(2)  実行後は、子プロセスは親プロセスのメッセージキュー記述子のコピーを継承する。
+これらの記述子は、親プロセスの対応する記述子と同じオープンメッセージキュー 記述を参照している。親プロセスと子プロセスの対応する記述子は、フラグ
+(\fImq_flags\fP)  を共有する。なぜなら、フラグはオープンメッセージキュー記述に 関連付けられているからである。
 
-.\"O Each message has an associated
-.\"O .IR priority ,
-.\"O and messages are always delivered to the receiving process
-.\"O highest priority first.
-.\"O Message priorities range from 0 (low) to
-.\"O .I sysconf(_SC_MQ_PRIO_MAX)\ -\ 1
-.\"O (high).
-.\"O On Linux,
-.\"O .I sysconf(_SC_MQ_PRIO_MAX)
-.\"O returns 32768, but POSIX.1-2001 only requires
-.\"O an implementation to support priorities in the range 0 to 31;
-.\"O some implementations only provide this range.
-各メッセージにはそれぞれ
-.I 優先度 (priority)
-があり、メッセージの受信プロセスへの配送は常に
-優先度の高いメッセージから順に行われる。
-メッセージの優先度は 0 (低優先) から
-.I sysconf(_SC_MQ_PRIO_MAX)\ -\ 1
-(高優先) の値を持つ。
-Linux では、
-.I sysconf(_SC_MQ_PRIO_MAX)
-は 32768 を返すが、
-POSIX.1-2001 で要求されているのは 0 から 31 までの優先度を
-実装することだけであり、実装によってはこの範囲の優先度しか
-対応していない。
+各メッセージにはそれぞれ \fI優先度 (priority)\fP があり、メッセージの受信プロセスへの配送は常に 優先度の高いメッセージから順に行われる。
+メッセージの優先度は 0 (低優先) から \fIsysconf(_SC_MQ_PRIO_MAX)\ \-\ 1\fP (高優先) の値を持つ。 Linux
+では、 \fIsysconf(_SC_MQ_PRIO_MAX)\fP は 32768 を返すが、 POSIX.1\-2001 で要求されているのは 0 から
+31 までの優先度を 実装することだけであり、実装によってはこの範囲の優先度しか 対応していない。
 .PP
-.\"O The remainder of this section describes some specific details
-.\"O of the Linux implementation of POSIX message queues.
-この節の残りでは、POSIX メッセージキューの Linux の実装の詳細
-について説明する。
-.\"O .SS Library interfaces and system calls
+この節の残りでは、POSIX メッセージキューの Linux の実装の詳細 について説明する。
 .SS ライブラリインタフェースとシステムコール
-.\"O In most cases the
-.\"O .B mq_*()
-.\"O library interfaces listed above are implemented
-.\"O on top of underlying system calls of the same name.
-.\"O Deviations from this scheme are indicated in the following table:
-ほとんどの場合、上記の
-.B mq_*()
-ライブラリインタフェースは、同じ名前の下位層のシステムコールを
-使って実装されている。この枠組みにあてはまらないものを
-以下の表に示す。
+ほとんどの場合、上記の \fBmq_*()\fP ライブラリインタフェースは、同じ名前の下位層のシステムコールを
+使って実装されている。この枠組みにあてはまらないものを 以下の表に示す。
 .in +4n
 .TS
 lB lB
@@ -203,310 +79,96 @@ mq_timedsend(3)   mq_timedsend(2)
 mq_unlink(3)   mq_unlink(2)
 .TE
 .in
-.\"O .SS Versions
 .SS バージョン
-.\"O POSIX message queues have been supported on Linux since kernel 2.6.6.
-.\"O Glibc support has been provided since version 2.3.4.
-Linux では POSIX メッセージキューはカーネル 2.6.6 以降でサポートされている。
-glibc ではバージョン 2.3.4 以降でサポートされている。
-.\"O .SS Kernel configuration
+Linux では POSIX メッセージキューはカーネル 2.6.6 以降でサポートされている。 glibc ではバージョン 2.3.4
+以降でサポートされている。
 .SS カーネルの設定
-.\"O Support for POSIX message queues is configurable via the
-.\"O .B CONFIG_POSIX_MQUEUE
-.\"O kernel configuration option.
-.\"O This option is enabled by default.
-POSIX メッセージキューのサポートは、カーネルの設定 (configuration)
-オプション
-.B CONFIG_POSIX_MQUEUE
+POSIX メッセージキューのサポートは、カーネルの設定 (configuration)  オプション \fBCONFIG_POSIX_MQUEUE\fP
 で設定可能である。このオプションはデフォルトでは有効である。
-.\"O .SS Persistence
 .SS 持続性
-.\"O POSIX message queues have kernel persistence:
-.\"O if not removed by
-.\"O .BR mq_unlink (3),
-.\"O a message queue will exist until the system is shut down.
-POSIX メッセージキューはカーネル内で保持される。
-.BR mq_unlink (3)
-で削除されなければ、メッセージキューは
+POSIX メッセージキューはカーネル内で保持される。 \fBmq_unlink\fP(3)  で削除されなければ、メッセージキューは
 システムがシャットダウンされるまで存在し続ける。
-.\"O .SS Linking
 .SS リンク
-.\"O Programs using the POSIX message queue API must be compiled with
-.\"O .I cc \-lrt
-.\"O to link against the real-time library,
-.\"O .IR librt .
-POSIX メッセージキュー API を使用したプログラムは
-.I cc \-lrt
-でコンパイルし、リアルタイムライブラリ
-.I librt
+POSIX メッセージキュー API を使用したプログラムは \fIcc \-lrt\fP でコンパイルし、リアルタイムライブラリ \fIlibrt\fP
 とリンクしなければならない。
-.\"O .SS /proc interfaces
-.SS /proc インタフェース
-.\"O The following interfaces can be used to limit the amount of
-.\"O kernel memory consumed by POSIX message queues:
-以下のインタフェースを使って、POSIX メッセージキューが消費するカーネル
-メモリの量を制限することができる。
-.TP
-.I /proc/sys/fs/mqueue/msg_max
-.\"O This file can be used to view and change the ceiling value for the
-.\"O maximum number of messages in a queue.
-.\"O This value acts as a ceiling on the
-.\"O .I attr\->mq_maxmsg
-.\"O argument given to
-.\"O .BR mq_open (3).
-.\"O The default value for
-.\"O .I msg_max
-.\"O is 10.
-.\"O The minimum value is 1 (10 in kernels before 2.6.28).
-.\"O The upper limit is
-.\"O .BR HARD_MAX :
-.\"O .IR "(131072\ /\ sizeof(void\ *))"
-.\"O (32768 on Linux/86).
-.\"O This limit is ignored for privileged processes
-.\"O .RB ( CAP_SYS_RESOURCE ),
-.\"O but the
-.\"O .B HARD_MAX
-.\"O ceiling is nevertheless imposed.
-このファイルを使って、一つのキューに入れられるメッセージの最大数の
-上限値を参照したり変更したりできる。この値は、
-.BR mq_open (3)
-に渡す
-.I attr\->mq_maxmsg
-引き数に対する上限値として機能する。
-.I msg_max
-のデフォルト値は 10 で、
-最小値は 1 (2.6.28 より前のカーネルでは 10) である。
-上限は「埋め込みの固定値」
-.RB ( HARD_MAX )
-で
-.IR "(131072\ /\ sizeof(void\ *))"
-(Linux/86 では 32768) である。
-この上限は特権プロセス
-.RB ( CAP_SYS_RESOURCE )
-では無視されるが、埋め込みの固定値による上限は
-どんな場合にでも適用される。
-.TP
-.I /proc/sys/fs/mqueue/msgsize_max
-.\"O This file can be used to view and change the ceiling on the
-.\"O maximum message size.
-.\"O This value acts as a ceiling on the
-.\"O .I attr\->mq_msgsize
-.\"O argument given to
-.\"O .BR mq_open (3).
-.\"O The default value for
-.\"O .I msgsize_max
-.\"O is 8192 bytes.
-.\"O The minimum value is 128 (8192 in kernels before 2.6.28).
-.\"O The upper limit for
-.\"O .I msgsize_max
-.\"O is 1,048,576 (in kernels before 2.6.28, the upper limit was
-.\"O .BR INT_MAX ;
-.\"O that is, 2,147,483,647 on Linux/86).
-.\"O This limit is ignored for privileged processes
-.\"O .RB ( CAP_SYS_RESOURCE ).
-このファイルを使って、メッセージの最大サイズの上限値を      
-参照したり変更したりできる。     
-この値は、        
-.BR mq_open (3)        
-に渡す      
-.I attr\->mq_msgsize
-引き数に対する上限値として機能する。 
-.I msgsize_max 
-のデフォルト値は 8192 バイトで、
-最小値は 128 (2.6.28 より前のカーネルでは 8192) である。
-.I msgsize_max
-の上限は 1,048,576 である
-(2.6.28 より前のカーネルでは、上限は
-.B INT_MAX
-(Linux/86 では 2,147,483,647) であった)。
-この上限は特権プロセス      
-.RB ( CAP_SYS_RESOURCE )       
-では無視される。
-.TP
-.I /proc/sys/fs/mqueue/queues_max
-.\"O This file can be used to view and change the system-wide limit on the
-.\"O number of message queues that can be created.
-.\"O Only privileged processes
-.\"O .RB ( CAP_SYS_RESOURCE )
-.\"O can create new message queues once this limit has been reached.
-.\"O The default value for
-.\"O .I queues_max
-.\"O is 256; it can be changed to any value in the range 0 to INT_MAX.
-このファイルを使って、作成することができるメッセージキューの数に       
-対するシステム全体での制限を参照したり変更したりできる。   
-一度この上限に達すると、新しいメッセージキューを作成できるのは  
-特権プロセス     
-.RB ( CAP_SYS_RESOURCE )       
-だけとなる。     
-.I queues_max  
-のデフォルト値は 256 であり、      
-0 から INT_MAX の範囲の任意の値に変更することができる。
-.\"O .SS Resource limit
+.SS "/proc インタフェース"
+以下のインタフェースを使って、POSIX メッセージキューが消費するカーネル メモリの量を制限することができる。
+.TP 
+\fI/proc/sys/fs/mqueue/msg_max\fP
+このファイルを使って、一つのキューに入れられるメッセージの最大数の 上限値を参照したり変更したりできる。この値は、 \fBmq_open\fP(3)  に渡す
+\fIattr\->mq_maxmsg\fP 引き数に対する上限値として機能する。 \fImsg_max\fP のデフォルト値は 10 で、 最小値は 1
+(2.6.28 より前のカーネルでは 10) である。 上限は「埋め込みの固定値」 (\fBHARD_MAX\fP)  で \fI(131072\ /\ sizeof(void\ *))\fP (Linux/86 では 32768) である。 この上限は特権プロセス (\fBCAP_SYS_RESOURCE\fP)
+では無視されるが、埋め込みの固定値による上限は どんな場合にでも適用される。
+.TP 
+\fI/proc/sys/fs/mqueue/msgsize_max\fP
+このファイルを使って、メッセージの最大サイズの上限値を       参照したり変更したりできる。      この値は、         \fBmq_open\fP(3)        に渡す      
+\fIattr\->mq_msgsize\fP 引き数に対する上限値として機能する。  \fImsgsize_max \fP のデフォルト値は 8192
+バイトで、 最小値は 128 (2.6.28 より前のカーネルでは 8192) である。 \fImsgsize_max\fP の上限は 1,048,576
+である (2.6.28 より前のカーネルでは、上限は \fBINT_MAX\fP (Linux/86 では 2,147,483,647) であった)。
+この上限は特権プロセス       (\fBCAP_SYS_RESOURCE\fP)        では無視される。
+.TP 
+\fI/proc/sys/fs/mqueue/queues_max\fP
+このファイルを使って、作成することができるメッセージキューの数に        対するシステム全体での制限を参照したり変更したりできる。   
+一度この上限に達すると、新しいメッセージキューを作成できるのは   特権プロセス      (\fBCAP_SYS_RESOURCE\fP)        だけとなる。     
+\fIqueues_max  \fP のデフォルト値は 256 であり、    0 から INT_MAX の範囲の任意の値に変更することができる。
 .SS リソース制限
-.\"O The
-.\"O .B RLIMIT_MSGQUEUE
-.\"O resource limit, which places a limit on the amount of space
-.\"O that can be consumed by all of the message queues
-.\"O belonging to a process's real user ID, is described in
-.\"O .BR getrlimit (2).
-リソース上限
-.B RLIMIT_MSGQUEUE
-は、プロセスの実 UID に対応する全メッセージキューが消費する
-メモリ空間の量に対して上限を設定する。
-.BR getrlimit (2)
-を参照。
-.\"O .SS Mounting the message queue file system
+リソース上限 \fBRLIMIT_MSGQUEUE\fP は、プロセスの実 UID に対応する全メッセージキューが消費する
+メモリ空間の量に対して上限を設定する。 \fBgetrlimit\fP(2)  を参照。
 .SS メッセージキュー・ファイルシステムのマウント
-.\"O On Linux, message queues are created in a virtual file system.
-.\"O (Other implementations may also provide such a feature,
-.\"O but the details are likely to differ.)
-.\"O This file system can be mounted (by the superuser) using the following
-.\"O commands:
-Linux では、メッセージキューは仮想ファイルシステム内に作成される
-(他の実装でも同様の機能が提供されているものもあるが、
-詳細は違っているだろう)。
-以下のコマンドを使うことで (スーパーユーザは)
-このファイルシステムをマウントできる:
+Linux では、メッセージキューは仮想ファイルシステム内に作成される (他の実装でも同様の機能が提供されているものもあるが、
+詳細は違っているだろう)。 以下のコマンドを使うことで (スーパーユーザは)  このファイルシステムをマウントできる:
 .in +4n
 .nf
 
-.RB "#" " mkdir /dev/mqueue"
-.RB "#" " mount \-t mqueue none /dev/mqueue"
+#\fB mkdir /dev/mqueue\fP
+#\fB mount \-t mqueue none /dev/mqueue\fP
 
 .fi
 .in
-.\"O The sticky bit is automatically enabled on the mount directory.
-マウントしたディレクトリのスティッキービット (sticky bit) は
-自動的にオンとなる。
+マウントしたディレクトリのスティッキービット (sticky bit) は 自動的にオンとなる。
 
-.\"O After the file system has been mounted, the message queues on the system
-.\"O can be viewed and manipulated using the commands usually used for files
-.\"O (e.g.,
-.\"O .BR ls (1)
-.\"O and
-.\"O .BR rm (1)).
-メッセージキュー・ファイルシステムのマウント後は、ファイルに対して
-通常使うコマンド (例えば
-.BR ls (1)
-や
-.BR rm (1))
-を使って、システム上のメッセージキューを表示したり
-操作したりできる。
+メッセージキュー・ファイルシステムのマウント後は、ファイルに対して 通常使うコマンド (例えば \fBls\fP(1)  や \fBrm\fP(1))
+を使って、システム上のメッセージキューを表示したり 操作したりできる。
 
-.\"O The contents of each file in the directory consist of a single line
-.\"O containing information about the queue:
-ディレクトリ内の各ファイルの内容は 1行であり、
-キューに関する情報が表示される。
+ディレクトリ内の各ファイルの内容は 1行であり、 キューに関する情報が表示される。
 .in +4n
 .nf
 
-.RB "$" " cat /dev/mqueue/mymq"
+$\fB cat /dev/mqueue/mymq\fP
 QSIZE:129     NOTIFY:2    SIGNO:0    NOTIFY_PID:8260
 
 .fi
 .in
-.\"O These fields are as follows:
 各フィールドの詳細は以下の通りである:
-.TP
-.B QSIZE
-.\"O Number of bytes of data in all messages in the queue.
+.TP 
+\fBQSIZE\fP
 キューに入っている全メッセージの合計バイト数。
-.TP
-.B NOTIFY_PID
-.\"O If this is nonzero, then the process with this PID has used
-.\"O .BR mq_notify (3)
-.\"O to register for asynchronous message notification,
-.\"O and the remaining fields describe how notification occurs.
-この値が 0 以外の場合、この値の PID を持つプロセスが
-.BR mq_notify (3)
-を使って、非同期のメッセージ通知を行うように設定したことを示す。
-どのように通知が行われるかは、以下のフィールドにより決定される。
-.TP
-.B NOTIFY
-.\"O Notification method:
-.\"O 0 is
-.\"O .BR SIGEV_SIGNAL ;
-.\"O 1 is
-.\"O .BR SIGEV_NONE ;
-.\"O and
-.\"O 2 is
-.\"O .BR SIGEV_THREAD .
-通知方法:
-0 は
-.BR SIGEV_SIGNAL ;
-1 は
-.BR SIGEV_NONE ;
-2 は
-.B SIGEV_THREAD
-.TP
-.B SIGNO
-.\"O Signal number to be used for
-.\"O .BR SIGEV_SIGNAL .
-.B SIGEV_SIGNAL
-に使用されるシグナル番号。
-.\"O .SS Polling message queue descriptors
+.TP 
+\fBNOTIFY_PID\fP
+この値が 0 以外の場合、この値の PID を持つプロセスが \fBmq_notify\fP(3)
+を使って、非同期のメッセージ通知を行うように設定したことを示す。 どのように通知が行われるかは、以下のフィールドにより決定される。
+.TP 
+\fBNOTIFY\fP
+通知方法: 0 は \fBSIGEV_SIGNAL\fP; 1 は \fBSIGEV_NONE\fP; 2 は \fBSIGEV_THREAD\fP
+.TP 
+\fBSIGNO\fP
+\fBSIGEV_SIGNAL\fP に使用されるシグナル番号。
 .SS メッセージキュー記述子のポーリング
-.\"O On Linux, a message queue descriptor is actually a file descriptor,
-.\"O and can be monitored using
-.\"O .BR select (2),
-.\"O .BR poll (2),
-.\"O or
-.\"O .BR epoll (7).
-.\"O This is not portable.
-Linux では、メッセージキュー記述子は実際はファイル記述子 (file descriptor)
-であり、
-.BR select (2),
-.BR poll (2),
-.BR epoll (7)
-を使って監視することができる。
-この機能の移植性はない。
-.\"O .SH "CONFORMING TO"
+Linux では、メッセージキュー記述子は実際はファイル記述子 (file descriptor)  であり、 \fBselect\fP(2),
+\fBpoll\fP(2), \fBepoll\fP(7)  を使って監視することができる。 この機能の移植性はない。
 .SH 準拠
-POSIX.1-2001.
-.\"O .SH NOTES
+POSIX.1\-2001.
 .SH 注意
-.\"O System V message queues
-.\"O .RB ( msgget (2),
-.\"O .BR msgsnd (2),
-.\"O .BR msgrcv (2),
-.\"O etc.) are an older API for exchanging messages between processes.
-.\"O POSIX message queues provide a better designed interface than
-.\"O System V message queues;
-.\"O on the other hand POSIX message queues are less widely available
-.\"O (especially on older systems) than System V message queues.
-System V メッセージキュー
-.RB ( msgget (2),
-.BR msgsnd (2),
-.BR msgrcv (2)
-など) はプロセス間でメッセージをやり取りするための古い API である。
-POSIX メッセージキューは System V メッセージキューよりもうまく
-設計されたインタフェースを提供している。
-一方で、POSIX メッセージキューは System V メッセージキューと比べると
+System V メッセージキュー (\fBmsgget\fP(2), \fBmsgsnd\fP(2), \fBmsgrcv\fP(2)  など)
+はプロセス間でメッセージをやり取りするための古い API である。 POSIX メッセージキューは System V メッセージキューよりもうまく
+設計されたインタフェースを提供している。 一方で、POSIX メッセージキューは System V メッセージキューと比べると
 利用できるシステムが少ない (特に、古いシステムでは少ない)。
 
-.\"O Linux does not currently (2.6.26) support the use of access control
-.\"O lists (ACLs) for POSIX message queues.
-現在のことろ (バージョン 2.6.26 時点)、
-Linux は POSIX メッセージキューに対するアクセス制御リスト (ACL) に
+現在のことろ (バージョン 2.6.26 時点)、 Linux は POSIX メッセージキューに対するアクセス制御リスト (ACL) に
 対応していない。
-.\"O .SH EXAMPLE
 .SH 例
-.\"O An example of the use of various message queue functions is shown in
-.\"O .BR mq_notify (3).
-各種のメッセージキュー関数を使用した例が
-.BR mq_notify (3)
-に記載されている。
-.\"O .SH "SEE ALSO"
+各種のメッセージキュー関数を使用した例が \fBmq_notify\fP(3)  に記載されている。
 .SH 関連項目
-.BR getrlimit (2),
-.BR mq_getsetattr (2),
-.BR poll (2),
-.BR select (2),
-.BR mq_close (3),
-.BR mq_getattr (3),
-.BR mq_notify (3),
-.BR mq_open (3),
-.BR mq_receive (3),
-.BR mq_send (3),
-.BR mq_unlink (3),
-.BR epoll (7)
+\fBgetrlimit\fP(2), \fBmq_getsetattr\fP(2), \fBpoll\fP(2), \fBselect\fP(2),
+\fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_notify\fP(3), \fBmq_open\fP(3),
+\fBmq_receive\fP(3), \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBepoll\fP(7)
index 6b2f0ff..5114e1a 100644 (file)
@@ -1,52 +1,31 @@
-'\" t
+.\" t
 .\" Don't change the first line, it tells man that tbl is needed.
 .\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
 .\" Permission is granted to distribute possibly modified copies
 .\" of this page provided the header is included verbatim,
 .\" and in case of nontrivial modification author and date
 .\" of the modification is added to the header.
-.\" $Id: netdevice.7,v 1.10 2001/08/15 18:01:06 hanataka Exp $
+.\" $Id: netdevice.7,v 1.10 2000/08/17 10:09:54 ak Exp $
 .\"
 .\" Modified, 2004-11-25, mtk, formatting and a few wording fixes
 .\"
-.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
-.\" Translated Mon 6 Dec 1999 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated Wed 14 Feb 2001 by Kentaro Shirakata <argrath@ub32.org>
-.\" Updated 2009-02-12 by Kentaro Shirakata <argrath@ub32.org>
+.\"*******************************************************************
 .\"
-.\"WORD                load balancing bundle   負荷分散グループ
-.\"WORD                file descriptor         ファイルディスクリプタ
-.\"WORD                capability              権限
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH NETDEVICE  7 2009-01-14 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O netdevice \- Low level access to Linux network devices
+.\"*******************************************************************
+.TH NETDEVICE 7 2009\-01\-14 Linux "Linux Programmer's Manual"
 .SH 名前
 netdevice \- Linux ネットワークデバイスへの低レベルアクセス
-.\"O .SH SYNOPSIS
 .SH 書式
-.B "#include <sys/ioctl.h>"
+\fB#include <sys/ioctl.h>\fP
 .br
-.B "#include <net/if.h>"
-.\"O .SH DESCRIPTION
+\fB#include <net/if.h>\fP
 .SH 説明
-.\"O This man page describes the sockets interface which is used to configure
-.\"O network devices.
-この man ページでは、ネットワークデバイスを設定するために
-用いるソケットインターフェースについて解説する。
+この man ページでは、ネットワークデバイスを設定するために 用いるソケットインターフェースについて解説する。
 
-.\"O Linux supports some standard ioctls to configure network devices.
-.\"O They can be used on any socket's file descriptor regardless of the
-.\"O family or type.
-.\"O They pass an
-.\"O . ifreq
-.\"O structure:
-Linux はネットワークデバイスを設定するための標準的な ioctl を
-いくつか備えている。これらはどんなソケットのファイルディスクリプタにも
-用いることができる。ファミリーやタイプは何でもよい。
-これらの ioctl は
-.I ifreq
-構造体を渡す。
+Linux はネットワークデバイスを設定するための標準的な ioctl を いくつか備えている。これらはどんなソケットのファイルディスクリプタにも
+用いることができる。ファミリーやタイプは何でもよい。 これらの ioctl は \fIifreq\fP 構造体を渡す。
 
 .in +4n
 .nf
@@ -79,95 +58,31 @@ struct ifconf {
 .fi
 .in
 
-.\"O Normally, the user specifies which device to affect by setting
-.\"O .I ifr_name
-.\"O to the name of the interface.
-.\"O All other members of the structure may
-.\"O share memory.
-通常、ユーザーによる設定対象デバイスの指定は、
-.I ifr_name
-にインターフェースの名前をセットすることによって行う。
+通常、ユーザーによる設定対象デバイスの指定は、 \fIifr_name\fP にインターフェースの名前をセットすることによって行う。
 他の構造体の全てのメンバは、メモリを共有する。
-.\"O .SS Ioctls
 .SS ioctl
-.\"O If an ioctl is marked as privileged then using it requires an effective
-.\"O user ID of 0 or the
-.\"O .B CAP_NET_ADMIN
-.\"O capability.
-.\"O If this is not the case
-.\"O .B EPERM
-.\"O will be returned.
-「特権が必要」と記述されている ioctl を実行するには、
-実効ユーザー ID が 0 か、
-.B CAP_NET_ADMIN
-権限が必要である。これが満たされていない場合は
-.B EPERM
-が返される。
-.TP
-.B SIOCGIFNAME
-.\"O Given the
-.\"O .IR ifr_ifindex ,
-.\"O return the name of the interface in
-.\"O .IR ifr_name .
-.\"O This is the only ioctl which returns its result in
-.\"O .IR ifr_name .
-.I ifr_ifindex
-を受け取り、インターフェースの名前を
-.I ifr_name
-に入れて返す。これは結果を
-.I ifr_name
+「特権が必要」と記述されている ioctl を実行するには、 実効ユーザー ID が 0 か、 \fBCAP_NET_ADMIN\fP
+権限が必要である。これが満たされていない場合は \fBEPERM\fP が返される。
+.TP 
+\fBSIOCGIFNAME\fP
+\fIifr_ifindex\fP を受け取り、インターフェースの名前を \fIifr_name\fP に入れて返す。これは結果を \fIifr_name\fP
 として返す唯一の ioctl である。
-.TP
-.B SIOCGIFINDEX
-.\"O Retrieve the interface index of the interface into
-.\"O .IR ifr_ifindex .
-インターフェースの interface index を取得し、
-.I ifr_ifindex
-に入れて返す。
-.TP
-.BR SIOCGIFFLAGS ", " SIOCSIFFLAGS
-.\"O Get or set the active flag word of the device.
-.\"O .I ifr_flags
-.\"O contains a bit mask of the following values:
-デバイスの active フラグワードを取得または設定する。
-.I ifr_flags
-には以下の値のビットマスクが入る。
+.TP 
+\fBSIOCGIFINDEX\fP
+インターフェースの interface index を取得し、 \fIifr_ifindex\fP に入れて返す。
+.TP 
+\fBSIOCGIFFLAGS\fP, \fBSIOCSIFFLAGS\fP
+デバイスの active フラグワードを取得または設定する。 \fIifr_flags\fP には以下の値のビットマスクが入る。
 .TS
 tab(:);
 c s
 l l.
-.\"O Device flags
-.\"O IFF_UP:Interface is running.
-.\"O IFF_BROADCAST:Valid broadcast address set.
-.\"O IFF_DEBUG:Internal debugging flag.
-.\"O IFF_LOOPBACK:Interface is a loopback interface.
-.\"O IFF_POINTOPOINT:Interface is a point-to-point link.
-.\"O IFF_RUNNING:Resources allocated.
-.\"O IFF_NOARP:No arp protocol
-.\"O IFF_PROMISC:Interface is in promiscuous mode.
-.\"O IFF_NOTRAILERS:Avoid use of trailers.
-.\"O IFF_ALLMULTI:Receive all multicast packets.
-.\"O IFF_MASTER:Master of a load balancing bundle.
-.\"O IFF_SLAVE:Slave of a load balancing bundle.
-.\"O IFF_MULTICAST:Supports multicast
-.\"O IFF_PORTSEL:Is able to select media type via ifmap.
-.\"O IFF_AUTOMEDIA:Auto media selection active.
-.\"O IFF_DYNAMIC:T{
-.\"O The addresses are lost when the interface goes down.
-.\"O T}
-.\"O IFF_LOWER_UP:Driver signals L1 up (since Linux 2.6.17)
-.\"O IFF_DORMANT:Driver signals dormant (since Linux 2.6.17)
-.\"O IFF_ECHO:Echo sent packets (since Linux 2.6.25)
 デバイスフラグ
 IFF_UP:インターフェースは動作中。
-IFF_BROADCAST:T{
-有効なブロードキャストアドレスがセットされている。
-T}
+IFF_BROADCAST:有効なブロードキャストアドレスがセットされている。
 IFF_DEBUG:内部のデバッグフラグ。
 IFF_LOOPBACK:インターフェースはループバックである。
-IFF_POINTOPOINT:T{
-インターフェースは point-to-point リンクである。
-T}
+IFF_POINTOPOINT:インターフェースは point\-to\-point リンクである。
 IFF_RUNNING:リソースが割り当て済み。
 IFF_NOARP:arp プロトコルがない。
 IFF_PROMISC:インターフェースは promiscuous モードである。
@@ -187,77 +102,26 @@ IFF_ECHO:送られたパケットをエコーする (Linux 2.6.25 以降)
 
 
 .TE
-.\"O Setting the active flag word is a privileged operation, but any
-.\"O process may read it.
-active フラグワードの設定は特権が必要な操作である。
-しかし読み出しはどんなプロセスからも可能である。
-.TP
-.BR SIOCGIFMETRIC ", " SIOCSIFMETRIC
-.\"O Get or set the metric of the device using
-.\"O .IR ifr_metric .
-.\"O This is currently not implemented; it sets
-.\"O .I ifr_metric
-.\"O to 0 if you attempt to read it and returns
-.\"O .B EOPNOTSUPP
-.\"O if you attempt to set it.
-デバイスのメトリックを
-.I ifr_metric
-を用いて取得・設定する。
-これはまだ実装されていない。読み出そうとすると
-.I ifr_metric
-に 0 をセットして返り、設定しようとすると
-.B EOPNOTSUPP
-が返る。
-.TP
-.BR SIOCGIFMTU ", " SIOCSIFMTU
-.\"O Get or set the MTU (Maximum Transfer Unit) of a device using
-.\"O .IR ifr_mtu .
-.\"O Setting the MTU is a privileged operation.
-.\"O Setting the MTU to
-.\"O too small values may cause kernel crashes.
-デバイスの MTU (Maximum Transfer Unit) を
-.I ifr_mtu
-を用いて取得・設定する。 MTU の設定は特権が必要な操作である。
-MTU の値を小さくしすぎるとカーネルがクラッシュするかもしれない。
-.TP
-.BR SIOCGIFHWADDR ", " SIOCSIFHWADDR
-.\"O Get or set the hardware address of a device using
-.\"O .IR ifr_hwaddr .
-デバイスのハードウェアアドレスを
-.I ifr_hwaddr
-を用いて取得・設定する。
-.\"O The hardware address is specified in a struct
-.\"O .IR sockaddr .
-ハードウェアアドレスは
-.I sockaddr
-構造体に設定される。
-.\"O .I sa_family
-.\"O contains the ARPHRD_* device type,
-.\"O .I sa_data
-.\"O the L2 hardware address starting from byte 0.
-.I sa_family
-には ARPHRD_* デバイスタイプが入り、
-.I sa_data
-にはバイト 0 から始まる L2 ハードウェアアドレスが入る。
-.\"O Setting the hardware address is a privileged operation.
-ハードウェアアドレスの設定は特権が必要な操作である。
-.TP
-.B SIOCSIFHWBROADCAST
-.\"O Set the hardware broadcast address of a device from
-.\"O .IR ifr_hwaddr .
-.\"O This is a privileged operation.
-デバイスのハードウェアブロードキャストアドレスを
-.I ifr_hwaddr
-の値に設定する。この操作には特権が必要である。
-.TP
-.BR SIOCGIFMAP ", " SIOCSIFMAP
-.\"O Get or set the interface's hardware parameters using
-.\"O .IR ifr_map .
-.\"O Setting the parameters is a privileged operation.
-インターフェースのハードウェアのパラメータを
-.I ifr_map
-を用いて取得・設定する。
-パラメータの設定は特権が必要な操作である。
+active フラグワードの設定は特権が必要な操作である。 しかし読み出しはどんなプロセスからも可能である。
+.TP 
+\fBSIOCGIFMETRIC\fP, \fBSIOCSIFMETRIC\fP
+デバイスのメトリックを \fIifr_metric\fP を用いて取得・設定する。 これはまだ実装されていない。読み出そうとすると \fIifr_metric\fP
+に 0 をセットして返り、設定しようとすると \fBEOPNOTSUPP\fP が返る。
+.TP 
+\fBSIOCGIFMTU\fP, \fBSIOCSIFMTU\fP
+デバイスの MTU (Maximum Transfer Unit) を \fIifr_mtu\fP を用いて取得・設定する。 MTU
+の設定は特権が必要な操作である。 MTU の値を小さくしすぎるとカーネルがクラッシュするかもしれない。
+.TP 
+\fBSIOCGIFHWADDR\fP, \fBSIOCSIFHWADDR\fP
+デバイスのハードウェアアドレスを \fIifr_hwaddr\fP を用いて取得・設定する。 ハードウェアアドレスは \fIsockaddr\fP
+構造体に設定される。 \fIsa_family\fP には ARPHRD_* デバイスタイプが入り、 \fIsa_data\fP にはバイト 0 から始まる L2
+ハードウェアアドレスが入る。 ハードウェアアドレスの設定は特権が必要な操作である。
+.TP 
+\fBSIOCSIFHWBROADCAST\fP
+デバイスのハードウェアブロードキャストアドレスを \fIifr_hwaddr\fP の値に設定する。この操作には特権が必要である。
+.TP 
+\fBSIOCGIFMAP\fP, \fBSIOCSIFMAP\fP
+インターフェースのハードウェアのパラメータを \fIifr_map\fP を用いて取得・設定する。 パラメータの設定は特権が必要な操作である。
 
 .in +4n
 .nf
@@ -272,107 +136,20 @@ struct ifmap {
 .fi
 .in
 
-.\"O The interpretation of the ifmap structure depends on the device driver
-.\"O and the architecture.
 ifmap 構造体の解釈はデバイスドライバとアーキテクチャに依存する。
-.TP
-.BR SIOCADDMULTI ", " SIOCDELMULTI
-.\"O Add an address to or delete an address from the device's link layer
-.\"O multicast filters using
-.\"O .IR ifr_hwaddr .
-.\"O These are privileged operations.
-.\"O See also
-.\"O .BR packet (7)
-.\"O for an alternative.
-デバイスのリンク層のマルチキャストフィルターから、
-.I ifr_hwaddr
-のアドレスを追加・削除する。これらの操作には特権が必要である。
-別の方法が
-.BR packet (7)
-で解説されている。
-.TP
-.BR SIOCGIFTXQLEN ", " SIOCSIFTXQLEN
-.\"O Get or set the transmit queue length of a device using
-.\"O .IR ifr_qlen .
-.\"O Setting the transmit queue length is a privileged operation.
-デバイスの送信キューの長さを
-.I ifr_qlen
-に取得・設定する。送信キューの長さの設定には特権が必要である。
-.TP
-.B SIOCSIFNAME
-.\"O Changes the name of the interface specified in
-.\"O .I ifr_name
-.\"O to
-.\"O .IR ifr_newname .
-.\"O This is a privileged operation.
-.\"O It is only allowed when the interface
-.\"O is not up.
-.I ifr_name
-で指定したインターフェースの名前を
-.I ifr_newname
-に変更する。この操作には特権が必要である。インターフェースが up していない
-時にのみ使用できる。
-.TP
-.B SIOCGIFCONF
-.\"O Return a list of interface (transport layer) addresses.
-.\"O This currently
-.\"O means only addresses of the
-.\"O .B AF_INET
-.\"O (IPv4) family for compatibility.
-インターフェース(トランスポート層)アドレスのリストを返す。
-現在のところ、互換性のために
-.B AF_INET
-(IPv4) ファミリーのアドレスのみである。
-.\"O The user passes a
-.\"O .I ifconf
-.\"O structure as argument to the ioctl.
-.\"O It contains a pointer to an array of
-.\"O .I ifreq
-.\"O structures in
-.\"O .I ifc_req
-.\"O and its length in bytes in
-.\"O .IR ifc_len .
-ユーザーは
-.I ifconf
-構造体を ioctl の引数として渡す。
-.I ifconf
-構造体には、
-.I ifreq
-構造体の配列へのポインタである
-.I ifc_req
-と、バイト単位の配列の長さを指定する
-.I ifc_len
-が含まれる。
-.\"O The kernel fills the ifreqs with all current L3 interface addresses that
-.\"O are running:
-.\"O .I ifr_name
-.\"O contains the interface name (eth0:1 etc.),
-.\"O .I ifr_addr
-.\"O the address.
-カーネルは ifreqs を現在動作している全ての L3 インターフェースアドレスで埋める。
-.I ifr_name
-にはインターフェース名 (eth0:1 など) が入り、
-.I ifr_addr
-にはアドレスが入る。
-.\"O The kernel returns with the actual length in
-.\"O .IR ifc_len .
-カーネルは実際の長さを
-.I ifc_len
-に返す。
-.\"O If
-.\"O .I ifc_len
-.\"O is equal to the original length the buffer probably has overflowed
-.\"O and you should retry with a bigger buffer to get all addresses.
-.I ifc_len
-が元のバッファの長さと同じだった場合、
-オーバーフローを起こしている可能性があるので、
-全てのアドレスを取得するためにより大きなバッファで再試行するべきである。
-.\"O When no error occurs the ioctl returns 0;
-.\"O otherwise \-1.
-.\"O Overflow is no an error.
-エラーがなかった場合は ioctl は 0 を返す。
-エラーがあった場合は \-1 を返す。
-オーバーフローはエラーとは見なされない。
+.TP 
+\fBSIOCADDMULTI\fP, \fBSIOCDELMULTI\fP
+デバイスのリンク層のマルチキャストフィルターから、 \fIifr_hwaddr\fP のアドレスを追加・削除する。これらの操作には特権が必要である。
+別の方法が \fBpacket\fP(7)  で解説されている。
+.TP 
+\fBSIOCGIFTXQLEN\fP, \fBSIOCSIFTXQLEN\fP
+デバイスの送信キューの長さを \fIifr_qlen\fP に取得・設定する。送信キューの長さの設定には特権が必要である。
+.TP 
+\fBSIOCSIFNAME\fP
+\fIifr_name\fP で指定したインターフェースの名前を \fIifr_newname\fP に変更する。この操作には特権が必要である。インターフェースが
+up していない 時にのみ使用できる。
+.TP 
+\fBSIOCGIFCONF\fP
 .\" Slaving isn't supported in 2.2
 .\" .
 .\" .TP
@@ -382,61 +159,28 @@ ifmap 構造体の解釈はデバイスドライバとアーキテクチャに
 .\" Setting the slave device is a privileged operation.
 .\" .PP
 .\" FIXME add amateur radio stuff.
+インターフェース(トランスポート層)アドレスのリストを返す。 現在のところ、互換性のために \fBAF_INET\fP (IPv4)
+ファミリーのアドレスのみである。 ユーザーは \fIifconf\fP 構造体を ioctl の引数として渡す。 \fIifconf\fP 構造体には、
+\fIifreq\fP 構造体の配列へのポインタである \fIifc_req\fP と、バイト単位の配列の長さを指定する \fIifc_len\fP が含まれる。
+カーネルは ifreqs を現在動作している全ての L3 インターフェースアドレスで埋める。 \fIifr_name\fP にはインターフェース名
+(eth0:1 など) が入り、 \fIifr_addr\fP にはアドレスが入る。 カーネルは実際の長さを \fIifc_len\fP に返す。
+\fIifc_len\fP が元のバッファの長さと同じだった場合、 オーバーフローを起こしている可能性があるので、
+全てのアドレスを取得するためにより大きなバッファで再試行するべきである。 エラーがなかった場合は ioctl は 0 を返す。 エラーがあった場合は
+\-1 を返す。 オーバーフローはエラーとは見なされない。
 .PP
-.\"O Most protocols support their own ioctls to configure protocol-specific
-.\"O interface options.
-.\"O See the protocol man pages for a description.
-ほとんどのプロトコルには、専用のインターフェースオプションを
-設定するための独自の ioctl が存在する。
-説明は各プロトコルの man ページを見よ。
+ほとんどのプロトコルには、専用のインターフェースオプションを 設定するための独自の ioctl が存在する。 説明は各プロトコルの man
+ページを見よ。
 .PP
-.\"O In addition some devices support private ioctls.
-.\"O These are not described here.
-さらに、デバイスによってはプライベートな ioctl がある。
-これらはここでは説明しない。
-.\"O .SH NOTES
+さらに、デバイスによってはプライベートな ioctl がある。 これらはここでは説明しない。
 .SH 注意
-.\"O Strictly speaking,
-.\"O .B SIOCGIFCONF
-.\"O is IP specific and belongs in
-.\"O .BR ip (7).
-厳密にいうと、
-.B SIOCGIFCONF
-は IP 固有であり、
-.BR ip (7)
-に属する。
+厳密にいうと、 \fBSIOCGIFCONF\fP は IP 固有であり、 \fBip\fP(7)  に属する。
 .LP
-.\"O The names of interfaces with no addresses or that don't have the
-.\"O .B IFF_RUNNING
-.\"O flag set can be found via
-.\"O .IR /proc/net/dev .
-アドレスがなかったり、
-.B IFF_RUNNING
-フラグがセットされていないインターフェースの名前は
-.I /proc/net/dev
+アドレスがなかったり、 \fBIFF_RUNNING\fP フラグがセットされていないインターフェースの名前は \fI/proc/net/dev\fP
 で知ることができる。
 .LP
-.\"O Local IPv6 IP addresses can be found via
-.\"O .I /proc/net
-.\"O or via
-.\"O .BR rtnetlink (7).
-ローカル IPV6 IP アドレスは
-.I /proc/net
-か
-.BR rtnetlink (7)
-で知ることができる。
-.\"O .SH BUGS
+ローカル IPV6 IP アドレスは \fI/proc/net\fP か \fBrtnetlink\fP(7)  で知ることができる。
 .SH バグ
-.\"O glibc 2.1 is missing the
-.\"O .I ifr_newname
-.\"O macro in
-.\"O .IR <net/if.h> .
-.\"O Add the following to your program as a workaround:
-glibc 2.1 では
-.I <net/if.h>
-に
-.I ifr_newname
-マクロがない。
+glibc 2.1 では \fI<net/if.h>\fP に \fIifr_newname\fP マクロがない。
 とりあえずの対応策として、以下のコードを追加しておくこと。
 .sp
 .in +4n
@@ -446,10 +190,5 @@ glibc 2.1 では
 #endif
 .fi
 .in
-.RE
-.\"O .SH SEE ALSO
 .SH 関連項目
-.BR proc (5),
-.BR capabilities (7),
-.BR ip (7),
-.BR rtnetlink (7)
+\fBproc\fP(5), \fBcapabilities\fP(7), \fBip\fP(7), \fBrtnetlink\fP(7)
index 185533c..4825b28 100644 (file)
-'\" t
+.\" t
 .\" Don't change the first line, it tells man that tbl is needed.
 .\" This man page is Copyright (c) 1998 by Andi Kleen. Subject to the GPL.
 .\" Based on the original comments from Alexey Kuznetsov
+.\" Modified 2005-12-27 by Hasso Tepper <hasso@estpak.ee>
 .\" $Id: netlink.7,v 1.8 2000/06/22 13:23:00 ak Exp $
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
-.\" Translated 1999-12-06 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated 2001-04-04 by Yuichi SATO <ysato@h4.dion.ne.jp>, catch up to LDP v1.35
-.\" Updated 2006-06-23 by Yuichi SATO <ysato444@yahoo.co.jp>, catch up to LDP v2.29
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\"WORD                payload         ペイロード
-.\"WORD                capability      権限
-.\"
-.TH NETLINK  7 2008-11-11 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.TH NETLINK 7 2012\-04\-14 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O netlink \- Communication between kernel and userspace (AF_NETLINK)
 netlink \- カーネルとユーザー空間の通信 (AF_NETLINK)
-.\"O .SH SYNOPSIS
 .SH 書式
 .nf
-.B #include <asm/types.h>
-.B #include <sys/socket.h>
-.B #include <linux/netlink.h>
+\fB#include <asm/types.h>\fP
+\fB#include <sys/socket.h>\fP
+\fB#include <linux/netlink.h>\fP
 
-.BI "netlink_socket = socket(AF_NETLINK, " socket_type ", " netlink_family );
+\fBnetlink_socket = socket(AF_NETLINK, \fP\fIsocket_type\fP\fB, \fP\fInetlink_family\fP\fB);\fP
 .fi
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O Netlink is used to transfer information between kernel and
-.\"O userspace processes.
-.\"O It consists of a standard sockets-based interface for userspace
-.\"O processes and an internal kernel API for kernel modules.
-.\"O The internal kernel interface is not documented in this manual page.
-.\"O There is also an obsolete netlink interface
-.\"O via netlink character devices; this interface is not documented here
-.\"O and is only provided for backward compatibility.
-netlink はカーネルモジュールとユーザー空間のプロセス間で
-情報をやりとりするために用いられる。
-netlink は、ユーザープロセスに対しては
-標準的なソケットベースのインターフェースを、
-カーネルモジュールにはカーネルの内部 API を提供する。
-カーネル内部のインターフェースについてはこの man ページでは記述しない。
-また、netlink キャラクタデバイスを用いた
-obsolete な netlink インターフェースもあるが、これもこの文書では解説しない。
-これは単に過去互換性のために用意されているものにすぎない。
-
-.\"O Netlink is a datagram-oriented service.
-.\"O Both
-.\"O .B SOCK_RAW
-.\"O and
-.\"O .B SOCK_DGRAM
-.\"O are valid values for
-.\"O .IR socket_type .
-.\"O However, the netlink protocol does not distinguish between datagram
-.\"O and raw sockets.
-netlink はデータグラム指向のサービスである。
-.I socket_type
-には
-.B SOCK_RAW
-と
-.B SOCK_DGRAM
-の両方とも指定可能である。
-しかし netlink プロトコルはデータグラムと raw ソケットの区別をしない。
-
-.\"O .I netlink_family
-.\"O selects the kernel module or netlink group to communicate with.
-.\"O The currently assigned netlink families are:
-.I netlink_family
-は、通信するカーネルモジュールや netlink グループの選択に用いる。
-現在割り当てられている netlink ファミリーは以下の通り。
-.TP
-.B NETLINK_ROUTE
-.\"O Receives routing and link updates and may be used to modify the routing
-.\"O tables (both IPv4 and IPv6), IP addresses, link parameters,
-.\"O neighbor setups, queueing disciplines, traffic classes and
-.\"O packet classifiers (see
-.\"O .BR rtnetlink (7)).
-ルーティングとリンクの更新を受信する。
-(IPv4 と IPv6 両方の) ルーティングテーブル・
-IP アドレス・リンクパラメータ・近傍設定 (neighbor setup)・
-キューイングルール (queueing dicipline)・トラフィッククラス・
-パケットのクラス分類の修正に用いることができるだろう
-.RB ( rtnetlink (7)
-を見よ)。
-.TP
-.B NETLINK_W1
-.\"O Messages from 1-wire subsystem.
-単線 (1-wire) のサブシステムからのメッセージ。
-.TP
-.B NETLINK_USERSOCK
-.\"O Reserved for user-mode socket protocols.
+netlink はカーネルモジュールとユーザー空間のプロセス間で 情報をやりとりするために用いられる。 netlink は、ユーザープロセスに対しては
+標準的なソケットベースのインターフェースを、 カーネルモジュールにはカーネルの内部 API を提供する。 カーネル内部のインターフェースについてはこの
+man ページでは記述しない。 また、netlink キャラクタデバイスを用いた obsolete な netlink
+インターフェースもあるが、これもこの文書では解説しない。 これは単に過去互換性のために用意されているものにすぎない。
+
+netlink はデータグラム指向のサービスである。 \fIsocket_type\fP には \fBSOCK_RAW\fP と \fBSOCK_DGRAM\fP
+の両方とも指定可能である。 しかし netlink プロトコルはデータグラムと raw ソケットの区別をしない。
+
+\fInetlink_family\fP は、通信するカーネルモジュールや netlink グループの選択に用いる。 現在割り当てられている netlink
+ファミリーは以下の通り。
+.TP 
+\fBNETLINK_ROUTE\fP
+ルーティングとリンクの更新を受信する。 (IPv4 と IPv6 両方の) ルーティングテーブル・ IP アドレス・リンクパラメータ・近傍設定
+(neighbor setup)・ キューイングルール (queueing dicipline)・トラフィッククラス・
+パケットのクラス分類の修正に用いることができるだろう (\fBrtnetlink\fP(7)  を見よ)。
+.TP 
+\fBNETLINK_W1\fP
+単線 (1\-wire) のサブシステムからのメッセージ。
+.TP 
+\fBNETLINK_USERSOCK\fP
 ユーザーモードソケットプロトコルのために予約されている。
-.TP
-.B NETLINK_FIREWALL
-.\"O Transport IPv4 packets from netfilter to userspace.
-.\"O Used by
-.\"O .I ip_queue
-.\"O kernel module.
-IPv4 パケットを netfilter からユーザー空間へ転送する。
-.I ip_queue
-カーネルモジュールで使用される。
-.TP
-.B NETLINK_INET_DIAG
+.TP 
+\fBNETLINK_FIREWALL\fP
+IPv4 パケットを netfilter からユーザー空間へ転送する。 \fIip_queue\fP カーネルモジュールで使用される。
+.TP 
+\fBNETLINK_INET_DIAG\fP
 .\" FIXME More details on NETLINK_INET_DIAG needed.
-.\"O INET socket monitoring.
 INET ソケットをモニタリングする。
-.TP
-.B NETLINK_NFLOG
+.TP 
+\fBNETLINK_NFLOG\fP
 Netfilter/iptables ULOG.
-.TP
-.B NETLINK_XFRM
+.TP 
+\fBNETLINK_XFRM\fP
 .\" FIXME More details on NETLINK_XFRM needed.
 IPsec.
-.TP
-.B NETLINK_SELINUX
-.\"O SELinux event notifications.
+.TP 
+\fBNETLINK_SELINUX\fP
 SELinux のイベント通知。
-.TP
-.B NETLINK_ISCSI
+.TP 
+\fBNETLINK_ISCSI\fP
 .\" FIXME More details on NETLINK_ISCSI needed.
-Open-iSCSI.
-.TP
-.B NETLINK_AUDIT
+Open\-iSCSI.
+.TP 
+\fBNETLINK_AUDIT\fP
 .\" FIXME More details on NETLINK_AUDIT needed.
-.\"O Auditing.
 監査 (audit) を行う。
-.TP
-.B NETLINK_FIB_LOOKUP
+.TP 
+\fBNETLINK_FIB_LOOKUP\fP
 .\" FIXME More details on NETLINK_FIB_LOOKUP needed.
-.\"O Access to FIB lookup from userspace.
 ユーザー空間から FIB ルックアップにアクセスする。
-.TP
-.B NETLINK_CONNECTOR
-.\"O Kernel connector.
-.\"O See
-.\"O .I Documentation/connector/*
-.\"O in the kernel source for further information.
-カーネルコネクタ。
-より詳しい情報はカーネルソースの
-.I Documentation/connector/*
-を参照すること。
-.TP
-.B NETLINK_NETFILTER
+.TP 
+\fBNETLINK_CONNECTOR\fP
+カーネルコネクタ。 より詳しい情報はカーネルソースの \fIDocumentation/connector/*\fP を参照すること。
+.TP 
+\fBNETLINK_NETFILTER\fP
 .\" FIXME More details on NETLINK_NETFILTER needed.
-.\"O Netfilter subsystem.
 netfilter サブシステム。
-.TP
-.B NETLINK_IP6_FW
-.\"O Transport IPv6 packets from netfilter to userspace.
-.\"O Used by
-.\"O .I ip6_queue
-.\"O kernel module.
-IPv6 パケットを netfilter からユーザー空間へ転送する。
-.I ip6_queue
-カーネルモジュールで使用される。
-.TP
-.B NETLINK_DNRTMSG
-.\"O DECnet routing messages.
+.TP 
+\fBNETLINK_IP6_FW\fP
+IPv6 パケットを netfilter からユーザー空間へ転送する。 \fIip6_queue\fP カーネルモジュールで使用される。
+.TP 
+\fBNETLINK_DNRTMSG\fP
 DECnet ルーティングメッセージ。
-.TP
-.B NETLINK_KOBJECT_UEVENT
+.TP 
+\fBNETLINK_KOBJECT_UEVENT\fP
 .\" FIXME More details on NETLINK_KOBJECT_UEVENT needed.
-.\"O Kernel messages to userspace.
 ユーザー空間へのカーネルメッセージ
-.TP
-.B NETLINK_GENERIC
-.\"O Generic netlink family for simplified netlink usage.
+.TP 
+\fBNETLINK_GENERIC\fP
 netlink を簡単に使用するための一般的な netlink ファミリー。
 .PP
-.\"O Netlink messages consist of a byte stream with one or multiple
-.\"O .I nlmsghdr
-.\"O headers and associated payload.
-netlink メッセージはバイトストリームからなり、
-一つ以上の
-.I nlmsghdr
-ヘッダと、それに対応するペイロード (payload) が含まれる。
-.\"O The byte stream should only be accessed with the standard
-.\"O .B NLMSG_*
-.\"O macros.
-.\"O See
-.\"O .BR netlink (3)
-.\"O for further information.
-バイトストリームには、標準の
-.B NLMSG_*
-マクロによってのみアクセスすべきである。
-より詳しい情報は
-.BR netlink (3)
+netlink メッセージはバイトストリームからなり、 一つ以上の \fInlmsghdr\fP ヘッダと、それに対応するペイロード (payload)
+が含まれる。 バイトストリームには、標準の \fBNLMSG_*\fP マクロによってのみアクセスすべきである。 より詳しい情報は \fBnetlink\fP(3)
 を見よ。
 
-.\"O In multipart messages (multiple
-.\"O .I nlmsghdr
-.\"O headers with associated payload in one byte stream) the first and all
-.\"O following headers have the
-.\"O .B NLM_F_MULTI
-.\"O flag set, except for the last header which has the type
-.\"O .BR NLMSG_DONE .
-マルチパートメッセージ (一つ以上の
-.I nlmsghdr
-ヘッダと、それに対応するペイロードが
-一つバイトストリームに含まれる) においては、
-先頭のヘッダ・後続のヘッダには
-.B NLM_F_MULTI
-フラグがセットされる。ただし最後のヘッダだけは例外で、
-.B NLMSG_DONE
+マルチパートメッセージ (一つ以上の \fInlmsghdr\fP ヘッダと、それに対応するペイロードが 一つバイトストリームに含まれる) においては、
+先頭のヘッダ・後続のヘッダには \fBNLM_F_MULTI\fP フラグがセットされる。ただし最後のヘッダだけは例外で、 \fBNLMSG_DONE\fP
 タイプとなる。
 
-.\"O After each
-.\"O .I nlmsghdr
-.\"O the payload follows.
-それぞれの
-.B nlmsghdr
-の後にはペイロードが続く。
+それぞれの \fBnlmsghdr\fP の後にはペイロードが続く。
 
 .in +4n
 .nf
 struct nlmsghdr {
-.\"O     __u32 nlmsg_len;    /* Length of message including header. */
-.\"O     __u16 nlmsg_type;   /* Type of message content. */
-.\"O     __u16 nlmsg_flags;  /* Additional flags. */
-.\"O     __u32 nlmsg_seq;    /* Sequence number. */
-.\"O     __u32 nlmsg_pid;    /* PID of the sending process. */
     __u32 nlmsg_len;    /* ヘッダを含むメッセージの長さ */
     __u16 nlmsg_type;   /* メッセージの内容のタイプ */
     __u16 nlmsg_flags;  /* 追加フラグ */
@@ -230,250 +114,93 @@ struct nlmsghdr {
 .fi
 .in
 
-.\"O .I nlmsg_type
-.\"O can be one of the standard message types:
-.\"O .B NLMSG_NOOP
-.\"O message is to be ignored,
-.\"O .B NLMSG_ERROR
-.\"O message signals an error and the payload contains an
-.\"O .I nlmsgerr
-.\"O structure,
-.\"O .B NLMSG_DONE
-.\"O message terminates a multipart message.
-.I nlmsg_type
-は標準のメッセージタイプのどれか一つである:
-.B NLMSG_NOOP
-メッセージは無視される。
-.B NLMSG_ERROR
-メッセージはエラーを示し、ペイロードには
-.I nlmsgerr
-構造体が入る。
-.B NLMSG_DONE
+\fInlmsg_type\fP は標準のメッセージタイプのどれか一つである: \fBNLMSG_NOOP\fP メッセージは無視される。
+\fBNLMSG_ERROR\fP メッセージはエラーを示し、ペイロードには \fInlmsgerr\fP 構造体が入る。 \fBNLMSG_DONE\fP
 メッセージはマルチパートメッセージの終了を伝える。
 
 .in +4n
 .nf
 struct nlmsgerr {
-.\"O     int error;        /* Negative errno or 0 for acknowledgements */
-.\"O     struct nlmsghdr msg;  /* Message header that caused the error */
     int error;        /* 負または 0 の errno は応答を表す */
     struct nlmsghdr msg;  /* エラーを起こしたメッセージのヘッダ */
 };
 .fi
 .in
 
-.\"O A netlink family usually specifies more message types, see the
-.\"O appropriate manual pages for that, for example,
-.\"O .BR rtnetlink (7)
-.\"O for
-.\"O .BR NETLINK_ROUTE .
-ある netlink ファミリーで指定できるメッセージタイプは、
-通常もっと多い。これらに関しては適切な man ページを見てほしい。
-たとえば
-.B NETLINK_ROUTE
-に関しては
-.BR rtnetlink (7)
-に書いてある。
-
-.\"O Standard flag bits in
-.\"O .I nlmsg_flags
-.I nlmsg_flags
-の標準フラグビット
+ある netlink ファミリーで指定できるメッセージタイプは、 通常もっと多い。これらに関しては適切な man ページを見てほしい。 たとえば
+\fBNETLINK_ROUTE\fP に関しては \fBrtnetlink\fP(7)  に書いてある。
+
+\fInlmsg_flags\fP の標準フラグビット
 .br
----------------------------------
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 .TS
 tab(:);
 lB l.
-.\"O NLM_F_REQUEST:Must be set on all request messages.
-.\"O NLM_F_MULTI:T{
-.\"O The message is part of a multipart message terminated by
-.\"O .BR NLMSG_DONE .
-.\"O T}
-.\"O NLM_F_ACK:Request for an acknowledgment on success.
-.\"O NLM_F_ECHO:Echo this request.
 NLM_F_REQUEST:要求メッセージ全てでセットされなければならない。
 NLM_F_MULTI:T{
 このメッセージはマルチパートメッセージの一部である。
-マルチパートメッセージは
-.B NLMSG_DONE
-で終端する。
+マルチパートメッセージは \fBNLMSG_DONE\fP で終端する。
 T}
 NLM_F_ACK:成功した場合の応答を要求する。
 NLM_F_ECHO:この要求をエコーする。
 .TE
 
-.\"O Additional flag bits for GET requests
 GET 要求における追加フラグビット
 .br
--------------------------------------
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 .TS
 tab(:);
 lB l.
-.\"O NLM_F_ROOT:Return the complete table instead of a single entry.
-.\"O NLM_F_MATCH:T{
-.\"O Return all entries matching criteria passed in message content.
-.\"O Not implemented yet.
-.\"O T}
-.\" FIXME NLM_F_ATOMIC is not used any more?
-.\"O NLM_F_ATOMIC:Return an atomic snapshot of the table.
-.\"O NLM_F_DUMP:Convenience macro; equivalent to (NLM_F_ROOT|NLM_F_MATCH).
 NLM_F_ROOT:単一のエントリではなくテーブル全体を返す。
 NLM_F_MATCH:T{
-メッセージの内容で渡された基準 (criteria) にマッチする
-全てのエントリを返す。
+メッセージの内容で渡された基準 (criteria) にマッチする全てのエントリを返す。
 まだ実装されていない。
 T}
+.\" FIXME NLM_F_ATOMIC is not used any more?
 NLM_F_ATOMIC:テーブルのアトミックなスナップショットを返す。
 NLM_F_DUMP:便利なマクロ。(NLM_F_ROOT|NLM_F_MATCH) と同じ。
 .TE
 
-.\"O Note that
-.\"O .B NLM_F_ATOMIC
-.\"O requires the
-.\"O .B CAP_NET_ADMIN
-.\"O capability or an effective UID of 0.
-.B NLM_F_ATOMIC
-を使う場合は、
-.B CAP_NET_ADMIN
-権限を持つか実効ユーザー ID が 0 でなければならない点に注意すること。
-
-.\"O Additional flag bits for NEW requests
+\fBNLM_F_ATOMIC\fP を使う場合は、 \fBCAP_NET_ADMIN\fP 権限を持つか実効ユーザー ID が 0
+でなければならない点に注意すること。
+
 NEW 要求における追加フラグビット
 .br
--------------------------------------
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 .TS
 tab(:);
 lB l.
-.\"O NLM_F_REPLACE:Replace existing matching object.
-.\"O NLM_F_EXCL:Don't replace if the object already exists.
-.\"O NLM_F_CREATE:Create object if it doesn't already exist.
-.\"O NLM_F_APPEND:Add to the end of the object list.
 NLM_F_REPLACE:現存のオブジェクトを置換する。
 NLM_F_EXCL:すでにオブジェクトがあったら置換しない。
 NLM_F_CREATE:まだオブジェクトがなければ作成する。
 NLM_F_APPEND:オブジェクトリストの最後に追加する。
 .TE
 
-.\"O .I nlmsg_seq
-.\"O and
-.\"O .I nlmsg_pid
-.\"O are used to track messages.
-.I nlmsg_seq
-と
-.I nlmsg_pid
-はメッセージの追跡に使用される。
-.\"O .I nlmsg_pid
-.\"O shows the origin of the message.
-.I nlmsg_pid
-はメッセージの送信元を表す。
-.\"O Note that there isn't a 1:1 relationship between
-.\"O .I nlmsg_pid
-.\"O and the PID of the process if the message originated from a netlink
-.\"O socket.
-メッセージが netlink ソケットで送信されている場合、
-.I nlmsg_pid
-とプロセスの PID は 1:1 の関係ではない点に注意すること。
-.\"O See the
-.\"O .B ADDRESS FORMATS
-.\"O section for further information.
-より詳しい情報は、
-.RB 「 アドレスのフォーマット 」
-のセクションを参照すること。
-
-.\"O Both
-.\"O .I nlmsg_seq
-.\"O and
-.\"O .I nlmsg_pid
-.\"O .\" FIXME Explain more about nlmsg_seq and nlmsg_pid.
-.\"O are opaque to netlink core.
-.I nlmsg_seq
-と
-.I nlmsg_pid
-は netlink のコアには見えない (opaque)。
-
-.\"O Netlink is not a reliable protocol.
-netlink は信頼性の高いプロトコルではない。
-.\"O It tries its best to deliver a message to its destination(s),
-.\"O but may drop messages when an out-of-memory condition or
-.\"O other error occurs.
-.\"O For reliable transfer the sender can request an
-.\"O acknowledgement from the receiver by setting the
-.\"O .B NLM_F_ACK
-.\"O flag.
-.\"O An acknowledgment is an
-.\"O .B NLMSG_ERROR
-.\"O packet with the error field set to 0.
-netlink はメッセージを行き先に届けるために最善を尽くすが、
-メモリが足りなかったりエラーが起こったりすると
-メッセージを取りこぼすこともある。
-信頼性の高い転送を行いたいときは、
-送信者は受信者に応答を要求することもできる。
-これには
-.B NLM_F_ACK
-フラグをセットする。
-応答は
-.B NLMSG_ERROR
-パケットのエラーフィールドを 0 にしたものになる。
-.\"O The application must generate acknowledgements for
-.\"O received messages itself.
-.\"O The kernel tries to send an
-.\"O .B NLMSG_ERROR
-.\"O message for every failed packet.
-アプリケーションは自分自身のメッセージを受けたときには、
-応答を生成しなければならない。
-カーネルは失敗したパケットに対して、
-.B NLMSG_ERROR
-メッセージを送ろうとする。
-.\"O A user process should follow this convention too.
-ユーザープロセスはこの慣習にも従う必要がある。
-
-.\"O However, reliable transmissions from kernel to user are impossible
-.\"O in any case.
-しかし、どのような場合でもカーネルからユーザーへの
-信頼性の高い転送は不可能である。
-.\"O The kernel can't send a netlink message if the socket buffer is full:
-.\"O the message will be dropped and the kernel and the userspace process will
-.\"O no longer have the same view of kernel state.
-ソケットバッファが満杯の場合、カーネルは netlink メッセージを送信できない。
-メッセージは取りこぼされて、カーネルとユーザー空間プロセスは、
-カーネルの状態についての同じビューを持つことができなくなる。
-.\"O It is up to the application to detect when this happens (via the
-.\"O .B ENOBUFS
-.\"O error returned by
-.\"O .BR recvmsg (2))
-.\"O and resynchronize.
-これが起こったこと
-.RB ( recvmsg (2)
-によって
-.B ENOBUFS
-エラーが返される) を検知して再び同期させるのは、
+\fInlmsg_seq\fP と \fInlmsg_pid\fP はメッセージの追跡に使用される。 \fInlmsg_pid\fP はメッセージの送信元を表す。
+メッセージが netlink ソケットで送信されている場合、 \fInlmsg_pid\fP とプロセスの PID は 1:1
+の関係ではない点に注意すること。 より詳しい情報は、 「\fBアドレスのフォーマット\fP」 のセクションを参照すること。
+
+.\" FIXME Explain more about nlmsg_seq and nlmsg_pid.
+\fInlmsg_seq\fP と \fInlmsg_pid\fP は netlink のコアには見えない (opaque)。
+
+netlink は信頼性の高いプロトコルではない。 netlink はメッセージを行き先に届けるために最善を尽くすが、
+メモリが足りなかったりエラーが起こったりすると メッセージを取りこぼすこともある。 信頼性の高い転送を行いたいときは、
+送信者は受信者に応答を要求することもできる。 これには \fBNLM_F_ACK\fP フラグをセットする。 応答は \fBNLMSG_ERROR\fP
+パケットのエラーフィールドを 0 にしたものになる。 アプリケーションは自分自身のメッセージを受けたときには、 応答を生成しなければならない。
+カーネルは失敗したパケットに対して、 \fBNLMSG_ERROR\fP メッセージを送ろうとする。 ユーザープロセスはこの慣習にも従う必要がある。
+
+しかし、どのような場合でもカーネルからユーザーへの 信頼性の高い転送は不可能である。 ソケットバッファが満杯の場合、カーネルは netlink
+メッセージを送信できない。 メッセージは取りこぼされて、カーネルとユーザー空間プロセスは、 カーネルの状態についての同じビューを持つことができなくなる。
+これが起こったこと (\fBrecvmsg\fP(2)  によって \fBENOBUFS\fP エラーが返される) を検知して再び同期させるのは、
 アプリケーションの責任である。
-.\"O .SS Address Formats
 .SS アドレスのフォーマット
-.\"O The
-.\"O .I sockaddr_nl
-.\"O structure describes a netlink client in user space or in the kernel.
-.\"O A
-.\"O .I sockaddr_nl
-.\"O can be either unicast (only sent to one peer) or sent to
-.\"O netlink multicast groups
-.\"O .RI ( nl_groups
-.\"O not equal 0).
-.I sockaddr_nl
-構造体はユーザー空間やカーネル空間で netlink クライアントを記述する。
-.I sockaddr_nl
-はユニキャスト (単一の接続先にだけ送られる) にもできるし、
-netlink マルチキャストグループ
-.RI ( nl_groups
-が 0 でない場合) にも送ることができる。
+\fIsockaddr_nl\fP 構造体はユーザー空間やカーネル空間で netlink クライアントを記述する。 \fIsockaddr_nl\fP
+はユニキャスト (単一の接続先にだけ送られる) にもできるし、 netlink マルチキャストグループ (\fInl_groups\fP が 0 でない場合)
+にも送ることができる。
 
 .in +4n
 .nf
 struct sockaddr_nl {
-.\"O     sa_family_t     nl_family;  /* AF_NETLINK */
-.\"O     unsigned short  nl_pad;     /* Zero. */
-.\"O     pid_t           nl_pid;     /* Process ID. */
-.\"O     __u32           nl_groups;  /* Multicast groups mask. */
     sa_family_t     nl_family;  /* AF_NETLINK */
     unsigned short  nl_pad;     /* 0 である */
     pid_t           nl_pid;     /* プロセス ID */
@@ -482,174 +209,61 @@ struct sockaddr_nl {
 .fi
 .in
 
-.\"O .I nl_pid
-.\"O is the unicast address of netlink socket.
-.\"O It's always 0 if the destination is in the kernel.
-.I nl_pid
-は netlink ソケットのユニキャストアドレスである。
-行き先がカーネルの場合は、常に 0 である。
-.\"O For a userspace process,
-.\"O .I nl_pid
-.\"O is usually the PID of the process owning the destination socket.
-ユーザー空間プロセスの場合、通常は
-.I nl_pid
-は行き先のソケットを所有しているプロセスの PID である。
-.\"O However,
-.\"O .I nl_pid
-.\"O identifies a netlink socket, not a process.
-ただし、
-.I nl_pid
-はプロセスではなく netlink ソケットを同定する。
-.\"O If a process owns several netlink
-.\"O sockets, then
-.\"O .I nl_pid
-.\"O can only be equal to the process ID for at most one socket.
-プロセスが複数の netlink ソケットを所有する場合、
-.I nl_pid
-は最大でも一つのソケットのプロセス ID としか等しくならない。
-.\"O There are two ways to assign
-.\"O .I nl_pid
-.\"O to a netlink socket.
-.I nl_pid
-を netlink ソケットに割り当てる方法は 2 つある。
-.\"O If the application sets
-.\"O .I nl_pid
-.\"O before calling
-.\"O .BR bind (2),
-.\"O then it is up to the application to make sure that
-.\"O .I nl_pid
-.\"O is unique.
-アプリケーションが
-.BR bind (2)
-を呼ぶ前に
-.I nl_pid
-を設定する場合、
-.I nl_pid
-が一意であることを確認するのはアプリケーションの責任となる。
-.\"O If the application sets it to 0, the kernel takes care of assigning it.
-アプリケーションが
-.I nl_pid
-を 0 に設定した場合、カーネルがこの値を割り当てる。
-.\"O The kernel assigns the process ID to the first netlink socket the process
-.\"O opens and assigns a unique
-.\"O .I nl_pid
-.\"O to every netlink socket that the process subsequently creates.
-カーネルはプロセスが最初にオープンした
-netlink ソケットに対してプロセス ID を割り当て、
-それ以降にプロセスが作成した全ての netlink ソケットにも一意な
-.I nl_pid
-を割り当てる。
-
-.\"O .I nl_groups
-.\"O is a bit mask with every bit representing a netlink group number.
-.I nl_groups
-はビットマスクで、すべてのビットが netlink グループ番号を表す。
-.\"O Each netlink family has a set of 32 multicast groups.
+\fInl_pid\fP は netlink ソケットのユニキャストアドレスである。 行き先がカーネルの場合は、常に 0 である。
+ユーザー空間プロセスの場合、通常は \fInl_pid\fP は行き先のソケットを所有しているプロセスの PID である。 ただし、 \fInl_pid\fP
+はプロセスではなく netlink ソケットを同定する。 プロセスが複数の netlink ソケットを所有する場合、 \fInl_pid\fP
+は最大でも一つのソケットのプロセス ID としか等しくならない。 \fInl_pid\fP を netlink ソケットに割り当てる方法は 2 つある。
+アプリケーションが \fBbind\fP(2)  を呼ぶ前に \fInl_pid\fP を設定する場合、 \fInl_pid\fP
+が一意であることを確認するのはアプリケーションの責任となる。 アプリケーションが \fInl_pid\fP を 0
+に設定した場合、カーネルがこの値を割り当てる。 カーネルはプロセスが最初にオープンした netlink ソケットに対してプロセス ID を割り当て、
+それ以降にプロセスが作成した全ての netlink ソケットにも一意な \fInl_pid\fP を割り当てる。
+
+\fInl_groups\fP はビットマスクで、すべてのビットが netlink グループ番号を表す。
 それぞれの netlink ファミリーは 32 のマルチキャストグループのセットを持つ。
-.\"O When
-.\"O .BR bind (2)
-.\"O is called on the socket, the
-.\"O .I nl_groups
-.\"O field in the
-.\"O .I sockaddr_nl
-.\"O should be set to a bit mask of the groups which it wishes to listen to.
-それぞれの netlink ファミリーは 32 のマルチキャストグループの
-セットを持つ。
-.BR bind (2)
-がソケットに対して呼ばれると、
-.I sockaddr_nl
-の
-.I nl_groups
+それぞれの netlink ファミリーは 32 のマルチキャストグループの セットを持つ。
+\fBbind\fP(2) がソケットに対して呼ばれると、 \fIsockaddr_nl\fP の \fInl_groups\fP
 フィールドには listen したいグループのビットマスクがセットされる。
-.\"O The default value for this field is zero which means that no multicasts
-.\"O will be received.
-.\"O A socket may multicast messages to any of the multicast groups by setting
-.\"O .I nl_groups
-.\"O to a bit mask of the groups it wishes to send to when it calls
-.\"O .BR sendmsg (2)
-.\"O or does a
-.\"O .BR connect (2).
 デフォルトの値は 0 で、マルチキャストを一切受信しない。
-.BR sendmsg (2)
-や
-.BR connect (2)
-によって、あるソケットからメッセージをマルチキャストしたいときは、
-.I nl_groups
-に送信したいグループのビットマスクをセットすればよい。
-.\"O Only processes with an effective UID of 0 or the
-.\"O .B CAP_NET_ADMIN
-.\"O capability may send or listen to a netlink multicast group.
-実効ユーザー ID が 0 か、
-.B CAP_NET_ADMIN
-権限を持つユーザーのみが netlink マルチキャストグループに
-送信したり、これを listen したりすることができる。
-.\"O Any replies to a message received for a multicast group should be
-.\"O sent back to the sending PID and the multicast group.
+\fBsendmsg\fP(2) や \fBconnect\fP(2) によって、あるソケットからメッセージを
+マルチキャストしたいときは、 \fInl_groups\fP に送信したいグループのビットマスク
+をセットすればよい。
+実効ユーザー ID が 0 か、 \fBCAP_NET_ADMIN\fP 権限を持つユーザーのみが netlink
+マルチキャストグループに 送信したり、これを listen したりすることができる。
 マルチキャストグループ向けメッセージを受信した場合、これ対する応答は
 送り主の PID とマルチキャストグループとに送り返すべきである。
-.\"O .SH VERSIONS
+さらに、Linux のカーネルサブシステムによっては、
+他のユーザもメッセージの送受信ができる場合がある。
+Linux 3.0 の時点では、
+\fBNETLINK_KOBJECT_UEVENT\fP, \fBNETLINK_GENERIC\fP, \fBNETLINK_ROUTE\fP,
+\fBNETLINK_SELINUX\fP グループでは他のユーザがメッセージを受信することができる。
+他のユーザがメッセージを送信できるグループは存在しない。
 .SH バージョン
-.\"O The socket interface to netlink is a new feature of Linux 2.2.
 netlink へのソケットインターフェースは Linux 2.2 の新機能である。
 
-.\"O Linux 2.0 supported a more primitive device-based netlink interface
-.\"O (which is still available as a compatibility option).
-.\"O This obsolete interface is not described here.
-Linux 2.0 は、もっと原始的なデバイスベースの netlink インターフェースを
-サポートしていた (これも互換性のために今でも使用できる)。
+Linux 2.0 は、もっと原始的なデバイスベースの netlink インターフェースを サポートしていた (これも互換性のために今でも使用できる)。
 古いインターフェースに関してはここでは記述しない。
 
-.\"O NETLINK_SELINUX appeared in Linux 2.6.4.
 NETLINK_SELINUX は Linux 2.6.4 で登場した。
 
-.\"O NETLINK_AUDIT appeared in Linux 2.6.6.
 NETLINK_AUDIT は Linux 2.6.6 で登場した。
 
-.\"O NETLINK_KOBJECT_UEVENT appeared in Linux 2.6.10.
 NETLINK_KOBJECT_UEVENT は Linux 2.6.10 で登場した。
 
-.\"O NETLINK_W1 and NETLINK_FIB_LOOKUP appeared in Linux 2.6.13.
 NETLINK_W1, NETLINK_FIB_LOOKUP は Linux 2.6.13 で登場した。
 
-.\"O NETLINK_INET_DIAG, NETLINK_CONNECTOR and NETLINK_NETFILTER appeared in
-.\"O Linux 2.6.14.
-NETLINK_INET_DIAG, NETLINK_CONNECTOR, NETLINK_NETFILTER は
-Linux 2.6.14 で登場した。
+NETLINK_INET_DIAG, NETLINK_CONNECTOR, NETLINK_NETFILTER は Linux 2.6.14
+で登場した。
 
-.\"O NETLINK_GENERIC and NETLINK_ISCSI appeared in Linux 2.6.15.
 NETLINK_GENERIC, NETLINK_ISCSI は Linux 2.6.15 で登場した。
-.\"O .SH NOTES
 .SH 注意
-.\"O It is often better to use netlink via
-.\"O .I libnetlink
-.\"O or
-.\"O .I libnl
-.\"O than via the low-level kernel interface.
-低レベルのカーネルインターフェースより、
-.I libnetlink
-または
-.I libnl
-を通して netlink を利用するほうが良いことが多い。
-.\"O .SH BUGS
-.\"O This manual page is not complete.
+低レベルのカーネルインターフェースより、 \fIlibnetlink\fP または \fIlibnl\fP を通して netlink
+を利用するほうが良いことが多い。
 .SH バグ
 この man ページは完成していない。
-.\"O .SH EXAMPLE
 .SH 例
-.\"O The following example creates a
-.\"O .B NETLINK_ROUTE
-.\"O netlink socket which will listen to the
-.\"O .B RTMGRP_LINK
-.\"O (network interface create/delete/up/down events) and
-.\"O .B RTMGRP_IPV4_IFADDR
-.\"O (IPv4 addresses add/delete events) multicast groups.
-以下の例では、
-.B RTMGRP_LINK
-(ネットワークインターフェースの create/delete/up/down イベント) と
-.B RTMGRP_IPV4_IFADDR
-(IPv4 アドレスの add/delete イベント) マルチキャストグループを listen する
-.B NETLINK_ROUTE
-netlink を作成している。
+以下の例では、 \fBRTMGRP_LINK\fP (ネットワークインターフェースの create/delete/up/down イベント) と
+\fBRTMGRP_IPV4_IFADDR\fP (IPv4 アドレスの add/delete イベント) マルチキャストグループを listen する
+\fBNETLINK_ROUTE\fP netlink を作成している。
 
 .in +4n
 .nf
@@ -664,17 +278,11 @@ bind(fd, (struct sockaddr *) &sa, sizeof(sa));
 .fi
 .in
 
-.\"O The next example demonstrates how to send a netlink message to the
-.\"O kernel (pid 0).
-.\"O Note that application must take care of message sequence numbers
-.\"O in order to reliably track acknowledgements.
-次の例では、netlink メッセージをカーネル (pid 0) に送る方法を示している。
-応答を追跡する際の信頼性を高めるために、アプリケーションが
+次の例では、netlink メッセージをカーネル (pid 0) に送る方法を示している。 応答を追跡する際の信頼性を高めるために、アプリケーションが
 メッセージのシーケンス番号を正しく処理しなければならない点に注意すること。
 
 .in +4n
 .nf
-.\"O struct nlmsghdr *nh;    /* The nlmsghdr with payload to send. */
 struct nlmsghdr *nh;    /* 送信する nlmsghdr とペイロード */
 struct sockaddr_nl sa;
 struct iovec iov = { (void *) nh, nh\->nlmsg_len };
@@ -685,7 +293,6 @@ memset(&sa, 0, sizeof(sa));
 sa.nl_family = AF_NETLINK;
 nh\->nlmsg_pid = 0;
 nh\->nlmsg_seq = ++sequence_number;
-.\"O /* Request an ack from kernel by setting NLM_F_ACK. */
 /* NLM_F_ACK を設定することで、カーネルに応答を要求する */
 nh\->nlmsg_flags |= NLM_F_ACK;
 
@@ -693,7 +300,6 @@ sendmsg(fd, &msg, 0);
 .fi
 .in
 
-.\"O And the last example is about reading netlink message.
 最後は、netlink メッセージの読み込みの例である。
 
 .in +4n
@@ -710,37 +316,24 @@ len = recvmsg(fd, &msg, 0);
 
 for (nh = (struct nlmsghdr *) buf; NLMSG_OK (nh, len);
      nh = NLMSG_NEXT (nh, len)) {
-.\"O     /* The end of multipart message. */
     /* マルチパートメッセージの終わり */
     if (nh\->nlmsg_type == NLMSG_DONE)
         return;
 
     if (nh\->nlmsg_type == NLMSG_ERROR)
-.\"O         /* Do some error handling. */
         /* 何らかのエラー処理を行う */
     ...
 
-.\"O     /* Continue with parsing payload. */
     /* ペイロードの解析を続ける */
     ...
 }
 .fi
 .in
-.\"O .SH SEE ALSO
 .SH 関連項目
-.BR cmsg (3),
-.BR netlink (3),
-.BR capabilities (7),
-.BR rtnetlink (7)
+\fBcmsg\fP(3), \fBnetlink\fP(3), \fBcapabilities\fP(7), \fBrtnetlink\fP(7)
 .PP
-.\"O ftp://ftp.inr.ac.ru/ip-routing/iproute2*
-.\"O for information about libnetlink.
-libnetlink に関する情報は
-ftp://ftp.inr.ac.ru/ip-routing/iproute2*
-
-.\"O http://people.suug.ch/~tgr/libnl/
-.\"O for information about libnl.
-libnl に関する情報は
-http://people.suug.ch/~tgr/libnl/
+libnetlink に関する情報は ftp://ftp.inr.ac.ru/ip\-routing/iproute2*
+
+libnl に関する情報は http://people.suug.ch/~tgr/libnl/
 
 RFC 3549 "Linux Netlink as an IP Services Protocol"
diff --git a/draft/man7/operator.7 b/draft/man7/operator.7
new file mode 100644 (file)
index 0000000..e7fec0c
--- /dev/null
@@ -0,0 +1,67 @@
+.\" Copyright (c) 1989, 1990, 1993
+.\"    The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" 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.
+.\"
+.\"    @(#)operator.7  8.1 (Berkeley) 6/9/93
+.\"
+.\" Copied shamelessly from FreeBSD with minor changes. 2003-05-21
+.\"     Brian M. Carlson <sandals@crustytoothpaste.ath.cx>
+.\"
+.\" Restored automatic formatting from FreeBSD.  2003-08-24
+.\"    Martin Schulze <joey@infodrom.org>
+.\"
+.\" 2007-12-08, mtk, Converted from mdoc to man macros
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH OPERATOR 7 2011\-09\-09 Linux "Linux Programmer's Manual"
+.SH 名前
+operator \- C 言語の演算子の優先順位と評価の順序
+.SH 説明
+この man ページでは C 言語の演算子と評価の優先順位をリストする。
+.nf
+
+\fB演算子                                結合の順序\fP
+() [] \-> .                           左から右へ
+! ~ ++ \-\- + \- (type) * & sizeof      右から左へ
+* / %                                左から右へ
++ \-                                  左から右へ
+<< >>                                左から右へ
+< <= > >=                            左から右へ
+== !=                                左から右へ
+&                                    左から右へ
+^                                    左から右へ
+|                                    左から右へ
+&&                                   左から右へ
+||                                   左から右へ
+?:                                   右から左へ
+= += \-= *= /= %= <<= >>= &= ^= |=    右から左へ
+,                                    左から右へ
+.fi
+.\"
index 2255008..2737588 100644 (file)
 .\" of this page provided the header is included verbatim,
 .\" and in case of nontrivial modification author and date
 .\" of the modification is added to the header.
-.\" $Id: packet.7,v 1.12 2001/06/19 07:07:38 argrath Exp $
+.\" $Id: packet.7,v 1.13 2000/08/14 08:03:45 ak Exp $
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
-.\" Translated 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated 2001-02-13, Kentaro Shirakata <argrath@ub32.org>
-.\" Updated 2005-02-21, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\"WORD                physical layer          物理層
-.\"WORD                link level header(s)    リンクレベルヘッダ
-.\"WORD                phyxical header(s)      物理ヘッダ
-.\"WORD                effective user id       実効ユーザー ID
-.\"WORD                capability              ケーパビリティ
-.\"WORD                pending error           遅延エラー
-.\"WORD                promiscuous mode        無差別モード
-.\"
-.TH PACKET  7 2008-08-08 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.TH PACKET 7 2012\-03\-25 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O packet, AF_PACKET \- packet interface on device level.
 packet, AF_PACKET \- デバイスレベルのパケットインターフェース
-.\"O .SH SYNOPSIS
 .SH 書式
 .nf
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .br
-.B #include <netpacket/packet.h>
+\fB#include <netpacket/packet.h>\fP
 .br
-.B #include <net/ethernet.h>     /* the L2 protocols */
+\fB#include <net/ethernet.h> /* the L2 protocols */\fP
 .sp
-.BI "packet_socket = socket(AF_PACKET, int " socket_type ", int "protocol );
+\fBpacket_socket = socket(AF_PACKET, int \fP\fIsocket_type\fP\fB, int \fP\fIprotocol\fP\fB);\fP
 .fi
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O Packet sockets are used to receive or send raw packets at the device driver
-.\"O (OSI Layer 2) level.
-.\"O They allow the user to implement protocol modules in user space
-.\"O on top of the physical layer.
-packet ソケットは、デバイスドライバ (OSI レイヤ 2) レベルで
-生のパケット (raw packet) を送受信するために用いられる。
-packet ソケットを使うと、ユーザー空間で物理層の上に
-プロトコルモジュールを実装することができる。
-
-.\"O The
-.\"O .I socket_type
-.\"O is either
-.\"O .B SOCK_RAW
-.\"O for raw packets including the link level header or
-.\"O .B SOCK_DGRAM
-.\"O for cooked packets with the link level header removed.
-.\"O The link level
-.\"O header information is available in a common format in a
-.\"O .IR sockaddr_ll .
-.\"O .I protocol
-.\"O is the IEEE 802.3 protocol number in network order.
-.\"O See the
-.\"O .I <linux/if_ether.h>
-.\"O include file for a list of allowed protocols.
-.\"O When protocol
-.\"O is set to
-.\"O .B htons(ETH_P_ALL)
-.\"O then all protocols are received.
-.\"O All incoming packets of that protocol type will be passed to the packet
-.\"O socket before they are passed to the protocols implemented in the kernel.
-.I socket_type
-には
-.B SOCK_RAW
-と
-.B SOCK_DGRAM
-のいずれかを指定する。
-.B SOCK_RAW
-はリンクレベルヘッダを含む raw パケットを、
-.B SOCK_DGRAM
-はリンクレベルヘッダが削除された加工済みパケットを示す。
-リンクレベルヘッダ情報は
-.I sockaddr_ll
-で共通のフォーマットで入手できる。
-.I protocol
-には IEEE 802.3 プロトコル番号を
-ネットワークバイトオーダーで指定する。
-指定できるプロトコルのリストは、インクルードファイル
-.I <linux/if_ether.h>
-を参照。プロトコルを
-.B htons(ETH_P_ALL)
-にすると、全てのプロトコルが受信される。
-外部から来たパケットのうち指定したプロトコルのものは、
-カーネルに実装されているプロトコルに渡される前の段階で、
-packet ソケットに渡される。
-
-.\"O Only processes with effective UID 0 or the
-.\"O .B CAP_NET_RAW
-.\"O capability may open packet sockets.
-packet ソケットをオープンできるのは、
-実効ユーザーID が 0 のプロセスか、
-.B CAP_NET_RAW
+packet ソケットは、デバイスドライバ (OSI レイヤ 2) レベルで 生のパケット (raw packet) を送受信するために用いられる。
+packet ソケットを使うと、ユーザー空間で物理層の上に プロトコルモジュールを実装することができる。
+
+\fIsocket_type\fP には \fBSOCK_RAW\fP と \fBSOCK_DGRAM\fP のいずれかを指定する。 \fBSOCK_RAW\fP
+はリンクレベルヘッダを含む raw パケットを、 \fBSOCK_DGRAM\fP はリンクレベルヘッダが削除された加工済みパケットを示す。
+リンクレベルヘッダ情報は \fIsockaddr_ll\fP で共通のフォーマットで入手できる。 \fIprotocol\fP には IEEE 802.3
+プロトコル番号を ネットワークバイトオーダーで指定する。 指定できるプロトコルのリストは、インクルードファイル
+\fI<linux/if_ether.h>\fP を参照。プロトコルを \fBhtons(ETH_P_ALL)\fP
+にすると、全てのプロトコルが受信される。 外部から来たパケットのうち指定したプロトコルのものは、
+カーネルに実装されているプロトコルに渡される前の段階で、 packet ソケットに渡される。
+
+packet ソケットをオープンできるのは、 実効ユーザーID が 0 のプロセスか、 \fBCAP_NET_RAW\fP
 ケーパビリティを持つプロセスだけである。
 
-.\"O .B SOCK_RAW
-.\"O packets are passed to and from the device driver without any changes in
-.\"O the packet data.
-.\"O When receiving a packet, the address is still parsed and
-.\"O passed in a standard
-.\"O .I sockaddr_ll
-.\"O address structure.
-.\"O When transmitting a packet, the user supplied buffer
-.\"O should contain the physical layer header.
-.\"O That packet is then
-.\"O queued unmodified to the network driver of the interface defined by the
-.\"O destination address.
-.\"O Some device drivers always add other headers.
-.\"O .B SOCK_RAW
-.\"O is similar to but not compatible with the obsolete
-.\"O .B AF_INET/SOCK_PACKET
-.\"O of Linux 2.0.
-.B SOCK_RAW
-パケットでは、パケットをデバイスドライバと受け渡しする際、
-パケットデータに変更が行われることはない。
-パケットの受信時には、アドレスの解析だけは行われ、
-標準的な
-.I sockaddr_ll
-アドレス構造体に渡される。パケットの送信時には、ユーザが指定する
-バッファに物理層のヘッダが含まれている必要がある。
-パケットはそのまま修正を受けずに、行き先アドレスから決定される
-インターフェースのネットワークドライバにキューイングされる。
-デバイスドライバによっては、他のヘッダを常に追加するものもある。
-.B SOCK_RAW
-は Linux 2.0 の obosolete な
-.B AF_INET/SOCK_PACKET
-と似ているが、互換性があるわけではない。
+\fBSOCK_RAW\fP パケットでは、パケットをデバイスドライバと受け渡しする際、 パケットデータに変更が行われることはない。
+パケットの受信時には、アドレスの解析だけは行われ、 標準的な \fIsockaddr_ll\fP
+アドレス構造体に渡される。パケットの送信時には、ユーザが指定する バッファに物理層のヘッダが含まれている必要がある。
+パケットはそのまま修正を受けずに、行き先アドレスから決定される インターフェースのネットワークドライバにキューイングされる。
+デバイスドライバによっては、他のヘッダを常に追加するものもある。 \fBSOCK_RAW\fP は Linux 2.0 の obosolete な
+\fBAF_INET/SOCK_PACKET\fP と似ているが、互換性があるわけではない。
 
-.\"O .B SOCK_DGRAM
-.\"O operates on a slightly higher level.
-.\"O The physical header is removed before the packet is passed to the user.
-.\"O Packets sent through a
-.\"O .B SOCK_DGRAM
-.\"O packet socket get a suitable physical layer header based on the
-.\"O information in the
-.\"O .I sockaddr_ll
-.\"O destination address before they are queued.
-.B SOCK_DGRAM
-はやや高位のレベルで動作する。物理ヘッダは、パケットがユーザーに
-渡される前に削除される。
-.B SOCK_DGRAM
-の packet ソケットを通して送られるパケットは、
-.I sockaddr_ll
-の行き先アドレスの情報に基づき、適切な物理層のヘッダが付加されてから、
+\fBSOCK_DGRAM\fP はやや高位のレベルで動作する。物理ヘッダは、パケットがユーザーに 渡される前に削除される。 \fBSOCK_DGRAM\fP の
+packet ソケットを通して送られるパケットは、 \fIsockaddr_ll\fP の行き先アドレスの情報に基づき、適切な物理層のヘッダが付加されてから、
 キューに送られる。
 
-.\"O By default all packets of the specified protocol type
-.\"O are passed to a packet socket.
-.\"O To only get packets from a specific interface use
-.\"O .BR bind (2)
-.\"O specifying an address in a
-.\"O .I struct sockaddr_ll
-.\"O to bind the packet socket to an interface.
-.\"O Only the
-.\"O .I sll_protocol
-.\"O and the
-.\"O .I sll_ifindex
-.\"O address fields are used for purposes of binding.
-デフォルトでは、指定したプロトコル型のパケットはすべて packet
-ソケットに送られる。特定のインターフェースからのパケットだけを
-取得したい場合には、
-.I struct sockaddr_ll
-にアドレスを指定して
-.BR bind (2)
-を呼び、 packet ソケットをそのインターフェースに結び付ける (バインドする)。
-バインドの際には、アドレスフィールドのうち
-.I sll_protocol
-と
-.I sll_ifindex
-だけが用いられる。
+デフォルトでは、指定したプロトコル型のパケットはすべて packet ソケットに送られる。特定のインターフェースからのパケットだけを
+取得したい場合には、 \fIstruct sockaddr_ll\fP にアドレスを指定して \fBbind\fP(2)  を呼び、 packet
+ソケットをそのインターフェースに結び付ける (バインドする)。 バインドの際には、アドレスフィールドのうち \fIsll_protocol\fP と
+\fIsll_ifindex\fP だけが用いられる。
 
-.\"O The
-.\"O .BR connect (2)
-.\"O operation is not supported on packet sockets.
-.BR connect (2)
-操作は packet ソケットではサポートされていない。
+\fBconnect\fP(2)  操作は packet ソケットではサポートされていない。
 
-.\"O When the
-.\"O .B MSG_TRUNC
-.\"O flag is passed to
-.\"O .BR recvmsg (2),
-.\"O .BR recv (2),
-.\"O .BR recvfrom (2)
-.\"O the real length of the packet on the wire is always returned,
-.\"O even when it is longer than the buffer.
-.B MSG_TRUNC
-フラグが
-.BR recvmsg (2),
-.BR recv (2),
-.BR recvfrom (2)
-に渡されると、 (バッファサイズより大きかったとしても) 常に実際に通信された
-パケットの長さが返される。
-.\"O .SS Address Types
+\fBMSG_TRUNC\fP フラグが \fBrecvmsg\fP(2), \fBrecv\fP(2), \fBrecvfrom\fP(2)  に渡されると、
+(バッファサイズより大きかったとしても) 常に実際に通信された パケットの長さが返される。
 .SS アドレスのタイプ
-.\"O The sockaddr_ll is a device independent physical layer address.
 sockaddr_ll はデバイスに依存しない物理層のアドレスである。
 
 .in +4n
 .nf
-.\"O struct sockaddr_ll {
-.\"O     unsigned short sll_family;   /* Always AF_PACKET */
-.\"O     unsigned short sll_protocol; /* Physical layer protocol */
-.\"O     int            sll_ifindex;  /* Interface number */
-.\"O     unsigned short sll_hatype;   /* Header type */
-.\"O     unsigned char  sll_pkttype;  /* Packet type */
-.\"O     unsigned char  sll_halen;    /* Length of address */
-.\"O     unsigned char  sll_addr[8];  /* Physical layer address */
-.\"O };
 struct sockaddr_ll {
     unsigned short sll_family;   /* 常に AF_PACKET */
     unsigned short sll_protocol; /* 物理層のプロトコル */
     int            sll_ifindex;  /* インターフェース番号 */
-    unsigned short sll_hatype;   /* ヘッダ種別 */
+    unsigned short sll_hatype;   /* ARP ハードウェア種別 */
     unsigned char  sll_pkttype;  /* パケット種別 */
     unsigned char  sll_halen;    /* アドレスの長さ */
     unsigned char  sll_addr[8];  /* 物理層のアドレス */
@@ -224,153 +74,34 @@ struct sockaddr_ll {
 .fi
 .in
 
-.\"O .I sll_protocol
-.\"O is the standard ethernet protocol type in network order as defined
-.\"O in the
-.\"O .I <linux/if_ether.h>
-.\"O include file.
-.\"O It defaults to the socket's protocol.
-.I sll_protocol
-は標準的なイーサネットプロトコルのタイプで、
-ネットワークバイトオーダーで記述する。
-インクルードファイル
-.I <linux/if_ether.h>
-で定義されている。
-これがこのソケットのプロトコルのデフォルトとなる。
-
-.\"O .I sll_ifindex
-.\"O is the interface index of the interface
-.\"O (see
-.\"O .BR netdevice (7));
-.\"O 0 matches any interface (only permitted for binding).
-.I sll_ifindex
-はそのインターフェースの interface index である
-.RB ( netdevice (7)
-を参照)。
-0 は (バインドが許可されている)  任意のインターフェースにマッチする。
-
-.\"O .I sll_hatype
-.\"O is a ARP type as defined in the
-.\"O .I <linux/if_arp.h>
-.\"O include file.
-.I sll_hatype
-は、インクルードファイル
-.I <linux/if_arp.h>
-で定義されている ARP 種別である。
-
-.\"O .I sll_pkttype
-.\"O contains the packet type.
-.\"O Valid types are
-.\"O .B PACKET_HOST
-.\"O for a packet addressed to the local host,
-.\"O .B PACKET_BROADCAST
-.\"O for a physical layer broadcast packet,
-.\"O .B PACKET_MULTICAST
-.\"O for a packet sent to a physical layer multicast address,
-.\"O .B PACKET_OTHERHOST
-.\"O for a packet to some other host that has been caught by a device driver
-.\"O in promiscuous mode, and
-.\"O .B PACKET_OUTGOING
-.\"O for a packet originated from the local host that is looped back to a packet
-.\"O socket.
-.\"O These types make only sense for receiving.
-.I sll_pkttype
-はパケット種別である。指定できる種別は以下のいずれかである:
-.B PACKET_HOST
-(ローカルホスト向けのパケット)、
-.B PACKET_BORADCAST
-(物理層のブロードキャストパケット)、
-.B PACKET_MULTICAST
-(物理層のマルチキャストアドレスに送るパケット)、
-.B PACKET_OTHERHOST
-(他のホストに向けられたパケットのうち、
-無差別モード (promiscuous mode: 後述) のデバイスドライバにより補足されたもの)、
-.B PACKET_OUTGOING
-(ローカルホストから発信され、
-packet ソケットにループバックしてきたパケット)。
-これらの種別が意味を持つのは受信時のみである。
-
-.\"O .I sll_addr
-.\"O and
-.\"O .I sll_halen
-.\"O contain the physical layer (e.g., IEEE 802.3) address and its length.
-.\"O The exact interpretation depends on the device.
-.I sll_addr
-と
-.I sll_halen
-は、物理層の (つまり IEEE 802.3 の) アドレスとその長さである。
-厳密な解釈はデバイスに依存する。
-
-.\"O When you send packets it is enough to specify
-.\"O .IR sll_family ,
-.\"O .IR sll_addr ,
-.\"O .IR sll_halen ,
-.\"O .IR sll_ifindex .
-パケットを送る場合は、
-.IR sll_family ,
-.IR sll_addr ,
-.IR sll_halen ,
-.I sll_ifindex
-を指定すれば十分である。
-.\"O The other fields should be 0.
-その他のフィールドは 0 にしておくべきである。
-.\"O .I sll_hatype
-.\"O and
-.\"O .I sll_pkttype
-.\"O are set on received packets for your information.
-.I sll_hatype
-と
-.I sll_pkttype
-には受信したパケットの情報が設定される。
-.\"O For bind only
-.\"O .I sll_protocol
-.\"O and
-.\"O .I sll_ifindex
-.\"O are used.
-バインドの際には、
-.I sll_protocol
-と
-.I sll_ifindex
-だけが使用される。
-.\"O .SS Socket Options
+\fIsll_protocol\fP は標準的なイーサネットプロトコルのタイプで、 ネットワーク
+バイトオーダーで記述する。 インクルードファイル
+\fI<linux/if_ether.h>\fP で定義されている。 これがこのソケットのプロト
+コルのデフォルトとなる。 \fIsll_ifindex\fP はそのインターフェースの interface
+index である (\fBnetdevice\fP(7) を参照)。 0 は (バインドが許可されている) 任
+意のインターフェースにマッチする。 \fIsll_hatype\fP は、インクルードファイル
+\fI<linux/if_arp.h>\fP で定義されている ARP 種別である。
+\fIsll_pkttype\fP はパケット種別である。指定できる種別は以下のいずれかである:
+\fBPACKET_HOST\fP (ローカルホスト向けのパケット)、 \fBPACKET_BORADCAST\fP (物理層
+のブロードキャストパケット)、 \fBPACKET_MULTICAST\fP (物理層のマルチキャストア
+ドレスに送るパケット)、 \fBPACKET_OTHERHOST\fP (他のホストに向けられたパケット
+のうち、 無差別モード (promiscuous mode: 後述) のデバイスドライバにより補足
+されたもの)、 \fBPACKET_OUTGOING\fP (ローカルホストから発信され、 packet ソケッ
+トにループバックしてきたパケット)。 これらの種別が意味を持つのは受信時のみ
+である。 \fIsll_addr\fP と \fIsll_halen\fP は、物理層の (つまり IEEE 802.3 の)
+アドレスとその長さである。 厳密な解釈はデバイスに依存する。
+
+パケットを送る場合は、 \fIsll_family\fP, \fIsll_addr\fP, \fIsll_halen\fP, \fIsll_ifindex\fP
+を指定すれば十分である。 その他のフィールドは 0 にしておくべきである。 \fIsll_hatype\fP と \fIsll_pkttype\fP
+には受信したパケットの情報が設定される。 バインドの際には、 \fIsll_protocol\fP と \fIsll_ifindex\fP だけが使用される。
 .SS ソケットオプション
-.\"O Packet sockets can be used to configure physical layer multicasting
-.\"O and promiscuous mode.
-.\"O It works by calling
-.\"O .BR setsockopt (2)
-.\"O on a packet socket for
-.\"O .B SOL_PACKET
-.\"O and one of the options
-.\"O .B PACKET_ADD_MEMBERSHIP
-.\"O to add a binding or
-.\"O .B PACKET_DROP_MEMBERSHIP
-.\"O to drop it.
-.\"O They both expect a
-.\"O .B packet_mreq
-.\"O structure as argument:
-packet ソケットは、物理層のマルチキャストや
-無差別モード (promiscuous mode) を設定して使うことができる。
-これには
-.B SOL_PACKET
-と以下のオプションのいずれかを指定して
-.BR setsockopt (2)
-を呼べばよい。
-バインドを追加する場合は
-.B PACKET_ADD_MEMBERSHIP
-であり、取り去る場合は
-.B PACKET_DROP_MEMBERSHIP
-である。これらはいずれも
-.B packet_mreq
-構造体を引き数に取る。
+packet ソケットは、物理層のマルチキャストや 無差別モード (promiscuous mode) を設定して使うことができる。 これには
+\fBSOL_PACKET\fP と以下のオプションのいずれかを指定して \fBsetsockopt\fP(2)  を呼べばよい。 バインドを追加する場合は
+\fBPACKET_ADD_MEMBERSHIP\fP であり、取り去る場合は \fBPACKET_DROP_MEMBERSHIP\fP である。これらはいずれも
+\fBpacket_mreq\fP 構造体を引き数に取る。
 
 .in +4n
 .nf
-.\"O struct packet_mreq {
-.\"O     int            mr_ifindex;    /* interface index */
-.\"O     unsigned short mr_type;       /* action */
-.\"O     unsigned short mr_alen;       /* address length */
-.\"O     unsigned char  mr_address[8]; /* physical layer address */
-.\"O };
 struct packet_mreq {
     int            mr_ifindex;    /* インターフェース番号 */
     unsigned short mr_type;       /* 動作 */
@@ -380,152 +111,66 @@ struct packet_mreq {
 .fi
 .in
 
-.\"O .B mr_ifindex
-.\"O contains the interface index for the interface whose status
-.\"O should be changed.
-.\"O The
-.\"O .B mr_type
-.\"O parameter specifies which action to perform.
-.\"O .B PACKET_MR_PROMISC
-.\"O enables receiving all packets on a shared medium (often known as
-.\"O "promiscuous mode"),
-.\"O .B PACKET_MR_MULTICAST
-.\"O binds the socket to the physical layer multicast group specified in
-.\"O .B mr_address
-.\"O and
-.\"O .BR mr_alen ,
-.\"O and
-.\"O .B PACKET_MR_ALLMULTI
-.\"O sets the socket up to receive all multicast packets arriving at
-.\"O the interface.
-.I mr_ifindex
-は、ステータスを変更したいインターフェースの
-インターフェース番号である。
-.I mr_type
-パラメータは実行する動作を指定する:
-.B PACKET_MR_PROMISC
-は、共有している媒体からの全てのパケットを受信できるようにする
-(しばしば "無差別モード (promiscuous mode)" と呼ばれる)。
-.B PACKET_MR_MULTICAST
-は、そのソケットを、
-.I mr_address
-と
-.I mr_alen
-で指定される物理層のマルチキャストブループにバインドする。
-.B PACKET_MR_ALLMULTI
-は socket を up にして、そのインターフェースに到達したすべての
+\fImr_ifindex\fP は、ステータスを変更したいインターフェースの インターフェース番号である。 \fImr_type\fP
+パラメータは実行する動作を指定する: \fBPACKET_MR_PROMISC\fP は、共有している媒体からの全てのパケットを受信できるようにする
+(しばしば "無差別モード (promiscuous mode)" と呼ばれる)。 \fBPACKET_MR_MULTICAST\fP は、そのソケットを、
+\fImr_address\fP と \fImr_alen\fP で指定される物理層のマルチキャストブループにバインドする。
+\fBPACKET_MR_ALLMULTI\fP は socket を up にして、そのインターフェースに到達したすべての
 マルチキャストパケットを受信できるようにする。
 
-.\"O In addition the traditional ioctls
-.\"O .BR SIOCSIFFLAGS ,
-.\"O .BR SIOCADDMULTI ,
-.\"O .B SIOCDELMULTI
-.\"O can be used for the same purpose.
-昔からある ioctl だけでなく、
-.BR SIOCSIFFLAGS ,
-.BR SIOCADDMULTI ,
-.B SIOCDELMULTI
+昔からある ioctl だけでなく、 \fBSIOCSIFFLAGS\fP, \fBSIOCADDMULTI\fP, \fBSIOCDELMULTI\fP
 を同じ目的に用いることができる。
-.\"O .SS Ioctls
 .SS ioctl
-.\"O .B SIOCGSTAMP
-.\"O can be used to receive the timestamp of the last received packet.
-.\"O Argument is a
-.\"O .IR "struct timeval" .
-.B SIOCGSTAMP
-を用いると、最後に受信したパケットのタイムスタンプを得ることができる。
-引き数は
-.I struct timeval
-である。
 .\" FIXME Document SIOCGSTAMPNS
+\fBSIOCGSTAMP\fP を用いると、最後に受信したパケットのタイムスタンプを得ることができる。 引き数は \fIstruct timeval\fP
+である。
 
-.\"O In addition all standard ioctls defined in
-.\"O .BR netdevice (7)
-.\"O and
-.\"O .BR socket (7)
-.\"O are valid on packet sockets.
-さらに、
-.BR netdevice (7)
-および
-.BR socket (7)
-で定義されている標準の ioctl はいずれも
-packet ソケットに指定可能である。
-.\"O .SS Error Handling
+さらに、 \fBnetdevice\fP(7)  および \fBsocket\fP(7)  で定義されている標準の ioctl はいずれも packet
+ソケットに指定可能である。
 .SS エラー処理
-.\"O Packet sockets do no error handling other than errors occurred
-.\"O while passing the packet to the device driver.
-.\"O They don't have the concept of a pending error.
-packet ソケットは、パケットをデバイスドライバに渡すときに
-起きたエラーしか処理しない。遅延エラー (pending error)
+packet ソケットは、パケットをデバイスドライバに渡すときに 起きたエラーしか処理しない。遅延エラー (pending error)
 に関する概念は持っていない。
-.\"O .SH ERRORS
 .SH エラー
-.TP
-.B EADDRNOTAVAIL
-.\"O Unknown multicast group address passed.
+.TP 
+\fBEADDRNOTAVAIL\fP
 不明なマルチキャストグループアドレスが渡された。
-.TP
-.B EFAULT
-.\"O User passed invalid memory address.
+.TP 
+\fBEFAULT\fP
 ユーザが渡したメモリアドレスが不正。
-.TP
-.B EINVAL
-.\"O Invalid argument.
+.TP 
+\fBEINVAL\fP
 引き数が不正。
-.TP
-.B EMSGSIZE
-.\"O Packet is bigger than interface MTU.
+.TP 
+\fBEMSGSIZE\fP
 パケットがインターフェースの MTU より大きい。
-.TP
-.B ENETDOWN
-.\"O Interface is not up.
+.TP 
+\fBENETDOWN\fP
 インターフェースが up でない。
-.TP
-.B ENOBUFS
-.\"O Not enough memory to allocate the packet.
+.TP 
+\fBENOBUFS\fP
 パケットに割り当てるメモリが足りない。
-.TP
-.B ENODEV
-.\"O Unknown device name or interface index specified in interface address.
-デバイス名が不明。あるいはインターフェースアドレスで指定された
-インターフェースインデックスが不明。
-.TP
-.B ENOENT
-.\"O No packet received.
+.TP 
+\fBENODEV\fP
+デバイス名が不明。あるいはインターフェースアドレスで指定された インターフェースインデックスが不明。
+.TP 
+\fBENOENT\fP
 パケットを一つも受信していない。
-.TP
-.B ENOTCONN
-.\"O No interface address passed.
+.TP 
+\fBENOTCONN\fP
 インターフェースアドレスが渡されなかった。
-.TP
-.B ENXIO
-.\"O Interface address contained an invalid interface index.
+.TP 
+\fBENXIO\fP
 インターフェースアドレスに不正なインターフェースインデックスが含まれている。
-.TP
-.B EPERM
-.\"O User has insufficient privileges to carry out this operation.
+.TP 
+\fBEPERM\fP
 この操作を行うのに必要な権限をユーザが持っていない。
 
-.\"O In addition other errors may be generated by the low-level driver.
 上記以外のエラーが、低レベルのドライバで生成されることがある。
-.\"O .SH VERSIONS
 .SH バージョン
-.\"O .B AF_PACKET
-.\"O is a new feature in Linux 2.2.
-.\"O Earlier Linux versions supported only
-.\"O .BR SOCK_PACKET .
-.B AF_PACKET
-は Linux 2.2 の新機能である。これより古いバージョンの Linux では
-.B SOCK_PACKET
+\fBAF_PACKET\fP は Linux 2.2 の新機能である。これより古いバージョンの Linux では \fBSOCK_PACKET\fP
 のみをサポートしていた。
 .PP
-.\"O The include file
-.\"O .I <netpacket/packet.h>
-.\"O is present since glibc 2.1.
-.\"O Older systems need:
-インクルードファイル
-.I <netpacket/packet.h>
-が存在するのは glibc 2.1 以降である。
+インクルードファイル \fI<netpacket/packet.h>\fP が存在するのは glibc 2.1 以降である。
 それ以前のシステムでは以下のようにする必要がある:
 .sp
 .in +4n
@@ -535,82 +180,23 @@ packet ソケットは、パケットをデバイスドライバに渡すとき
 #include <linux/if_ether.h>  /* The L2 protocols */
 .fi
 .in
-.\"O .SH NOTES
 .SH 注意
-.\"O For portable programs it is suggested to use
-.\"O .B AF_PACKET
-.\"O via
-.\"O .BR pcap (3);
-.\"O although this only covers a subset of the
-.\"O .B AF_PACKET
-.\"O features.
-移植性の必要なプログラムでは、
-.BR pcap (3)
-経由で
-.B AF_PACKET
-を用いることをお薦めする。ただし、この方法では
-.B AF_PACKET
-の機能すべてを利用することはできない。
+移植性の必要なプログラムでは、 \fBpcap\fP(3)  経由で \fBAF_PACKET\fP を用いることをお薦めする。ただし、この方法では
+\fBAF_PACKET\fP の機能すべてを利用することはできない。
 
-.\"O The
-.\"O .B SOCK_DGRAM
-.\"O packet sockets make no attempt to create or parse the IEEE 802.2 LLC
-.\"O header for a IEEE 802.3 frame.
-.\"O When
-.\"O .B ETH_P_802_3
-.\"O is specified as protocol for sending the kernel creates the
-.\"O 802.3 frame and fills out the length field; the user has to supply the LLC
-.\"O header to get a fully conforming packet.
-.\"O Incoming 802.3 packets are not multiplexed on the DSAP/SSAP protocol
-.\"O fields; instead they are supplied to the user as protocol
-.\"O .B ETH_P_802_2
-.\"O with the LLC header prepended.
-.\"O It is thus not possible to bind to
-.\"O .BR ETH_P_802_3 ;
-.\"O bind to
-.\"O .B ETH_P_802_2
-.\"O instead and do the protocol multiplex yourself.
-.\"O The default for sending is the standard Ethernet DIX
-.\"O encapsulation with the protocol filled in.
-.B SOCK_DGRAM
-packet ソケットは、IEEE 802.3 フレームの IEEE 802.2 LLC ヘッダの
-生成や解析を行おうとしない。
-.B ETH_P_802_3
-が送信プロトコルに指定されると、カーネルは 802.3 フレームを
-生成して length フィールドに書き込む。
-完全に準拠したパケットを得るためにはユーザーが LLC ヘッダを
-与える必要がある。到着した 802.3 パケットでは、
-DSAP/SSAP protocol の各フィールドは多重化 (multiplex) されていない。
-代わりにこれらは LLC ヘッダが前置された
-.B ETH_P_802_2
-プロトコルとして与えられる。したがって、
-.B ETH_P_802_3
-にバインドすることはできない。かわりに
-.B ETH_P_802_2
-にバインドし、自分自身でプロトコルの多重化を行うこと。
-送信のデフォルトは、プロトコルフィールドを持つ
-標準の Ethernet DIX encapsulation である。
+\fBSOCK_DGRAM\fP packet ソケットは、IEEE 802.3 フレームの IEEE 802.2 LLC ヘッダの
+生成や解析を行おうとしない。 \fBETH_P_802_3\fP が送信プロトコルに指定されると、カーネルは 802.3 フレームを 生成して length
+フィールドに書き込む。 完全に準拠したパケットを得るためにはユーザーが LLC ヘッダを 与える必要がある。到着した 802.3 パケットでは、
+DSAP/SSAP protocol の各フィールドは多重化 (multiplex) されていない。 代わりにこれらは LLC ヘッダが前置された
+\fBETH_P_802_2\fP プロトコルとして与えられる。したがって、 \fBETH_P_802_3\fP にバインドすることはできない。かわりに
+\fBETH_P_802_2\fP にバインドし、自分自身でプロトコルの多重化を行うこと。 送信のデフォルトは、プロトコルフィールドを持つ 標準の
+Ethernet DIX encapsulation である。
 
-.\"O Packet sockets are not subject to the input or output firewall chains.
 packet ソケットは入出力の firewall chain に影響をうけない。
-.\"O .SS Compatibility
 .SS 移植性
-.\"O In Linux 2.0, the only way to get a packet socket was by calling
-.\"O .BI "socket(AF_INET, SOCK_PACKET, " protocol )\fR.
-.\"O This is still supported but strongly deprecated.
-.\"O The main difference between the two methods is that
-.\"O .B SOCK_PACKET
-.\"O uses the old
-.\"O .I struct sockaddr_pkt
-.\"O to specify an interface, which doesn't provide physical layer
-.\"O independence.
-Linux 2.0 では、 packet ソケットを得る方法は
-.BI "socket(AF_INET, SOCK_PACKET, " protocol )\fR
-を呼ぶやり方しかなかった。この方法はまだサポートされているが、
-用いないことを強く推奨する。現在の方法との主な違いは、
-.B SOCK_PACKET
-ではインターフェースの指定に古い
-.I struct sockaddr_pkt
+Linux 2.0 では、 packet ソケットを得る方法は \fBsocket(AF_INET, SOCK_PACKET,
+\fP\fIprotocol\fP\fB)\fP を呼ぶやり方しかなかった。この方法はまだサポートされているが、 用いないことを強く推奨する。現在の方法との主な違いは、
+\fBSOCK_PACKET\fP ではインターフェースの指定に古い \fIstruct sockaddr_pkt\fP
 を用いる点である。これには物理層からの独立性がない。
 
 .in +4n
@@ -623,35 +209,13 @@ struct sockaddr_pkt {
 .fi
 .in
 
-.\"O .I spkt_family
-.\"O contains
-.\"O the device type,
-.\"O .I spkt_protocol
-.\"O is the IEEE 802.3 protocol type as defined in
-.\"O .I <sys/if_ether.h>
-.\"O and
-.\"O .I spkt_device
-.\"O is the device name as a null-terminated string, for example, eth0.
-.I spkt_family
-はデバイスのタイプ、
-.I spkt_protocol
-は
-.I <sys/if_ether.h>
-で定義されている IEEE 802.3 プロトコルタイプ、
-.I spkt_device
-はデバイスの名前を NULL 終端された文字列で与えたもの (例: eth0) である。
+\fIspkt_family\fP はデバイスのタイプ、 \fIspkt_protocol\fP は \fI<sys/if_ether.h>\fP
+で定義されている IEEE 802.3 プロトコルタイプ、 \fIspkt_device\fP はデバイスの名前を NULL 終端された文字列で与えたもの
+(例: eth0) である。
 
-.\"O This structure is obsolete and should not be used in new code.
-この構造体は obsolete であり、
-新しくコードを書く時には用いるべきでない。
-.\"O .SH BUGS
+この構造体は obsolete であり、 新しくコードを書く時には用いるべきでない。
 .SH バグ
-.\"O glibc 2.1 does not have a define for
-.\"O .BR SOL_PACKET .
-.\"O The suggested workaround is to use:
-glibc 2.1 には
-.B SOL_PACKET
-の定義がない。回避策としては、以下のようにするとよい。
+glibc 2.1 には \fBSOL_PACKET\fP の定義がない。回避策としては、以下のようにするとよい。
 .in +4n
 .nf
 
@@ -661,56 +225,24 @@ glibc 2.1 には
 
 .fi
 .in
-.\"O This is fixed in later glibc versions and also does not occur on
-.\"O libc5 systems.
-この問題は新しいバージョンの glibc では修正されている。
-libc5 のシステムにはこの問題はない。
+この問題は新しいバージョンの glibc では修正されている。 libc5 のシステムにはこの問題はない。
 
-.\"O The IEEE 802.2/803.3 LLC handling could be considered as a bug.
 IEEE 802.2/803.3 の LLC の扱い方は、バグと考えても良いだろう。
 
-.\"O Socket filters are not documented.
 ソケットフィルターについて記載されていない。
 
-.\"O The
-.\"O .B MSG_TRUNC
-.\"O .BR recvmsg (2)
-.\"O extension is an ugly hack and should be replaced by a control message.
-.\"O There is currently no way to get the original destination address of
-.\"O packets via
-.\"O .BR SOCK_DGRAM .
-.B MSG_TRUNC
-.BR recvmsg (2)
-拡張は非常にまずい対処であり、制御メッセージで置き換えるべきである。
-今のところ
-.B SOCK_DGRAM
-経由でパケットについていた宛先アドレスを得る方法がない。
-.\"O .\" .SH CREDITS
-.\" .SH 著者
-.\"O .\" This man page was written by Andi Kleen with help from Matthew Wilcox.
-.\"O .\" AF_PACKET in Linux 2.2 was implemented
-.\"O .\" by Alexey Kuznetsov, based on code by Alan Cox and others.
-.\" この man ページは Matthew Wilcox の助力のもとに Andi Kleen が書いた。
-.\" Linux 2.2 の AF_PACKET は、
-.\" Alan Cox たちのコードをもとにして Alexey Kuznetsov が実装した。
-.\"O .SH SEE ALSO
+.\" .SH CREDITS
+.\" This man page was written by Andi Kleen with help from Matthew Wilcox.
+.\" AF_PACKET in Linux 2.2 was implemented
+.\" by Alexey Kuznetsov, based on code by Alan Cox and others.
+\fBMSG_TRUNC\fP \fBrecvmsg\fP(2)  拡張は非常にまずい対処であり、制御メッセージで置き換えるべきである。 今のところ
+\fBSOCK_DGRAM\fP 経由でパケットについていた宛先アドレスを得る方法がない。
 .SH 関連項目
-.BR socket (2),
-.BR pcap (3),
-.BR capabilities (7),
-.BR ip (7),
-.BR raw (7),
-.BR socket (7)
+\fBsocket\fP(2), \fBpcap\fP(3), \fBcapabilities\fP(7), \fBip\fP(7), \fBraw\fP(7),
+\fBsocket\fP(7)
 
-.\"O RFC\ 894 for the standard IP Ethernet encapsulation.
 標準 IP Ethernet encapsulation に関する情報は RFC\ 894 にある。
 
-.\"O RFC\ 1700 for the IEEE 802.3 IP encapsulation.
 IEEE 802.3 IP encapsulation に関する情報は RFC\ 1700 にある。
 
-.\"O The
-.\"O .I <linux/if_ether.h>
-.\"O include file for physical layer protocols.
-物理層のプロトコルに関する記述は
-.I <linux/if_ether.h>
-インクルードファイルにある。
+物理層のプロトコルに関する記述は \fI<linux/if_ether.h>\fP インクルードファイルにある。
index 8faf460..821c9d0 100644 (file)
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
 .\"
-.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved.
-.\" Translated 2005-12-26, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\"*******************************************************************
 .\"
-.TH PIPE 7 2005-12-08 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PIPE 7 2005\-12\-08 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O pipe \- overview of pipes and FIFOs
 pipe \- パイプと FIFO の概要
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O Pipes and FIFOs (also known as named pipes)
-.\"O provide a unidirectional interprocess communication channel.
-.\"O A pipe has a
-.\"O .I read end
-.\"O and a
-.\"O .IR "write end" .
-.\"O Data written to the write end of a pipe can be read
-.\"O from the read end of the pipe.
-パイプと FIFO (名前付きパイプともいう) は、
-単方向のプロセス間通信チャネルを提供する。
-パイプには「読み出し側」と「書き込み側」がある。
-パイプの書き込み側で書き込まれたデータは、
-パイプの読み出し側から読み出すことができる。
+パイプと FIFO (名前付きパイプともいう) は、 単方向のプロセス間通信チャネルを提供する。 パイプには「読み出し側」と「書き込み側」がある。
+パイプの書き込み側で書き込まれたデータは、 パイプの読み出し側から読み出すことができる。
 
-.\"O A pipe is created using
-.\"O .BR pipe (2),
-.\"O which creates a new pipe and returns two file descriptors,
-.\"O one referring to the read end of the pipe,
-.\"O the other referring to the write end.
-.\"O Pipes can be used to create a communication channel between related
-.\"O processes; see
-.\"O .BR pipe (2)
-.\"O for an example.
-パイプを作成するには
-.BR pipe (2)
-を使用する。
-.BR pipe (2)
-は新しいパイプを作成し、ファイル・ディスクリプタを二つ返す。
-ディスクリプタのうち、一方はパイプの読み出し側を、もう一方は
-書き込み側を参照している。
-パイプは関連するプロセス間の通信を作成するのに使用できる。
-例は
-.BR pipe (2)
-を参照。
+パイプを作成するには \fBpipe\fP(2)  を使用する。 \fBpipe\fP(2)  は新しいパイプを作成し、ファイル・ディスクリプタを二つ返す。
+ディスクリプタのうち、一方はパイプの読み出し側を、もう一方は 書き込み側を参照している。 パイプは関連するプロセス間の通信を作成するのに使用できる。
+例は \fBpipe\fP(2)  を参照。
 
-.\"O A FIFO (short for First In First Out) has a name within the file
-.\"O system (created using
-.\"O .BR mkfifo (3)),
-.\"O and is opened using
-.\"O .BR open (2).
-.\"O Any process may open a FIFO, assuming the file permissions allow it.
-FIFO (First In First Out の省略) はファイルシステムでの名前を持ち、
-.BR open (2)
-を使ってオープンできる
-.RB ( mkfifo (3)
-を使って作成される)。
-どんなプロセスでも、ファイルのアクセス許可があれば FIFO をオープンする
-ことができる。
-.\"O The read end is opened using the
-.\"O .B O_RDONLY
-.\"O flag; the write end is opened using the
-.\"O .B O_WRONLY
-.\"O flag.
-.\"O See
-.\"O .BR fifo (7)
-.\"O for further details.
-読み出し側をオープンするには
-.B O_RDONLY
-フラグを使用し、書き込み側をオープンするには
-.B O_WRONLY
-フラグを使用する。詳細は
-.BR fifo (7)
-を参照。
-.\"O .IR Note :
-.\"O although FIFOs have a pathname in the file system,
-.\"O I/O on FIFOs does not involve operations on the underlying device
-.\"O (if there is one).
-【注意】
-FIFO はファイルシステム内のパス名を持つが、
-FIFO に対して入出力を行っても、(ファイルシステムが存在するデバイスが
-あったとしても) そのデバイスに対する操作は発生しない。
-.\"O .SS "I/O on Pipes and FIFOs"
+FIFO (First In First Out の省略) はファイルシステムでの名前を持ち、 \fBopen\fP(2)  を使ってオープンできる
+(\fBmkfifo\fP(3)  を使って作成される)。 どんなプロセスでも、ファイルのアクセス許可があれば FIFO をオープンする ことができる。
+読み出し側をオープンするには \fBO_RDONLY\fP フラグを使用し、書き込み側をオープンするには \fBO_WRONLY\fP フラグを使用する。詳細は
+\fBfifo\fP(7)  を参照。 【注意】 FIFO はファイルシステム内のパス名を持つが、 FIFO
+に対して入出力を行っても、(ファイルシステムが存在するデバイスが あったとしても) そのデバイスに対する操作は発生しない。
 .SS "パイプや FIFO に対する入出力"
-.\"O The only difference between pipes and FIFOs is the manner in which
-.\"O they are created and opened.
-.\"O Once these tasks have been accomplished,
-.\"O I/O on pipes and FIFOs has exactly the same semantics.
-パイプと FIFO の違いは作成やオープンの方法だけである。
-これらの操作が完了した後は、パイプと FIFO に対する入出力は
+パイプと FIFO の違いは作成やオープンの方法だけである。 これらの操作が完了した後は、パイプと FIFO に対する入出力は
 全く同じ仕組みで行われる。
 
-.\"O If a process attempts to read from an empty pipe, then
-.\"O .BR read (2)
-.\"O will block until data is available.
-.\"O If a process attempts to write to a full pipe (see below), then
-.\"O .BR write (2)
-.\"O blocks until sufficient data has been read from the pipe
-.\"O to allow the write to complete.
-.\"O Nonblocking I/O is possible by using the
-.\"O .BR fcntl (2)
-.\"O .B F_SETFL
-.\"O operation to enable the
-.\"O .B O_NONBLOCK
-.\"O open file status flag.
-プロセスが空のパイプから読み出しを行おうとした場合、
-.BR read (2)
-はデータが読み出し可能になるまで停止する。
-プロセスがフル状態のパイプに書き込みを行おうとした場合、
-.BR write (2)
-は書き込みを完了するのに十分な量のパイプからの読み出しが
-行われるまで停止する。
-非停止 (nonblocking) I/O を使うこともできる。
-非停止 I/O を使うには、
-.BR fcntl (2)
-.B F_SETFL
-操作を使って、
-.B O_NONBLOCK
-オープンファイル状態フラグを有効にする。
+プロセスが空のパイプから読み出しを行おうとした場合、 \fBread\fP(2)  はデータが読み出し可能になるまで停止する。
+プロセスがフル状態のパイプに書き込みを行おうとした場合、 \fBwrite\fP(2)  は書き込みを完了するのに十分な量のパイプからの読み出しが
+行われるまで停止する。 非停止 (nonblocking) I/O を使うこともできる。 非停止 I/O を使うには、 \fBfcntl\fP(2)
+\fBF_SETFL\fP 操作を使って、 \fBO_NONBLOCK\fP オープンファイル状態フラグを有効にする。
 
-.\"O The communication channel provided by a pipe is a
-.\"O .IR "byte stream" :
-.\"O there is no concept of message boundaries.
-パイプにより提供される通信チャネルは「バイトストリーム」であり、
-メッセージ境界の概念はない。
+パイプにより提供される通信チャネルは「バイトストリーム」であり、 メッセージ境界の概念はない。
 
-.\"O If all file descriptors referring to the write end of a pipe
-.\"O have been closed, then an attempt to
-.\"O .BR read (2)
-.\"O from the pipe will see end-of-file
-.\"O .RB ( read (2)
-.\"O will return 0).
-パイプの書き込み側を参照しているファイル・ディスクリプタが
-すべてクローズされた後で、そのパイプから
-.BR read (2)
-を行おうとした場合、
-end-of-file (ファイル末尾) が見える
-.RB ( read (2)
-は 0 を返す)。
-.\"O If all file descriptors referring to the read end of a pipe
-.\"O have been closed, then a
-.\"O .BR write (2)
-.\"O will cause a
-.\"O .B SIGPIPE
-.\"O signal to be generated for the calling process.
-パイプの読み出し側を参照しているファイル・ディスクリプタが
-すべてクローズされた後で、
-.BR write (2)
-を行うと、呼び出し元プロセスに
-.B SIGPIPE
-シグナルが送られる。
-.\"O If the calling process is ignoring this signal, then
-.\"O .BR write (2)
-.\"O fails with the error
-.\"O .BR EPIPE .
-呼び出し元プロセスがこのシグナルを無視しているときには、
-.BR write (2)
-はエラー
-.B EPIPE
-で失敗する。
-.\"O An application that uses
-.\"O .BR pipe (2)
-.\"O and
-.\"O .BR fork (2)
-.\"O should use suitable
-.\"O .BR close (2)
-.\"O calls to close unnecessary duplicate file descriptors;
-.\"O this ensures that end-of-file and
-.\"O .BR SIGPIPE / EPIPE
-.\"O are delivered when appropriate.
-.BR pipe (2)
-と
-.BR fork (2)
-を使用するアプリケーションでは、
-.BR close (2)
-を適切に使って不必要なファイル・ディスクリプタの複製を
-クローズすべきである。こうすることで、必要な時に確実に
-end-of-file や
-.BR SIGPIPE / EPIPE
-が配送されるようになる。
+パイプの書き込み側を参照しているファイル・ディスクリプタが すべてクローズされた後で、そのパイプから \fBread\fP(2)  を行おうとした場合、
+end\-of\-file (ファイル末尾) が見える (\fBread\fP(2)  は 0 を返す)。
+パイプの読み出し側を参照しているファイル・ディスクリプタが すべてクローズされた後で、 \fBwrite\fP(2)  を行うと、呼び出し元プロセスに
+\fBSIGPIPE\fP シグナルが送られる。 呼び出し元プロセスがこのシグナルを無視しているときには、 \fBwrite\fP(2)  はエラー
+\fBEPIPE\fP で失敗する。 \fBpipe\fP(2)  と \fBfork\fP(2)  を使用するアプリケーションでは、 \fBclose\fP(2)
+を適切に使って不必要なファイル・ディスクリプタの複製を クローズすべきである。こうすることで、必要な時に確実に end\-of\-file や
+\fBSIGPIPE\fP/\fBEPIPE\fP が配送されるようになる。
 
-.\"O It is not possible to apply
-.\"O .BR lseek (2)
-.\"O to a pipe.
-パイプには
-.BR lseek (2)
-を行うことはできない。
-.\"O .SS "Pipe Capacity"
+パイプには \fBlseek\fP(2)  を行うことはできない。
 .SS パイプの容量
-.\"O A pipe has a limited capacity.
-.\"O If the pipe is full, then a
-.\"O .BR write (2)
-.\"O will block or fail, depending on whether the
-.\"O .B O_NONBLOCK
-.\"O flag is set (see below).
-.\"O Different implementations have different limits for the pipe capacity.
-.\"O Applications should not rely on a particular capacity:
-.\"O an application should be designed so that a reading process consumes data
-.\"O as soon as it is available,
-.\"O so that a writing process does not remain blocked.
-パイプの容量には上限がある。
-パイプがフルの場合、
-.BR write (2)
-は停止したり失敗したりする。どちらになるかは
-.B O_NONBLOCK
-フラグがセットされているかどうかに依存する (下記参照)。
-実装により、パイプの容量の上限は異なる。
-アプリケーションは特定の容量を前提にすべきではない。
-書き込み側のプロセスが停止したままにならないよう、
-読み出し側のプロセスはデータが利用可能になったらできるだけすぐに
-読み出しを行うように、アプリケーションを設計すべきである。
+パイプの容量には上限がある。 パイプがフルの場合、 \fBwrite\fP(2)  は停止したり失敗したりする。どちらになるかは \fBO_NONBLOCK\fP
+フラグがセットされているかどうかに依存する (下記参照)。 実装により、パイプの容量の上限は異なる。
+アプリケーションは特定の容量を前提にすべきではない。 書き込み側のプロセスが停止したままにならないよう、
+読み出し側のプロセスはデータが利用可能になったらできるだけすぐに 読み出しを行うように、アプリケーションを設計すべきである。
 
-.\"O In Linux versions before 2.6.11, the capacity of a pipe was the same as
-.\"O the system page size (e.g., 4096 bytes on i386).
-.\"O Since Linux 2.6.11, the pipe capacity is 65536 bytes.
-バージョン 2.6.11 より前の Linux ではパイプの容量はシステムのページサイズ
-と同じであった (例えば i386 では 4096 バイト)。
+バージョン 2.6.11 より前の Linux ではパイプの容量はシステムのページサイズ と同じであった (例えば i386 では 4096 バイト)。
 Linux 2.6.11 以降では、パイプの容量は 65536 バイトである。
-.\"O .SS PIPE_BUF
 .SS PIPE_BUF
-.\"O POSIX.1-2001 says that
-.\"O .BR write (2)s
-.\"O of less than
-.\"O .B PIPE_BUF
-.\"O bytes must be atomic: the output data is written to the pipe as a
-.\"O contiguous sequence.
-.\"O Writes of more than
-.\"O .B PIPE_BUF
-.\"O bytes may be nonatomic: the kernel may interleave the data
-.\"O with data written by other processes.
-.\"O POSIX.1-2001 requires
-.\"O .B PIPE_BUF
-.\"O to be at least 512 bytes.
-.\"O (On Linux,
-.\"O .B PIPE_BUF
-.\"O is 4096 bytes.)
-POSIX.1-2001 では、
-.B PIPE_BUF
-バイト以下の
-.BR write (2)
-は atomic に行われること、つまりパイプへの出力データの書き込みは
-連続したシーケンスとして行われることを必須としている (MUST)。
-.B PIPE_BUF
-バイトより多くのデータを書き込み場合は atomic とはならない、
-つまりパイプへの他のプロセスによるデータの書き込みが間に入る
-可能性がある。
-POSIX.1-2001 の仕様では、
-.B PIPE_BUF
-は最小でも 512 バイトであることが要求されている
-(Linux では
-.B PIPE_BUF
-は 4096 バイトである)。
-.\"O The precise semantics depend on whether the file descriptor is nonblocking
-.\"O .RB ( O_NONBLOCK ),
-.\"O whether there are multiple writers to the pipe, and on
-.\"O .IR n ,
-.\"O the number of bytes to be written:
-正確な動作は、ファイル・ディスクリプタが nonblocking
-.RB ( O_NONBLOCK )
-かどうか、パイプへの書き込みが複数から行われるかどうか、および
-書き込みを行うバイト数
-.I n
-により決定される。
-.TP
-.\"O \fBO_NONBLOCK\fP disabled, \fIn\fP <= \fBPIPE_BUF\fP
+POSIX.1\-2001 では、 \fBPIPE_BUF\fP バイト以下の \fBwrite\fP(2)  は atomic
+に行われること、つまりパイプへの出力データの書き込みは 連続したシーケンスとして行われることを必須としている (MUST)。 \fBPIPE_BUF\fP
+バイトより多くのデータを書き込み場合は atomic とはならない、 つまりパイプへの他のプロセスによるデータの書き込みが間に入る 可能性がある。
+POSIX.1\-2001 の仕様では、 \fBPIPE_BUF\fP は最小でも 512 バイトであることが要求されている (Linux では
+\fBPIPE_BUF\fP は 4096 バイトである)。 正確な動作は、ファイル・ディスクリプタが nonblocking (\fBO_NONBLOCK\fP)
+かどうか、パイプへの書き込みが複数から行われるかどうか、および 書き込みを行うバイト数 \fIn\fP により決定される。
+.TP 
 \fBO_NONBLOCK\fP 無効, \fIn\fP <= \fBPIPE_BUF\fP
-.\"O All
-.\"O .I n
-.\"O bytes are written atomically;
-.\"O .BR write (2)
-.\"O may block if there is not room for
-.\"O .I n
-.\"O bytes to be written immediately
-.I n
-バイト全部の書き込みが atomic に行われる。
-.I n
-バイト分をすぐに書き込む余地がない場合は
-.BR write (2)
-は停止 (block) することがある。
-.TP
-.\"O \fBO_NONBLOCK\fP enabled, \fIn\fP <= \fBPIPE_BUF\fP
+\fIn\fP バイト全部の書き込みが atomic に行われる。 \fIn\fP バイト分をすぐに書き込む余地がない場合は \fBwrite\fP(2)  は停止
+(block) することがある。
+.TP 
 \fBO_NONBLOCK\fP 有効, \fIn\fP <= \fBPIPE_BUF\fP
-.\"O If there is room to write
-.\"O .I n
-.\"O bytes to the pipe, then
-.\"O .BR write (2)
-.\"O succeeds immediately, writing all
-.\"O .I n
-.\"O bytes; otherwise
-.\"O .BR write (2)
-.\"O fails, with
-.\"O .I errno
-.\"O set to
-.\"O .BR EAGAIN .
-パイプに
-.I n
-バイトを書き込む余地がある場合は、
-.I n
-バイト全部がすぐに書き込まれる。
-余地がない場合は、
-.BR write (2)
-は失敗し、
-.I errno
-に
-.B EAGAIN
-がセットされる。
-.TP
-.\"O \fBO_NONBLOCK\fP disabled, \fIn\fP > \fBPIPE_BUF\fP
+パイプに \fIn\fP バイトを書き込む余地がある場合は、 \fIn\fP バイト全部がすぐに書き込まれる。 余地がない場合は、 \fBwrite\fP(2)
+は失敗し、 \fIerrno\fP に \fBEAGAIN\fP がセットされる。
+.TP 
 \fBO_NONBLOCK\fP 無効, \fIn\fP > \fBPIPE_BUF\fP
-.\"O The write is nonatomic: the data given to
-.\"O .BR write (2)
-.\"O may be interleaved with
-.\"O .BR write (2)s
-.\"O by other process;
-.\"O the
-.\"O .BR write (2)
-.\"O blocks until
-.\"O .I n
-.\"O bytes have been written.
-書き込みは atomic とはならない。
-.BR write (2)
-に渡されたデータの間に、他のプロセスにより
-.BR write (2)
-されたデータが入ることがある。
-.BR write (2)
-は
-.I n
-バイトの書き込みが完了するまで停止する。
-.TP
-.\"O \fBO_NONBLOCK\fP enabled, \fIn\fP > \fBPIPE_BUF\fP
+書き込みは atomic とはならない。 \fBwrite\fP(2)  に渡されたデータの間に、他のプロセスにより \fBwrite\fP(2)
+されたデータが入ることがある。 \fBwrite\fP(2)  は \fIn\fP バイトの書き込みが完了するまで停止する。
+.TP 
 \fBO_NONBLOCK\fP 有効, \fIn\fP > \fBPIPE_BUF\fP
-.\"O If the pipe is full, then
-.\"O .BR write (2)
-.\"O fails, with
-.\"O .I errno
-.\"O set to
-.\"O .BR EAGAIN .
-.\"O Otherwise, from 1 to
-.\"O .I n
-.\"O bytes may be written (i.e., a "partial write" may occur;
-.\"O the caller should check the return value from
-.\"O .BR write (2)
-.\"O to see how many bytes were actually written),
-.\"O and these bytes may be interleaved with writes by other processes.
-パイプがフルの場合、
-.BR write (2)
-は失敗し、
-.I errno
-に
-.B EAGAIN
-がセットされる。
-それ以外の場合、1 バイト以上
-.I n
-バイト以下のデータが書き込まれる
-(つまり「一部分だけ書き込まれる」場合もあり得る)。
-呼び出し元は
-.BR write (2)
-の返り値を参照し、実際に何バイト書き込まれたのかを確認すべきである。
-また、書き込みに成功したデータも、他のプロセスが書き込んだデータが
+パイプがフルの場合、 \fBwrite\fP(2)  は失敗し、 \fIerrno\fP に \fBEAGAIN\fP がセットされる。 それ以外の場合、1 バイト以上
+\fIn\fP バイト以下のデータが書き込まれる (つまり「一部分だけ書き込まれる」場合もあり得る)。 呼び出し元は \fBwrite\fP(2)
+の返り値を参照し、実際に何バイト書き込まれたのかを確認すべきである。 また、書き込みに成功したデータも、他のプロセスが書き込んだデータが
 間に入ることがある。
-.\"O .SS "Open File Status Flags"
 .SS オープンファイル状態フラグ
-.\"O The only open file status flags that can be meaningfully applied to
-.\"O a pipe or FIFO are
-.\"O .B O_NONBLOCK
-.\"O and
-.\"O .BR O_ASYNC .
-オープンファイル状態フラグのうち、パイプや FIFO に対して意味を持つのは
-.B O_NONBLOCK
-と
-.B O_ASYNC
-だけである。
+オープンファイル状態フラグのうち、パイプや FIFO に対して意味を持つのは \fBO_NONBLOCK\fP と \fBO_ASYNC\fP だけである。
 
-.\"O Setting the
-.\"O .B O_ASYNC
-.\"O flag for the read end of a pipe causes a signal
-.\"O .RB ( SIGIO
-.\"O by default) to be generated when new input becomes available on the pipe
-.\"O (see
-.\"O .BR fcntl (2)
-.\"O for details).
-.\"O On Linux,
-.\"O .B O_ASYNC
-.\"O is supported for pipes and FIFOs only since kernel 2.6.
-パイプの読み出し側に
-.B O_ASYNC
-フラグをセットすると、パイプに新たな入力があるとシグナル (デフォルトでは
-.BR SIGIO )
-が生成される (詳細は
-.BR fcntl (2)
-を参照)。
-Linux では、
-パイプと FIFO に対する
-.B O_ASYNC
-はカーネル 2.6 以降でのみサポートされている。
-.\"O .SS "Portability notes"
+パイプの読み出し側に \fBO_ASYNC\fP フラグをセットすると、パイプに新たな入力があるとシグナル (デフォルトでは \fBSIGIO\fP)
+が生成される (詳細は \fBfcntl\fP(2)  を参照)。 Linux では、 パイプと FIFO に対する \fBO_ASYNC\fP はカーネル 2.6
+以降でのみサポートされている。
 .SS 移植に関する注意
-.\"O On some systems (but not Linux), pipes are bidirectional:
-.\"O data can be transmitted in both directions between the pipe ends.
-.\"O According to POSIX.1-2001, pipes only need to be unidirectional.
-.\"O Portable applications should avoid reliance on
-.\"O bidirectional pipe semantics.
-いくつかのシステム (Linux ではない) では、パイプは双方向である、
-つまりパイプの両端間でデータを両方向に送信することができる。
-POSIX.1-2001 では、パイプは一方向の通信だけに対応していればよい。
-移植を考慮したアプリケーションでは、双方向パイプの仕組みを
+いくつかのシステム (Linux ではない) では、パイプは双方向である、 つまりパイプの両端間でデータを両方向に送信することができる。
+POSIX.1\-2001 では、パイプは一方向の通信だけに対応していればよい。 移植を考慮したアプリケーションでは、双方向パイプの仕組みを
 前提にすべきではない。
-.\"O .SH "SEE ALSO"
 .SH 関連項目
-.BR dup (2),
-.BR fcntl (2),
-.BR open (2),
-.BR pipe (2),
-.BR poll (2),
-.BR select (2),
-.BR socketpair (2),
-.BR stat (2),
-.BR mkfifo (3),
-.BR epoll (7),
-.BR fifo (7)
+\fBdup\fP(2), \fBfcntl\fP(2), \fBopen\fP(2), \fBpipe\fP(2), \fBpoll\fP(2), \fBselect\fP(2),
+\fBsocketpair\fP(2), \fBstat\fP(2), \fBmkfifo\fP(3), \fBepoll\fP(7), \fBfifo\fP(7)
diff --git a/draft/man7/posixoptions.7 b/draft/man7/posixoptions.7
new file mode 100644 (file)
index 0000000..9ee2824
--- /dev/null
@@ -0,0 +1,724 @@
+.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH POSIXOPTIONS 7 2007\-12\-21 "" "Linux Programmer's Manual"
+.SH 名前
+posixoptions \- POSIX 標準の選択可能な部分
+.SH 説明
+POSIX 標準 (以下の情報は POSIX.1\-2001 の抜粋) は 互換システムの動作とインタフェースのセットを記述している。
+しかし、多くのインタフェースは選択可能であり、 コンパイル時にインタフェースが使用可能かをテストする機能テストマクロと、 実行時にテストする関数
+\fBsysconf\fP(3), \fBfpathconf\fP(3), \fBpathconf\fP(3), \fBconfstr\fP(3)  がある。
+シェルスクリプトでは \fBgetconf\fP(1)  を使うことができる。 詳細は \fBsysconf\fP(3)  を参照すること。
+.LP
+POSIX 省略形の名前・オプション・オプションを調べるための \fBsysconf\fP(3)  引き数の名前・(可能ならば) 非常に短い説明を記述する。
+より正確な詳細は POSIX 標準自身に書かれている。 POSIX 標準は今日では Web で自由にアクセスできる。
+.SS "ADV \- _POSIX_ADVISORY_INFO \- _SC_ADVISORY_INFO"
+以下のアドバイスの関数が存在する。
+.br
+.nf
+.in +4
+
+\fIposix_fadvise\fP(),
+\fIposix_fallocate\fP(),
+\fIposix_memalign\fP(),
+\fIposix_madvise\fP().
+.br
+.in -4
+.fi
+.SS "AIO \- _POSIX_ASYNCHRONOUS_IO \- _SC_ASYNCHRONOUS_IO"
+ヘッダ \fI<aio.h>\fP が存在する。 以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIaio_cancel\fP(),
+\fIaio_error\fP(),
+\fIaio_fsync\fP(),
+\fIaio_read\fP(),
+\fIaio_return\fP(),
+\fIaio_suspend\fP(),
+\fIaio_write\fP(),
+\fIlio_listio\fP().
+.br
+.in -4
+.fi
+.SS "BAR \- _POSIX_BARRIERS \- _SC_BARRIERS"
+このオプションは \fB_POSIX_THREADS\fP と \fB_POSIX_THREAD_SAFE_FUNCTIONS\fP
+オプションを暗黙の内に指定する。 以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIpthread_barrier_destroy\fP(),
+\fIpthread_barrier_init\fP(),
+\fIpthread_barrier_wait\fP(),
+\fIpthread_barrierattr_destroy\fP(),
+\fIpthread_barrierattr_init\fP().
+.in -4
+.br
+.fi
+.\" .SS "BE"
+.\" Batch environment.
+.\" .SS "CD"
+.\" C development.
+.SS "\-\-\- \- POSIX_CHOWN_RESTRICTED"
+.\" What about lchown() ?
+このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、 root だけがファイル所有者の変更を許され、 root
+以外はファイルのグループを 自分が所属するグループの 1 つに設定することだけができる。 関数 \fIchown\fP(), \fIfchown\fP()
+に影響する。
+.SS "CS \- _POSIX_CLOCK_SELECTION \- _SC_CLOCK_SELECTION"
+このオプションは \fB_POSIX_TIMERS\fP オプションを暗黙の内に指定する。 以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIpthread_condattr_getclock\fP(),
+\fIpthread_condattr_setclock\fP(),
+\fIclock_nanosleep\fP().
+.in -4
+
+.fi
+\fBCLOCK_REALTIME\fP が関数 \fIclock_settime\fP()  で変更された場合、絶対時間に関係する全てのタイマのセットに影響する。
+.SS "CPT \- _POSIX_CPUTIME \- _SC_CPUTIME"
+.\" .SS "FD"
+.\" Fortran development
+.\" .SS "FR"
+.\" Fortran runtime
+clockID CLOCK_PROCESS_CPUTIME_ID がサポートされている。 このクロックの初期値は、各プロセス毎に 0 となる。
+このオプションは \fB_POSIX_TIMERS\fP オプションを暗黙の内に指定する。 関数 \fIclock_getcpuclockid\fP()
+が存在する。
+.SS "\-\-\- \- _POSIX_FILE_LOCKING \- _SC_FILE_LOCKING"
+このオプションは削除された。XPG6 最終版にはない。
+.SS "FSC \- _POSIX_FSYNC \- _SC_FSYNC "
+関数 \fIfsync\fP()  が存在する。
+.SS "IP6 \- _POSIX_IPV6 \- _SC_IPV6"
+Internet Protocol Version 6 がサポートされている。
+.SS "\-\-\- \- _POSIX_JOB_CONTROL \- _SC_JOB_CONTROL"
+このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、 システムは POSIX 方式のジョブ制御を実装しており、
+以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIsetpgid\fP(),
+\fItcdrain\fP(),
+\fItcflush\fP(),
+\fItcgetpgrp\fP(),
+\fItcsendbreak\fP(),
+\fItcsetattr\fP(),
+\fItcsetpgrp\fP().
+.in -4
+.fi
+.SS "MF \- _POSIX_MAPPED_FILES \- _SC_MAPPED_FILES"
+共有メモリがサポートされている。 インクルードファイル \fI<sys/mman.h>\fP が存在する。 次の関数が存在する。
+\fImmap\fP(), \fImsync\fP(), \fImunmap\fP().
+.SS "ML \- _POSIX_MEMLOCK \- _SC_MEMLOCK"
+共有メモリがコア内にロックできる。 次の関数が存在する。 \fImlockall\fP(), \fImunlockall\fP().
+.SS "MR/MLR \- _POSIX_MEMLOCK_RANGE \- _SC_MEMLOCK_RANGE"
+より詳細に、範囲をコア内にロックできる。 次の関数が存在する。 \fImlock\fP(), \fImunlock\fP().
+.SS "MPR \- _POSIX_MEMORY_PROTECTION \- _SC_MEMORY_PROTECTION"
+関数 \fImprotect\fP()  が存在する。
+.SS "MSG \- _POSIX_MESSAGE_PASSING \- _SC_MESSAGE_PASSING"
+インクルードファイル \fI<mqueue.h>\fP が存在する。 以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fImq_close\fP(),
+\fImq_getattr\fP(),
+\fImq_notify\fP(),
+\fImq_open\fP(),
+\fImq_receive\fP(),
+\fImq_send\fP(),
+\fImq_setattr\fP(),
+\fImq_unlink\fP().
+.br
+.in -4
+.fi
+.SS "MON \- _POSIX_MONOTONIC_CLOCK \- _SC_MONOTONIC_CLOCK"
+\fBCLOCK_MONOTONIC\fP がサポートされている。 このオプションは \fB_POSIX_TIMERS\fP オプションを暗黙の内に指定する。
+影響を受ける関数は以下の通り。
+.nf
+.in +4
+
+\fIaio_suspend\fP(),
+\fIclock_getres\fP(),
+\fIclock_gettime\fP(),
+\fIclock_settime\fP(),
+\fItimer_create\fP().
+.in -4
+.fi
+.SS "\-\-\- \- _POSIX_MULTI_PROCESS \- _SC_MULTI_PROCESS"
+.\" .SS "MX"
+.\" IEC 60559 Floating-Point Option.
+このオプションは削除された。XPG6 最終版にはない。
+.SS "\-\-\- \- _POSIX_NO_TRUNC"
+このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、 \fBNAME_MAX\fP
+より長いパス名の構成要素は切り詰められないが、エラーになる。 この設定は構成要素のパス接頭辞に依存する場合もある。
+.SS "PIO \- _POSIX_PRIORITIZED_IO \- _SC_PRIORITIZED_IO"
+このオプションは非同期 I/O の優先度が指定できることを表す。 これは以下の関数に影響する。
+.br
+.nf
+.in +4
+
+\fIaio_read\fP(),
+\fIaio_write\fP().
+.in -4
+.fi
+.SS "PS \- _POSIX_PRIORITY_SCHEDULING \- _SC_PRIORITY_SCHEDULING"
+インクルードファイル \fI<sched.h>\fP が存在する。 以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIsched_get_priority_max\fP(),
+\fIsched_get_priority_min\fP(),
+\fIsched_getparam\fP(),
+\fIsched_getscheduler\fP(),
+\fIsched_rr_get_interval\fP(),
+\fIsched_setparam\fP(),
+\fIsched_setscheduler\fP(),
+\fIsched_yield\fP().
+.in -4
+
+.fi
+\fB_POSIX_SPAWN\fP も有効な場合は、以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIposix_spawnattr_getschedparam\fP(),
+\fIposix_spawnattr_getschedpolicy\fP(),
+\fIposix_spawnattr_setschedparam\fP(),
+\fIposix_spawnattr_setschedpolicy\fP().
+.in -4
+.fi
+.SS "RS \- _POSIX_RAW_SOCKETS"
+raw ソケットがサポートされている。 次の関数が影響を受ける。 \fIgetsockopt\fP(), \fIsetsockopt\fP().
+.SS "\-\-\- \- _POSIX_READER_WRITER_LOCKS \- _SC_READER_WRITER_LOCKS"
+このオプションは \fB_POSIX_THREADS\fP オプションを暗黙の内に指定する。 逆に POSIX.1\-2001 では
+\fB_POSIX_THREADS\fP オプションはこのオプションを暗黙の内に指定する。
+.nf
+以下の関数が存在する。
+.in +4
+
+\fIpthread_rwlock_destroy\fP(),
+\fIpthread_rwlock_init\fP(),
+\fIpthread_rwlock_rdlock\fP(),
+\fIpthread_rwlock_tryrdlock\fP(),
+\fIpthread_rwlock_trywrlock\fP(),
+\fIpthread_rwlock_unlock\fP(),
+\fIpthread_rwlock_wrlock\fP(),
+\fIpthread_rwlockattr_destroy\fP(),
+\fIpthread_rwlockattr_init\fP().
+.in -4
+.fi
+.SS "RTS \- _POSIX_REALTIME_SIGNALS \- _SC_REALTIME_SIGNALS"
+リアルタイムシグナルがサポートされている。 以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIsigqueue\fP(),
+\fIsigtimedwait\fP(),
+\fIsigwaitinfo\fP().
+.br
+.in -4
+.fi
+.SS "\-\-\- \- _POSIX_REGEXP \- _SC_REGEXP"
+このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、 POSIX 正規表現がサポートされ、以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIregcomp\fP(),
+\fIregerror\fP(),
+\fIregexec\fP(),
+\fIregfree\fP().
+.br
+.in -4
+.fi
+.SS "\-\-\- \- _POSIX_SAVED_IDS \- _SC_SAVED_IDS"
+このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、 プロセスは保存 (saved) set\-user\-ID と保存
+set\-group\-ID を持つ。 影響を受ける関数は以下の通り。
+.br
+.nf
+.in +4
+
+\fIexec\fP(),
+\fIkill\fP(),
+\fIseteuid\fP(),
+\fIsetegid\fP(),
+\fIsetgid\fP(),
+\fIsetuid\fP().
+.br
+.in -4
+.fi
+.\" .SS "SD"
+.\" Software development
+.SS "SEM \- _POSIX_SEMAPHORES \- _SC_SEMAPHORES"
+インクルードファイル \fI<semaphore.h>\fP が存在する。 以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIsem_close\fP(),
+\fIsem_destroy\fP(),
+\fIsem_getvalue\fP(),
+\fIsem_init\fP(),
+\fIsem_open\fP(),
+\fIsem_post\fP(),
+\fIsem_trywait\fP(),
+\fIsem_unlink\fP(),
+\fIsem_wait\fP().
+.br
+.in -4
+.fi
+.SS "SHM \- _POSIX_SHARED_MEMORY_OBJECTS \- _SC_SHARED_MEMORY_OBJECTS"
+以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fImmap\fP(),
+\fImunmap\fP(),
+\fIshm_open\fP(),
+\fIshm_unlink\fP().
+.br
+.in -4
+.fi
+.SS "\-\-\- \- _POSIX_SHELL \- _SC_SHELL"
+このオプションが有効な場合 (POSIX.1\-2001 では常に有効)、関数 \fIsystem\fP()  が存在する。
+.SS "SPN \- _POSIX_SPAWN \- _SC_SPAWN"
+このオプションは、例えば MMU が存在しないなどの理由によって、 \fIfork\fP()  を使用することが難しいか不可能という状況で、
+プロセス生成をサポートすることを表す。 \fB_POSIX_SPAWN\fP が有効な場合、インクルードファイル \fI<spawn.h>\fP
+と、以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIposix_spawn\fP(),
+\fIposix_spawn_file_actions_addclose\fP(),
+\fIposix_spawn_file_actions_adddup2\fP(),
+\fIposix_spawn_file_actions_addopen\fP(),
+\fIposix_spawn_file_actions_destroy\fP(),
+\fIposix_spawn_file_actions_init\fP(),
+\fIposix_spawnattr_destroy\fP(),
+\fIposix_spawnattr_getsigdefault\fP(),
+\fIposix_spawnattr_getflags\fP(),
+\fIposix_spawnattr_getpgroup\fP(),
+\fIposix_spawnattr_getsigmask\fP(),
+\fIposix_spawnattr_init\fP(),
+\fIposix_spawnattr_setsigdefault\fP(),
+\fIposix_spawnattr_setflags\fP(),
+\fIposix_spawnattr_setpgroup\fP(),
+\fIposix_spawnattr_setsigmask\fP(),
+\fIposix_spawnp\fP().
+.in -4
+.br
+.fi
+\fB_POSIX_PRIORITY_SCHEDULING\fP も有効な場合、以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIposix_spawnattr_getschedparam\fP(),
+\fIposix_spawnattr_getschedpolicy\fP(),
+\fIposix_spawnattr_setschedparam\fP(),
+\fIposix_spawnattr_setschedpolicy\fP().
+.in -4
+.fi
+.SS "SPI \- _POSIX_SPIN_LOCKS \- _SC_SPIN_LOCKS"
+このオプションは \fB_POSIX_THREADS\fP と \fB_POSIX_THREAD_SAFE_FUNCTIONS\fP
+オプションを暗黙の内に指定する。 以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIpthread_spin_destroy\fP(),
+\fIpthread_spin_init\fP(),
+\fIpthread_spin_lock\fP(),
+\fIpthread_spin_trylock\fP(),
+\fIpthread_spin_unlock\fP().
+.in -4
+.br
+.fi
+.SS "SS \- _POSIX_SPORADIC_SERVER \- _SC_SPORADIC_SERVER"
+スケジューリングポリシー \fBSCHED_SPORADIC\fP がサポートされている。 このオプションは
+\fB_POSIX_PRIORITY_SCHEDULING\fP オプションを暗黙の内に指定する。 影響を受ける関数は以下の通り。
+.br
+.nf
+.in +4
+
+\fIsched_setparam\fP(),
+\fIsched_setscheduler\fP().
+.in -4
+.br
+.fi
+.SS "SIO \- _POSIX_SYNCHRONIZED_IO \- _SC_SYNCHRONIZED_IO"
+影響を受ける関数は以下の通り。 \fIopen\fP(), \fImsync\fP(), \fIfsync\fP(), \fIfdatasync\fP().
+.SS "TSA \- _POSIX_THREAD_ATTR_STACKADDR \- _SC_THREAD_ATTR_STACKADDR"
+影響を受ける関数は以下の通り。
+.br
+.nf
+.in +4
+
+\fIpthread_attr_getstack\fP(),
+\fIpthread_attr_getstackaddr\fP(),
+\fIpthread_attr_setstack\fP(),
+\fIpthread_attr_setstackaddr\fP().
+.in -4
+.br
+.fi
+.SS "TSS \- _POSIX_THREAD_ATTR_STACKSIZE \- _SC_THREAD_ATTR_STACKSIZE"
+影響を受ける関数は以下の通り。
+.br
+.nf
+.in +4
+
+\fIpthread_attr_getstack\fP(),
+\fIpthread_attr_getstacksize\fP(),
+\fIpthread_attr_setstack\fP(),
+\fIpthread_attr_setstacksize\fP().
+.in -4
+.br
+.fi
+.SS "TCT \- _POSIX_THREAD_CPUTIME \- _SC_THREAD_CPUTIME"
+clockID CLOCK_THREAD_CPUTIME_ID がサポートされている。 このオプションは \fB_POSIX_TIMERS\fP
+オプションを暗黙の内に指定する。 影響を受ける関数は以下の通り。
+.br
+.nf
+.in +4
+
+\fIpthread_getcpuclockid\fP(),
+\fIclock_getres\fP(),
+\fIclock_gettime\fP(),
+\fIclock_settime\fP(),
+\fItimer_create\fP().
+.in -4
+.br
+.fi
+.SS "TPI \- _POSIX_THREAD_PRIO_INHERIT \- _SC_THREAD_PRIO_INHERIT"
+影響を受ける関数は以下の通り。
+.br
+.nf
+.in +4
+
+\fIpthread_mutexattr_getprotocol\fP(),
+\fIpthread_mutexattr_setprotocol\fP().
+.in -4
+.br
+.fi
+.SS "TPP \- _POSIX_THREAD_PRIO_PROTECT \- _SC_THREAD_PRIO_PROTECT"
+影響を受ける関数は以下の通り。
+.br
+.nf
+.in +4
+
+\fIpthread_mutex_getprioceiling\fP(),
+\fIpthread_mutex_setprioceiling\fP(),
+\fIpthread_mutexattr_getprioceiling\fP(),
+\fIpthread_mutexattr_getprotocol\fP(),
+\fIpthread_mutexattr_setprioceiling\fP(),
+\fIpthread_mutexattr_setprotocol\fP().
+.in -4
+.br
+.fi
+.SS "TPS \- _POSIX_THREAD_PRIORITY_SCHEDULING \- _SC_THREAD_PRIORITY_SCHEDULING"
+このオプションが有効な場合、1 つのプロセス内の個々のスレッドを 個々の優先度または個々のスケジューラ (またはその両方) で実行できる。
+影響を受ける関数は以下の通り。
+.br
+.nf
+.in +4
+
+\fIpthread_attr_getinheritsched\fP(),
+\fIpthread_attr_getschedpolicy\fP(),
+\fIpthread_attr_getscope\fP(),
+\fIpthread_attr_setinheritsched\fP(),
+\fIpthread_attr_setschedpolicy\fP(),
+\fIpthread_attr_setscope\fP(),
+\fIpthread_getschedparam\fP(),
+\fIpthread_setschedparam\fP(),
+\fIpthread_setschedprio\fP().
+.in -4
+.br
+.fi
+.SS "TSH \- _POSIX_THREAD_PROCESS_SHARED \- _SC_THREAD_PROCESS_SHARED"
+影響を受ける関数は以下の通り。
+.br
+.nf
+.in +4
+
+\fIpthread_barrierattr_getpshared\fP(),
+\fIpthread_barrierattr_setpshared\fP(),
+\fIpthread_condattr_getpshared\fP(),
+\fIpthread_condattr_setpshared\fP(),
+\fIpthread_mutexattr_getpshared\fP(),
+\fIpthread_mutexattr_setpshared\fP(),
+\fIpthread_rwlockattr_getpshared\fP(),
+\fIpthread_rwlockattr_setpshared\fP().
+.in -4
+.br
+.fi
+.SS "TSF \- _POSIX_THREAD_SAFE_FUNCTIONS \- _SC_THREAD_SAFE_FUNCTIONS"
+影響を受ける関数は以下の通り。
+.br
+.nf
+.in +4
+
+\fIreaddir_r\fP(),
+\fIgetgrgid_r\fP(),
+\fIgetgrnam_r\fP(),
+\fIgetpwnam_r\fP(),
+\fIgetpwuid_r\fP(),
+\fIflockfile\fP(),
+\fIftrylockfile\fP(),
+\fIfunlockfile\fP(),
+\fIgetc_unlocked\fP(),
+\fIgetchar_unlocked\fP(),
+\fIputc_unlocked\fP(),
+\fIputchar_unlocked\fP(),
+\fIrand_r\fP(),
+\fIstrerror_r\fP(),
+\fIstrtok_r\fP(),
+\fIasctime_r\fP(),
+\fIctime_r\fP(),
+\fIgmtime_r\fP(),
+\fIlocaltime_r\fP().
+.in -4
+.br
+.fi
+.SS "TSP \- _POSIX_THREAD_SPORADIC_SERVER \- _SC_THREAD_SPORADIC_SERVER"
+このオプションは \fB_POSIX_THREAD_PRIORITY_SCHEDULING\fP オプションを暗黙の内に指定する。
+影響を受ける関数は以下の通り。
+.br
+.nf
+.in +4
+
+\fIsched_getparam\fP(),
+\fIsched_setparam\fP(),
+\fIsched_setscheduler\fP().
+.in -4
+.br
+.fi
+.SS "THR \- _POSIX_THREADS \- _SC_THREADS"
+POSIX スレッドの基本サポートが使用可能である。 以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIpthread_atfork\fP(),
+\fIpthread_attr_destroy\fP(),
+\fIpthread_attr_getdetachstate\fP(),
+\fIpthread_attr_getschedparam\fP(),
+\fIpthread_attr_init\fP(),
+\fIpthread_attr_setdetachstate\fP(),
+\fIpthread_attr_setschedparam\fP(),
+\fIpthread_cancel\fP(),
+\fIpthread_cleanup_push\fP(),
+\fIpthread_cleanup_pop\fP(),
+\fIpthread_cond_broadcast\fP(),
+\fIpthread_cond_destroy\fP(),
+\fIpthread_cond_init\fP(),
+\fIpthread_cond_signal\fP(),
+\fIpthread_cond_timedwait\fP(),
+\fIpthread_cond_wait\fP(),
+\fIpthread_condattr_destroy\fP(),
+\fIpthread_condattr_init\fP(),
+\fIpthread_create\fP(),
+\fIpthread_detach\fP(),
+\fIpthread_equal\fP(),
+\fIpthread_exit\fP(),
+\fIpthread_getspecific\fP(),
+\fIpthread_join\fP(),
+\fIpthread_key_create\fP(),
+\fIpthread_key_delete\fP(),
+\fIpthread_mutex_destroy\fP(),
+\fIpthread_mutex_init\fP(),
+\fIpthread_mutex_lock\fP(),
+\fIpthread_mutex_trylock\fP(),
+\fIpthread_mutex_unlock\fP(),
+\fIpthread_mutexattr_destroy\fP(),
+\fIpthread_mutexattr_init\fP(),
+\fIpthread_once\fP(),
+\fIpthread_rwlock_destroy\fP(),
+\fIpthread_rwlock_init\fP(),
+\fIpthread_rwlock_rdlock\fP(),
+\fIpthread_rwlock_tryrdlock\fP(),
+\fIpthread_rwlock_trywrlock\fP(),
+\fIpthread_rwlock_unlock\fP(),
+\fIpthread_rwlock_wrlock\fP(),
+\fIpthread_rwlockattr_destroy\fP(),
+\fIpthread_rwlockattr_init\fP(),
+\fIpthread_self\fP(),
+\fIpthread_setcancelstate\fP(),
+\fIpthread_setcanceltype\fP(),
+\fIpthread_setspecific\fP(),
+\fIpthread_testcancel\fP().
+.in -4
+.br
+.fi
+.SS "TMO \- _POSIX_TIMEOUTS \- _SC_TIMEOUTS"
+以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fImq_timedreceive\fP(),
+\fImq_timedsend\fP(),
+\fIpthread_mutex_timedlock\fP(),
+\fIpthread_rwlock_timedrdlock\fP(),
+\fIpthread_rwlock_timedwrlock\fP(),
+\fIsem_timedwait\fP(),
+\fIposix_trace_timedgetnext_event\fP().
+.in -4
+.br
+.fi
+.SS "TMR \- _POSIX_TIMERS \- _SC_TIMERS"
+以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIclock_getres\fP(),
+\fIclock_gettime\fP(),
+\fIclock_settime\fP(),
+\fInanosleep\fP(),
+\fItimer_create\fP(),
+\fItimer_delete\fP(),
+\fItimer_gettime\fP(),
+\fItimer_getoverrun\fP(),
+\fItimer_settime\fP().
+.in -4
+.br
+.fi
+.SS "TRC \- _POSIX_TRACE \- _SC_TRACE"
+POSIX トレーシング (tracing) が使用可能である。 以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIposix_trace_attr_destroy\fP(),
+\fIposix_trace_attr_getclockres\fP(),
+\fIposix_trace_attr_getcreatetime\fP(),
+\fIposix_trace_attr_getgenversion\fP(),
+\fIposix_trace_attr_getmaxdatasize\fP(),
+\fIposix_trace_attr_getmaxsystemeventsize\fP(),
+\fIposix_trace_attr_getmaxusereventsize\fP(),
+\fIposix_trace_attr_getname\fP(),
+\fIposix_trace_attr_getstreamfullpolicy\fP(),
+\fIposix_trace_attr_getstreamsize\fP(),
+\fIposix_trace_attr_init\fP(),
+\fIposix_trace_attr_setmaxdatasize\fP(),
+\fIposix_trace_attr_setname\fP(),
+\fIposix_trace_attr_setstreamsize\fP(),
+\fIposix_trace_attr_setstreamfullpolicy\fP(),
+\fIposix_trace_clear\fP(),
+\fIposix_trace_create\fP(),
+\fIposix_trace_event\fP(),
+\fIposix_trace_eventid_equal\fP(),
+\fIposix_trace_eventid_get_name\fP(),
+\fIposix_trace_eventid_open\fP(),
+\fIposix_trace_eventtypelist_getnext_id\fP(),
+\fIposix_trace_eventtypelist_rewind\fP(),
+\fIposix_trace_flush\fP(),
+\fIposix_trace_get_attr\fP(),
+\fIposix_trace_get_status\fP(),
+\fIposix_trace_getnext_event\fP(),
+\fIposix_trace_shutdown\fP(),
+\fIposix_trace_start\fP(),
+\fIposix_trace_stop\fP(),
+\fIposix_trace_trygetnext_event\fP().
+.in -4
+.br
+.fi
+.SS "TEF \- _POSIX_TRACE_EVENT_FILTER \- _SC_TRACE_EVENT_FILTER"
+このオプションは \fB_POSIX_TRACE\fP オプションを暗黙の内に指定する。 以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIposix_trace_eventset_add\fP(),
+\fIposix_trace_eventset_del\fP(),
+\fIposix_trace_eventset_empty\fP(),
+\fIposix_trace_eventset_fill\fP(),
+\fIposix_trace_eventset_ismember\fP(),
+\fIposix_trace_get_filter\fP(),
+\fIposix_trace_set_filter\fP(),
+\fIposix_trace_trid_eventid_open\fP().
+.in -4
+.br
+.fi
+.SS "TRI \- _POSIX_TRACE_INHERIT \- _SC_TRACE_INHERIT"
+トレースされているプロセスの子プロセスのトレースをサポートする。 このオプションは \fB_POSIX_TRACE\fP オプションを暗黙の内に指定する。
+以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIposix_trace_attr_getinherited\fP(),
+\fIposix_trace_attr_setinherited\fP().
+.in -4
+.br
+.fi
+.SS "TRL \- _POSIX_TRACE_LOG \- _SC_TRACE_LOG"
+このオプションは \fB_POSIX_TRACE\fP オプションを暗黙の内に指定する。 以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIposix_trace_attr_getlogfullpolicy\fP(),
+\fIposix_trace_attr_getlogsize\fP(),
+\fIposix_trace_attr_setlogfullpolicy\fP(),
+\fIposix_trace_attr_setlogsize\fP(),
+\fIposix_trace_close\fP(),
+\fIposix_trace_create_withlog\fP(),
+\fIposix_trace_open\fP(),
+\fIposix_trace_rewind\fP().
+.in -4
+.br
+.fi
+.SS "TYM \- _POSIX_TYPED_MEMORY_OBJECTS \- _SC_TYPED_MEMORY_OBJECT"
+以下の関数が存在する。
+.br
+.nf
+.in +4
+
+\fIposix_mem_offset\fP(),
+\fIposix_typed_mem_get_info\fP(),
+\fIposix_typed_mem_open\fP().
+.in -4
+.br
+.fi
+.SS "\-\-\- \- _POSIX_VDISABLE"
+常に存在する (たぶん 0 である)。 変更可能な特殊制御文字を設定する値。 これにより特殊制御文字が無効であることを表す。
+.SH "XOPEN 拡張"
+.\" To be described.
+\fB_XOPEN_CRYPT\fP, \fB_XOPEN_LEGACY\fP, \fB_XOPEN_REALTIME\fP,
+\fB_XOPEN_REALTIME_THREADS\fP, \fB_XOPEN_UNIX\fP.
+.SH 関連項目
+\fBsysconf\fP(3), \fBstandards\fP(7)
index cdfae9e..f4bad4b 100644 (file)
@@ -1,4 +1,4 @@
-'\" t
+.\" t
 .\" Copyright (c) 2005 by Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
 .\"
-.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved.
-.\" Translated 2005-09-06, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" Updated 2006-04-15, Akihiro MOTOKI, LDP v2.29
-.\" Updated 2007-01-05, Akihiro MOTOKI, LDP v2.43
-.\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05
-.\" Updated 2008-11-05, Akihiro MOTOKI, LDP v3.12
-.\" Updated 2008-11-09, Akihiro MOTOKI, LDP v3.13
-.\" Updated 2008-12-26, Akihiro MOTOKI, LDP v3.14
+.\"*******************************************************************
 .\"
-.\"WORD:       manager thread          管理スレッド
-.\"WORD:       thread group            スレッド・グループ
-.\"WORD:       real-time signal        リアルタイムシグナル
-.\"WORD:       non-conformant          標準非準拠の
-.\"WORD:       alternate signal stack  代替シグナルスタック
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH PTHREADS 7  2008-11-18 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.TH PTHREADS 7 2010\-11\-14 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O pthreads \- POSIX threads
 pthreads \- POSIX スレッド
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O POSIX.1 specifies a set of interfaces (functions, header files) for
-.\"O threaded programming commonly known as POSIX threads, or Pthreads.
-.\"O A single process can contain multiple threads,
-.\"O all of which are executing the same program.
-.\"O These threads share the same global memory (data and heap segments),
-.\"O but each thread has its own stack (automatic variables).
-POSIX.1 は、一般に POSIX スレッドや Pthreads として知られる
-スレッド・プログラミングのインタフェース群 (関数、ヘッダファイル)
-を規定している。一つのプロセスは複数のスレッドを持つことができ、
-全てのスレッドは同じプログラムを実行する。
-これらのスレッドは同じ大域メモリ (データとヒープ領域) を共有するが、
-各スレッドは自分専用のスタック (自動変数) を持つ。
+POSIX.1 は、一般に POSIX スレッドや Pthreads として知られる スレッド・プログラミングのインタフェース群
+(関数、ヘッダファイル)  を規定している。一つのプロセスは複数のスレッドを持つことができ、 全てのスレッドは同じプログラムを実行する。
+これらのスレッドは同じ大域メモリ (データとヒープ領域) を共有するが、 各スレッドは自分専用のスタック (自動変数) を持つ。
 
-.\"O POSIX.1 also requires that threads share a range of other attributes
-.\"O (i.e., these attributes are process-wide rather than per-thread):
-POSIX.1 はスレッド間でどのような属性を共有するかについても定めている
-(つまり、これらの属性はスレッド単位ではなくプロセス全体で共通である):
+POSIX.1 はスレッド間でどのような属性を共有するかについても定めている (つまり、これらの属性はスレッド単位ではなくプロセス全体で共通である):
 .IP \- 3
-.\"O process ID
 プロセス ID
 .IP \- 3
-.\"O parent process ID
 親プロセス ID
 .IP \- 3
-.\"O process group ID and session ID
 プロセスグループ ID とセッション ID
 .IP \- 3
-.\"O controlling terminal
 制御端末
 .IP \- 3
-.\"O user and group IDs
 ユーザ ID とグループ ID
 .IP \- 3
-.\"O open file descriptors
 オープンするファイルディスクリプタ
 .IP \- 3
-.\"O record locks (see
-.\"O .BR fcntl (2))
-レコードのロック
-.RB ( fcntl (3)
-参照)
+レコードのロック (\fBfcntl\fP(3)  参照)
 .IP \- 3
-.\"O signal dispositions
 シグナルの配置
 .IP \- 3
-.\"O file mode creation mask
-.\"O .RB ( umask (2))
-ファイルモード作成マスク
-.RB ( umask (2))
+ファイルモード作成マスク (\fBumask\fP(2))
 .IP \- 3
-.\"O current directory
-カレント・ディレクトリ
-.RB ( chdir (2))
-.\"O and
-.\"O root directory
-とルート・ディレクトリ
-.RB ( chroot (2))
+カレント・ディレクトリ (\fBchdir\fP(2))  とルート・ディレクトリ (\fBchroot\fP(2))
 .IP \- 3
-.\"O interval timers
-インターバル・タイマ
-.RB ( setitimer (2))
-.\"O and POSIX timers
-と POSIX タイマ
-.RB ( timer_create (2))
+インターバル・タイマ (\fBsetitimer\fP(2))  と POSIX タイマ (\fBtimer_create\fP(2))
 .IP \- 3
-.\"O nice value
-nice 値
-.RB ( setpriority (2))
+nice 値 (\fBsetpriority\fP(2))
 .IP \- 3
-.\"O resource limits
-リソース制限
-.RB ( setrlimit (2))
+リソース制限 (\fBsetrlimit\fP(2))
 .IP \- 3
-.\"O measurements of the consumption of CPU time
-.\"O .RB ( times (2))
-.\"O and resources
-.\"O .RB ( getrusage (2))
-CPU 時間
-.RB ( times (2))
-とリソース
-.RB ( getrusage (2))
-の消費状況の計測
+CPU 時間 (\fBtimes\fP(2))  とリソース (\fBgetrusage\fP(2))  の消費状況の計測
 .PP
-.\"O As well as the stack, POSIX.1 specifies that various other
-.\"O attributes are distinct for each thread, including:
-スタックについても、POSIX.1 はどのような属性が
-個々のスレッドで独立に管理されるかを規定している:
+スタックについても、POSIX.1 はどのような属性が 個々のスレッドで独立に管理されるかを規定している:
 .IP \- 3
-.\"O thread ID (the
-.\"O .I pthread_t
-.\"O data type)
-スレッド ID
-.RB ( pthread_t
-データ型)
+スレッド ID (\fBpthread_t\fP データ型)
 .IP \- 3
-.\"O signal mask
-シグナルマスク
-.RB ( pthread_sigmask (3))
+シグナルマスク (\fBpthread_sigmask\fP(3))
 .IP \- 3
-.\"O the
-.\"O .I errno
-.\"O variable
-.I errno
-変数
+\fIerrno\fP 変数
 .IP \- 3
-.\"O alternate signal stack
-代替シグナルスタック
-.RB ( sigaltstack (2))
+代替シグナルスタック (\fBsigaltstack\fP(2))
 .IP \- 3
-.\"O real-time scheduling policy and priority
-リアルタイム・スケジューリングのポリシーと優先度
-.RB ( sched_setscheduler (2)
-.\"O and
-と
-.BR sched_setparam (2))
+リアルタイム・スケジューリングのポリシーと優先度 (\fBsched_setscheduler\fP(2)  と \fBsched_setparam\fP(2))
 .PP
-.\"O The following Linux-specific features are also per-thread:
 以下の Linux 特有の機能もスレッド単位である:
 .IP \- 3
-.\"O capabilities (see
-.\"O .BR capabilities (7))
-ケーパビリティ
-.RB ( capabilities (7)
-参照)
+ケーパビリティ (\fBcapabilities\fP(7)  参照)
 .IP \- 3
-.\"O CPU affinity
-CPU affinity (親和度)
-.RB ( sched_setaffinity (2))
-.\"O .SS "Pthreads function return values"
+CPU affinity (親和度)  (\fBsched_setaffinity\fP(2))
 .SS "pthreads 関数の返り値"
-.\"O Most pthreads functions return 0 on success, and an error number of failure.
-.\"O Note that the pthreads functions do not set
-.\"O .IR errno .
-.\"O For each of the pthreads functions that can return an error,
-.\"O POSIX.1-2001 specifies that the function can never fail with the error
-.\"O .BR EINTR .
-ほとんどの pthreads 関数は成功すると 0 を返し、
-失敗した場合エラー番号を返す。
-pthreads 関数は
-.I errno
-をセットしない点に注意すること。
-POSIX.1-2001 では、
-エラーを返す可能性のある pthreads 関数がエラー
-.B EINTR
+ほとんどの pthreads 関数は成功すると 0 を返し、 失敗した場合エラー番号を返す。 pthreads 関数は \fIerrno\fP
+をセットしない点に注意すること。 POSIX.1\-2001 では、 エラーを返す可能性のある pthreads 関数がエラー \fBEINTR\fP
 で失敗することは決してないと規定している。
-.\"O .SS Thread IDs
 .SS "スレッド ID"
-.\"O Each of the threads in a process has a unique thread identifier
-.\"O (stored in the type
-.\"O .IR pthread_t ).
-.\"O This identifier is returned to the caller of
-.\"O .BR pthread_create (3),
-.\"O and a thread can obtain its own thread identifier using
-.\"O .BR pthread_self (3).
-.\"O Thread IDs are only guaranteed to be unique within a process.
-.\"O A thread ID may be reused after a terminated thread has been joined,
-.\"O or a detached thread has terminated.
-.\"O In all pthreads functions that accept a thread ID as an argument,
-.\"O that ID by definition refers to a thread in
-.\"O the same process as the caller.
-あるプロセス内の各スレッドは
-.RI ( pthread_t
-型の) 一意なスレッド識別子を持つ。
-この識別子は、
-.BR pthread_create (3)
-の呼び出し元に返される。また、スレッドは自身のスレッド識別子を
-.BR pthread_self (3)
-を使って取得できる。
-スレッド ID の一意性が保証されるのは、一つのプロセス内においてのみである。
-終了したスレッドが join された後では、スレッド ID は再利用される可能性がある。
-スレッド ID を引き数に取る全てのスレッド関数において、
-その ID は呼び出し元と同じプロセス内の一つのスレッドを参照する。
-.\"O .SS "Thread-safe functions"
-.SS "スレッドセーフな関数"
-.\"O A thread-safe function is one that can be safely
-.\"O (i.e., it will deliver the same results regardless of whether it is)
-.\"O called from multiple threads at the same time.
-スレッドセーフな関数は、複数のスレッドから同時に呼び出しても安全な
-(すなわち、同時に呼び出されたかに関わらず、同じ結果を返す) 関数のことである。
+あるプロセス内の各スレッドは (\fIpthread_t\fP 型の) 一意なスレッド識別子を持つ。 この識別子は、 \fBpthread_create\fP(3)
+の呼び出し元に返される。また、スレッドは自身のスレッド識別子を \fBpthread_self\fP(3)  を使って取得できる。 スレッド ID
+の一意性が保証されるのは、一つのプロセス内においてのみである。 終了したスレッドが join された後では、スレッド ID は再利用される可能性がある。
+スレッド ID を引き数に取る全てのスレッド関数において、 その ID は呼び出し元と同じプロセス内の一つのスレッドを参照する。
+.SS スレッドセーフな関数
+スレッドセーフな関数は、複数のスレッドから同時に呼び出しても安全な (すなわち、同時に呼び出されたかに関わらず、同じ結果を返す) 関数のことである。
 
-.\"O POSIX.1-2001 and POSIX.1-2008 require that all functions specified
-.\"O in the standard shall be thread-safe,
-.\"O except for the following functions:
-POSIX.1-2001 と POSIX.1-2008では、一部の例外を除き、
-標準で規定されている全ての関数がスレッドセーフであることを要求している。
+POSIX.1\-2001 と POSIX.1\-2008では、一部の例外を除き、 標準で規定されている全ての関数がスレッドセーフであることを要求している。
 以下の関数が例外である。
 .in +4n
 .nf
@@ -236,7 +102,6 @@ asctime()
 basename()
 catgets()
 crypt()
-.\"O ctermid() if passed a non-NULL argument
 ctermid() (NULL でない引き数を渡された場合)
 ctime()
 dbm_clearerr()
@@ -251,17 +116,14 @@ dbm_store()
 dirname()
 dlerror()
 drand48()
-.\"O ecvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
-ecvt() [POSIX.1-2001 のみ (POSIX.1-2008 で削除された)]
+ecvt() [POSIX.1\-2001 のみ (POSIX.1\-2008 で削除された)]
 encrypt()
 endgrent()
 endpwent()
 endutxent()
-.\"O fcvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
-fcvt() [POSIX.1-2001 のみ (POSIX.1-2008 で削除された)]
+fcvt() [POSIX.1\-2001 のみ (POSIX.1\-2008 で削除された)]
 ftw()
-.\"O gcvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
-gcvt() [POSIX.1-2001 のみ (POSIX.1-2008 で削除された)]
+gcvt() [POSIX.1\-2001 のみ (POSIX.1\-2008 で削除された)]
 getc_unlocked()
 getchar_unlocked()
 getdate()
@@ -269,10 +131,8 @@ getenv()
 getgrent()
 getgrgid()
 getgrnam()
-.\"O gethostbyaddr() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
-.\"O gethostbyname() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
-gethostbyaddr() [POSIX.1-2001 のみ (POSIX.1-2008 で削除された)]
-gethostbyname() [POSIX.1-2001 のみ (POSIX.1-2008 で削除された)]
+gethostbyaddr() [POSIX.1\-2001 のみ (POSIX.1\-2008 で削除された)]
+gethostbyname() [POSIX.1\-2001 のみ (POSIX.1\-2008 で削除された)]
 gethostent()
 getlogin()
 getnetbyaddr()
@@ -319,43 +179,41 @@ setkey()
 setpwent()
 setutxent()
 strerror()
-.\"O strsignal() [Added in POSIX.1-2008]
-strsignal() [POSIX.1-2008 で追加された]
+strsignal() [POSIX.1\-2008 で追加された]
 strtok()
-.\"O system() [Added in POSIX.1-2008]
-system() [POSIX.1-2008 で追加された]
-.\"O tmpnam() if passed a non-NULL argument
+system() [POSIX.1\-2008 で追加された]
 tmpnam() (NULL でない引き数を渡された場合)
 ttyname()
 unsetenv()
-.\"O wcrtomb() if its final argument is NULL
 wcrtomb() (最後の引き数が NULL の場合)
-.\"O wcsrtombs() if its final argument is NULL
 wcsrtombs() (最後の引き数が NULL の場合)
 wcstombs()
 wctomb()
 .fi
 .in
-.\"O .SS Cancellation Points
-.SS 取り消しポイント (cancellation points)
-.\"O POSIX.1 specifies that certain functions must,
-.\"O and certain other functions may, be cancellation points.
-.\"O If a thread is cancelable, its cancelability type is deferred,
-.\"O and a cancellation request is pending for the thread,
-.\"O then the thread is canceled when it calls a function
-.\"O that is a cancellation point.
-POSIX.1 の規定では、特定の関数は取り消しポイントでなければならず、
-他の特定の関数は取り消しポイントであってもよいとされている。
-あるスレッドが取り消し可能で、その取り消し種別 (cancelability type)
-が延期 (deferred) で、そのスレッドに対する取り消し要求が処理待ちの場合、
-取り消しポイントである関数を呼び出した時点で、そのスレッドのキャンセルが
-行われる。
+.SS "async\-cancel\-safe 関数"
+async\-cancel\-safe 関数は、
+非同期キャンセル機能が有効になっているアプリケーションで
+安全に呼び出すことができる関数のことである
+(\fBpthread_setcancelstate\fP(3) を参照)。
 
-.\"O The following functions are required to be cancellation points by
-.\"O POSIX.1-2001 and/or POSIX.1-2008:
-POSIX.1-2001 と POSIX.1-2008 の両方、もしくはいずれか一方では、
-以下の関数は、取り消しポイント (cancellation points) で
-あることが必須となっている。
+以下の関数だけが、POSIX.1\-2001 と POSIX.1\-2008 で async\-cancel\-safe で
+なければならないとされている。
+.in +4n
+.nf
+
+pthread_cancel()
+pthread_setcancelstate()
+pthread_setcanceltype()
+.fi
+.in
+.SS "取り消しポイント (cancellation points)"
+POSIX.1 の規定では、特定の関数は取り消しポイントでなければならず、 他の特定の関数は取り消しポイントであってもよいとされている。
+あるスレッドが取り消し可能で、その取り消し種別 (cancelability type)  が延期 (deferred)
+で、そのスレッドに対する取り消し要求が処理待ちの場合、 取り消しポイントである関数を呼び出した時点で、そのスレッドのキャンセルが 行われる。
+
+POSIX.1\-2001 と POSIX.1\-2008 の両方、もしくはいずれか一方では、 以下の関数は、取り消しポイント (cancellation
+points) で あることが必須となっている。
 
 .\" FIXME
 .\" Document the list of all functions that are cancellation points in glibc
@@ -382,8 +240,7 @@ msgsnd()
 msync()
 nanosleep()
 open()
-.\"O openat() [Added in POSIX.1-2008]
-openat() [POSIX.1-2008 で追加された]
+openat() [POSIX.1\-2008 で追加された]
 pause()
 poll()
 pread()
@@ -406,8 +263,7 @@ sem_wait()
 send()
 sendmsg()
 sendto()
-.\"O sigpause() [POSIX.1-2001 only (moves to "may" list in POSIX.1-2008)]
-sigpause() [POSIX.1-2001 only (moves to "may" list in POSIX.1-2008)]
+sigpause() [POSIX.1\-2001 only (moves to "may" list in POSIX.1\-2008)]
 sigsuspend()
 sigtimedwait()
 sigwait()
@@ -415,8 +271,7 @@ sigwaitinfo()
 sleep()
 system()
 tcdrain()
-.\"O usleep() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
-usleep() [POSIX.1-2001 のみ (POSIX.1-2008 で削除された)]
+usleep() [POSIX.1\-2001 のみ (POSIX.1\-2008 で削除された)]
 wait()
 waitid()
 waitpid()
@@ -425,11 +280,8 @@ writev()
 .fi
 .in
 
-.\"O The following functions may be cancellation points according to
-.\"O POSIX.1-2001 and/or POSIX.1-2008:
-POSIX.1-2001 と POSIX.1-2008 の両方、もしくはいずれか一方では、
-以下の関数は、取り消しポイント (cancellation points) で
-あってもよいことになっている。
+POSIX.1\-2001 と POSIX.1\-2008 の両方、もしくはいずれか一方では、 以下の関数は、取り消しポイント (cancellation
+points) で あってもよいことになっている。
 
 .in +4n
 .nf
@@ -439,10 +291,8 @@ asctime_r()
 catclose()
 catgets()
 catopen()
-.\"O chmod() [Added in POSIX.1-2008]
-.\"O chown() [Added in POSIX.1-2008]
-chmod() [POSIX.1-2008 で追加された]
-chown() [POSIX.1-2008 で追加された]
+chmod() [POSIX.1\-2008 で追加された]
+chown() [POSIX.1\-2008 で追加された]
 closedir()
 closelog()
 ctermid()
@@ -456,8 +306,7 @@ dbm_open()
 dbm_store()
 dlclose()
 dlopen()
-.\"O dprintf() [Added in POSIX.1-2008]
-dprintf() [POSIX.1-2008 で追加された]
+dprintf() [POSIX.1\-2008 で追加された]
 endgrent()
 endhostent()
 endnetent()
@@ -465,18 +314,12 @@ endprotoent()
 endpwent()
 endservent()
 endutxent()
-.\"O faccessat() [Added in POSIX.1-2008]
-.\"O fchmod() [Added in POSIX.1-2008]
-.\"O fchmodat() [Added in POSIX.1-2008]
-.\"O fchown() [Added in POSIX.1-2008]
-.\"O fchownat() [Added in POSIX.1-2008]
-faccessat() [POSIX.1-2008 で追加された]
-fchmod() [POSIX.1-2008 で追加された]
-fchmodat() [POSIX.1-2008 で追加された]
-fchown() [POSIX.1-2008 で追加された]
-fchownat() [POSIX.1-2008 で追加された]
+faccessat() [POSIX.1\-2008 で追加された]
+fchmod() [POSIX.1\-2008 で追加された]
+fchmodat() [POSIX.1\-2008 で追加された]
+fchown() [POSIX.1\-2008 で追加された]
+fchownat() [POSIX.1\-2008 で追加された]
 fclose()
-.\"O fcntl() (for any value of cmd argument)
 fcntl() (cmd 引き数が何であっても)
 fflush()
 fgetc()
@@ -499,13 +342,11 @@ fseek()
 fseeko()
 fsetpos()
 fstat()
-.\"O fstatat() [Added in POSIX.1-2008]
-fstatat() [POSIX.1-2008 で追加された]
+fstatat() [POSIX.1\-2008 で追加された]
 ftell()
 ftello()
 ftw()
-.\"O futimens() [Added in POSIX.1-2008]
-futimens() [POSIX.1-2008 で追加された]
+futimens() [POSIX.1\-2008 で追加された]
 fwprintf()
 fwrite()
 fwscanf()
@@ -516,29 +357,24 @@ getchar()
 getchar_unlocked()
 getcwd()
 getdate()
-.\"O getdelim() [Added in POSIX.1-2008]
-getdelim() [POSIX.1-2008 で追加された]
+getdelim() [POSIX.1\-2008 で追加された]
 getgrent()
 getgrgid()
 getgrgid_r()
 getgrnam()
 getgrnam_r()
-.\"O gethostbyaddr() [SUSv3 only (function removed in POSIX.1-2008)]
-.\"O gethostbyname() [SUSv3 only (function removed in POSIX.1-2008)]
-gethostbyaddr() [SUSv3 のみ (この関数は POSIX.1-2008 で削除されている)]
-gethostbyname() [SUSv3 のみ (この関数は POSIX.1-2008 で削除されている)]
+gethostbyaddr() [SUSv3 のみ (この関数は POSIX.1\-2008 で削除されている)]
+gethostbyname() [SUSv3 のみ (この関数は POSIX.1\-2008 で削除されている)]
 gethostent()
 gethostid()
 gethostname()
-.\"O getline() [Added in POSIX.1-2008]
-getline() [POSIX.1-2008 で追加された]
+getline() [POSIX.1\-2008 で追加された]
 getlogin()
 getlogin_r()
 getnameinfo()
 getnetbyaddr()
 getnetbyname()
 getnetent()
-.\"O getopt() (if opterr is nonzero)
 getopt() (opterr が 0 以外の場合)
 getprotobyname()
 getprotobynumber()
@@ -557,37 +393,26 @@ getutxid()
 getutxline()
 getwc()
 getwchar()
-.\"O getwd() [SUSv3 only (function removed in POSIX.1-2008)]
-getwd() [SUSv3 のみ (この関数は POSIX.1-2008 で削除されている)]
+getwd() [SUSv3 のみ (この関数は POSIX.1\-2008 で削除されている)]
 glob()
 iconv_close()
 iconv_open()
 ioctl()
 link()
-.\"O linkat() [Added in POSIX.1-2008]
-.\"O lio_listio() [Added in POSIX.1-2008]
-linkat() [POSIX.1-2008 で追加された]
-lio_listio() [POSIX.1-2008 で追加された]
+linkat() [POSIX.1\-2008 で追加された]
+lio_listio() [POSIX.1\-2008 で追加された]
 localtime()
 localtime_r()
-.\"O lockf() [Added in POSIX.1-2008]
-lockf() [POSIX.1-2008 で追加された]
+lockf() [POSIX.1\-2008 で追加された]
 lseek()
 lstat()
-.\"O mkdir() [Added in POSIX.1-2008]
-.\"O mkdirat() [Added in POSIX.1-2008]
-.\"O mkdtemp() [Added in POSIX.1-2008]
-.\"O mkfifo() [Added in POSIX.1-2008]
-.\"O mkfifoat() [Added in POSIX.1-2008]
-.\"O mknod() [Added in POSIX.1-2008]
-.\"O mknodat() [Added in POSIX.1-2008]
-mkdir() [POSIX.1-2008 で追加された]
-mkdirat() [POSIX.1-2008 で追加された]
-mkdtemp() [POSIX.1-2008 で追加された]
-mkfifo() [POSIX.1-2008 で追加された]
-mkfifoat() [POSIX.1-2008 で追加された]
-mknod() [POSIX.1-2008 で追加された]
-mknodat() [POSIX.1-2008 で追加された]
+mkdir() [POSIX.1\-2008 で追加された]
+mkdirat() [POSIX.1\-2008 で追加された]
+mkdtemp() [POSIX.1\-2008 で追加された]
+mkfifo() [POSIX.1\-2008 で追加された]
+mkfifoat() [POSIX.1\-2008 で追加された]
+mknod() [POSIX.1\-2008 で追加された]
+mknodat() [POSIX.1\-2008 で追加された]
 mkstemp()
 mktime()
 nftw()
@@ -621,10 +446,8 @@ posix_trace_shutdown()
 posix_trace_timedgetnext_event()
 posix_typed_mem_open()
 printf()
-.\"O psiginfo() [Added in POSIX.1-2008]
-.\"O psignal() [Added in POSIX.1-2008]
-psiginfo() [POSIX.1-2008 で追加された]
-psignal() [POSIX.1-2008 で追加された]
+psiginfo() [POSIX.1\-2008 で追加された]
+psignal() [POSIX.1\-2008 で追加された]
 pthread_rwlock_rdlock()
 pthread_rwlock_timedrdlock()
 pthread_rwlock_timedwrlock()
@@ -639,18 +462,14 @@ putwc()
 putwchar()
 readdir()
 readdir_r()
-.\"O readlink() [Added in POSIX.1-2008]
-.\"O readlinkat() [Added in POSIX.1-2008]
-readlink() [POSIX.1-2008 で追加された]
-readlinkat() [POSIX.1-2008 で追加された]
+readlink() [POSIX.1\-2008 で追加された]
+readlinkat() [POSIX.1\-2008 で追加された]
 remove()
 rename()
-.\"O renameat() [Added in POSIX.1-2008]
-renameat() [POSIX.1-2008 で追加された]
+renameat() [POSIX.1\-2008 で追加された]
 rewind()
 rewinddir()
-.\"O scandir() [Added in POSIX.1-2008]
-scandir() [POSIX.1-2008 で追加された]
+scandir() [POSIX.1\-2008 で追加された]
 scanf()
 seekdir()
 semop()
@@ -661,15 +480,13 @@ setprotoent()
 setpwent()
 setservent()
 setutxent()
-.\"O sigpause() [Added in POSIX.1-2008]
-sigpause() [POSIX.1-2008 で追加された]
+sigpause() [POSIX.1\-2008 で追加された]
 stat()
 strerror()
 strerror_r()
 strftime()
 symlink()
-.\"O symlinkat() [Added in POSIX.1-2008]
-symlinkat() [POSIX.1-2008 で追加された]
+symlinkat() [POSIX.1\-2008 で追加された]
 sync()
 syslog()
 tmpfile()
@@ -680,16 +497,11 @@ tzset()
 ungetc()
 ungetwc()
 unlink()
-.\"O unlinkat() [Added in POSIX.1-2008]
-.\"O utime() [Added in POSIX.1-2008]
-.\"O utimensat() [Added in POSIX.1-2008]
-.\"O utimes() [Added in POSIX.1-2008]
-.\"O vdprintf() [Added in POSIX.1-2008]
-unlinkat() [POSIX.1-2008 で追加された]
-utime() [POSIX.1-2008 で追加された]
-utimensat() [POSIX.1-2008 で追加された]
-utimes() [POSIX.1-2008 で追加された]
-vdprintf() [POSIX.1-2008 で追加された]
+unlinkat() [POSIX.1\-2008 で追加された]
+utime() [POSIX.1\-2008 で追加された]
+utimensat() [POSIX.1\-2008 で追加された]
+utimes() [POSIX.1\-2008 で追加された]
+vdprintf() [POSIX.1\-2008 で追加された]
 vfprintf()
 vfwprintf()
 vprintf()
@@ -701,16 +513,6 @@ wscanf()
 .fi
 .in
 
-.\"O An implementation may also mark other functions
-.\"O not specified in the standard as cancellation points.
-.\"O In particular, an implementation is likely to mark
-.\"O any nonstandard function that may block as a cancellation point.
-.\"O (This includes most functions that can touch files.)
-実装時に、標準規格で規定されていないその他の関数を取り消しポイント
-とすることも認められている。
-特に、停止 (block) する可能性がある非標準の関数を取り消しポイントと
-する実装はあり得ることだろう
-(ファイルを扱う可能性のあるほとんどの関数がこれに含まれる)。
 .\" So, scanning "cancellation point" comments in the glibc 2.8 header
 .\" files, it looks as though at least the following nonstandard
 .\" functions are cancellation points:
@@ -801,367 +603,116 @@ wscanf()
 .\" vscanf
 .\" vsyslog
 .\" vwscanf
-.\"O .SS "Compiling on Linux"
+実装時に、標準規格で規定されていないその他の関数を取り消しポイント とすることも認められている。 特に、停止 (block)
+する可能性がある非標準の関数を取り消しポイントと する実装はあり得ることだろう (ファイルを扱う可能性のあるほとんどの関数がこれに含まれる)。
 .SS "Linux でのコンパイル"
-.\"O On Linux, programs that use the Pthreads API should be compiled using
-.\"O .IR "cc \-pthread" .
-Linux では、Pthreads API を用いたプログラムは
-.I "cc \-pthread"
-でコンパイルすべきである。
-.\"O .SS "Linux Implementations of POSIX Threads"
+Linux では、Pthreads API を用いたプログラムは \fIcc \-pthread\fP でコンパイルすべきである。
 .SS "POSIX スレッドの Linux での実装"
-.\"O Over time, two threading implementations have been provided by
-.\"O the GNU C library on Linux:
-これまで、2つのスレッドの実装が Linux の GNU C ライブラリにより
-提供されてきた。
-.TP
-.B LinuxThreads
-.\"O This is the original Pthreads implementation.
-.\"O Since glibc 2.4, this implementation is no longer supported.
-最初の Pthreads の実装。
-glibc 2.4 以降は、この実装はもはやサポートされていない。
-.TP
-.BR NPTL " (Native POSIX Threads Library)"
-.\"O This is the modern Pthreads implementation.
-.\"O By comparison with LinuxThreads, NPTL provides closer conformance to
-.\"O the requirements of the POSIX.1 specification and better performance
-.\"O when creating large numbers of threads.
-.\"O NPTL is available since glibc 2.3.2,
-.\"O and requires features that are present in the Linux 2.6 kernel.
-新しい Pthreads の実装。LinuxThreads と比べると、
-NPTL は POSIX.1 の要求仕様への準拠の度合いが高く、
-多数のスレッドを作成した際の性能も高い。
-NPTL は glibc 2.3.2 以降で利用可能である。
-NPTL を利用するには Linux 2.6 カーネルに実装されている機能が必要である。
+これまで、2つのスレッドの実装が Linux の GNU C ライブラリにより 提供されてきた。
+.TP 
+\fBLinuxThreads\fP
+最初の Pthreads の実装。 glibc 2.4 以降は、この実装はもはやサポートされていない。
+.TP 
+\fBNPTL\fP (Native POSIX Threads Library)
+新しい Pthreads の実装。LinuxThreads と比べると、 NPTL は POSIX.1 の要求仕様への準拠の度合いが高く、
+多数のスレッドを作成した際の性能も高い。 NPTL は glibc 2.3.2 以降で利用可能である。 NPTL を利用するには Linux 2.6
+カーネルに実装されている機能が必要である。
 .PP
-.\"O Both of these are so-called 1:1 implementations, meaning that each
-.\"O thread maps to a kernel scheduling entity.
-どちらの実装もいわゆる 1:1 実装、すなわち個々のスレッドが
-カーネルのスケジューリング実体にマッピングされる。
-.\"O Both threading implementations employ the Linux
-.\"O .BR clone (2)
-.\"O system call.
-.\"O In NPTL, thread synchronization primitives (mutexes,
-.\"O thread joining, etc.) are implemented using the Linux
-.\"O .BR futex (2)
-.\"O system call.
-どちらのスレッドの実装も Linux の
-.BR clone (2)
-システムコールを利用している。
-NPTL では、スレッド同期の基本機構 (mutex や スレッドの join 等) は
-Linux の
-.BR futex (2)
-システムコールを使って実装されている。
+どちらの実装もいわゆる 1:1 実装、すなわち個々のスレッドが カーネルのスケジューリング実体にマッピングされる。 どちらのスレッドの実装も Linux
+の \fBclone\fP(2)  システムコールを利用している。 NPTL では、スレッド同期の基本機構 (mutex や スレッドの join 等) は
+Linux の \fBfutex\fP(2)  システムコールを使って実装されている。
 .SS LinuxThreads
-.\"O The notable features of this implementation are the following:
 この実装の大きな特徴は以下の通りである:
 .IP \- 3
-.\"O In addition to the main (initial) thread,
-.\"O and the threads that the program creates using
-.\"O .BR pthread_create (3),
-.\"O the implementation creates a "manager" thread.
-.\"O This thread handles thread creation and termination.
-.\"O (Problems can result if this thread is inadvertently killed.)
-メインスレッド (最初のスレッド) とプログラムが
-.BR pthread_create (3)
-を使って作成したスレッドに加え、
-この実装では「管理 (manager)」スレッドが作成される。
-管理スレッドはスレッドの作成と終了を取り扱う
-(このスレッドがうっかり kill されると、問題が起こることがある)。
+メインスレッド (最初のスレッド) とプログラムが \fBpthread_create\fP(3)  を使って作成したスレッドに加え、 この実装では「管理
+(manager)」スレッドが作成される。 管理スレッドはスレッドの作成と終了を取り扱う (このスレッドがうっかり kill
+されると、問題が起こることがある)。
 .IP \- 3
-.\"O Signals are used internally by the implementation.
-.\"O On Linux 2.2 and later, the first three real-time signals are used
-.\"O (see also
-.\"O .BR signal (7)).
-.\"O On older Linux kernels,
-.\"O .B SIGUSR1
-.\"O and
-.\"O .B SIGUSR2
-.\"O are used.
-.\"O Applications must avoid the use of whichever set of signals is
-.\"O employed by the implementation.
-この実装では内部でシグナルを使用している。
-Linux 2.2 以降では、リアルタイムシグナルのうち最初の 3つが使われる
-.RB ( signal (7)
-参照)。
-それ以前のカーネルでは
-.B SIGUSR1
-と
-.B SIGUSR2
-が使われる。
-アプリケーションは、スレッド実装で利用されているシグナルを
-どれも使わないようにしなければならない。
+この実装では内部でシグナルを使用している。 Linux 2.2 以降では、リアルタイムシグナルのうち最初の 3つが使われる (\fBsignal\fP(7)
+参照)。 それ以前のカーネルでは \fBSIGUSR1\fP と \fBSIGUSR2\fP が使われる。
+アプリケーションは、スレッド実装で利用されているシグナルを どれも使わないようにしなければならない。
 .IP \- 3
-.\"O Threads do not share process IDs.
-.\"O (In effect, LinuxThreads threads are implemented as processes which share
-.\"O more information than usual, but which do not share a common process ID.)
-.\"O LinuxThreads threads (including the manager thread)
-.\"O are visible as separate processes using
-.\"O .BR ps (1).
-スレッド間でプロセス ID を共有しない
-(実際には LinuxThreads のスレッドは通常よりは情報を共有するプロセスとして
-実装されているが、一つの共通のプロセス ID を共有してはいない)。
-(管理スレッドを含む) LinuxThreads スレッドは
-.BR ps (1)
+スレッド間でプロセス ID を共有しない (実際には LinuxThreads のスレッドは通常よりは情報を共有するプロセスとして
+実装されているが、一つの共通のプロセス ID を共有してはいない)。 (管理スレッドを含む) LinuxThreads スレッドは \fBps\fP(1)
 を使うと別のプロセスのように見える。
 .PP
-.\"O The LinuxThreads implementation deviates from the POSIX.1
-.\"O specification in a number of ways, including the following:
-LinuxThreads の実装では POSIX.1 仕様から逸脱している点が
-いくつかある。以下に示すような点がある:
+LinuxThreads の実装では POSIX.1 仕様から逸脱している点が いくつかある。以下に示すような点がある:
 .IP \- 3
-.\"O Calls to
-.\"O .BR getpid (2)
-.\"O return a different value in each thread.
-.BR getpid (2)
-を呼び出したときに、スレッド毎に異なる値が返される。
+\fBgetpid\fP(2)  を呼び出したときに、スレッド毎に異なる値が返される。
 .IP \- 3
-.\"O Calls to
-.\"O .BR getppid (2)
-.\"O in threads other than the main thread return the process ID of the
-.\"O manager thread; instead
-.\"O .BR getppid (2)
-.\"O in these threads should return the same value as
-.\"O .BR getppid (2)
-.\"O in the main thread.
-メインスレッド以外のスレッドで
-.BR getppid (2)
-を呼び出すと、管理スレッドのプロセス ID が返される。
-本当は、これらのスレッドで
-.BR getppid (2)
-を呼んだ場合にはメインスレッドでの
-.BR getppid (2)
-と同じ値が返るべきである。
+メインスレッド以外のスレッドで \fBgetppid\fP(2)  を呼び出すと、管理スレッドのプロセス ID が返される。 本当は、これらのスレッドで
+\fBgetppid\fP(2)  を呼んだ場合にはメインスレッドでの \fBgetppid\fP(2)  と同じ値が返るべきである。
 .IP \- 3
-.\"O When one thread creates a new child process using
-.\"O .BR fork (2),
-.\"O any thread should be able to
-.\"O .BR wait (2)
-.\"O on the child.
-.\"O However, the implementation only allows the thread that
-.\"O created the child to
-.\"O .BR wait (2)
-.\"O on it.
-あるスレッドが
-.BR fork (2)
-を使って新しい子プロセスを作成した場合、
-どのスレッドでもこの子プロセスを
-.BR wait (2)
-できるべきである。しかしながら、この実装では子プロセスを作成した
-スレッドだけがこの子プロセスを
-.BR wait (2)
-できる。
+あるスレッドが \fBfork\fP(2)  を使って新しい子プロセスを作成した場合、 どのスレッドでもこの子プロセスを \fBwait\fP(2)
+できるべきである。しかしながら、この実装では子プロセスを作成した スレッドだけがこの子プロセスを \fBwait\fP(2)  できる。
 .IP \- 3
-.\"O When a thread calls
-.\"O .BR execve (2),
-.\"O all other threads are terminated (as required by POSIX.1).
-.\"O However, the resulting process has the same PID as the thread that called
-.\"O .BR execve (2):
-.\"O it should have the same PID as the main thread.
-あるスレッドが
-.BR execve (2)
-を呼び出した場合、他のスレッドは全て終了される (POSIX.1 の仕様通り)。
-しかしながら、新しいプロセスは
-.BR execve (2)
-を呼んだスレッドと同じ PID を持つ。正しくは
-メインスレッドと同じ PID を持つべきである。
+あるスレッドが \fBexecve\fP(2)  を呼び出した場合、他のスレッドは全て終了される (POSIX.1 の仕様通り)。
+しかしながら、新しいプロセスは \fBexecve\fP(2)  を呼んだスレッドと同じ PID を持つ。正しくは メインスレッドと同じ PID
+を持つべきである。
 .IP \- 3
-.\"O Threads do not share user and group IDs.
-.\"O This can cause complications with set-user-ID programs and
-.\"O can cause failures in Pthreads functions if an application
-.\"O changes its credentials using
-.\"O .BR seteuid (2)
-.\"O or similar.
-スレッド間でユーザ ID とグループ ID が共有されない
-このことは、set-user-ID プログラムで面倒な事態を招いたり、
-アプリケーションが
-.BR seteuid (2)
-などを使って信用情報 (credentials) を変更した場合に
-Pthreads 関数が失敗する原因となる。
+スレッド間でユーザ ID とグループ ID が共有されない このことは、set\-user\-ID プログラムで面倒な事態を招いたり、 アプリケーションが
+\fBseteuid\fP(2)  などを使って信用情報 (credentials) を変更した場合に Pthreads 関数が失敗する原因となる。
 .IP \- 3
-.\"O Threads do not share a common session ID and process group ID.
 スレッド間で共通のセッション ID やプロセスグループ ID を共有しない。
 .IP \- 3
-.\"O Threads do not share record locks created using
-.\"O .BR fcntl (2).
-スレッド間で
-.BR fcntl (2)
-を使って作成されるレコード・ロックを共有しない。
+スレッド間で \fBfcntl\fP(2)  を使って作成されるレコード・ロックを共有しない。
 .IP \- 3
-.\"O The information returned by
-.\"O .BR times (2)
-.\"O and
-.\"O .BR getrusage (2)
-.\"O is per-thread rather than process-wide.
-.BR times (2)
-と
-.BR getrusage (2)
-が返す情報がプロセス全体の情報でなくスレッド単位の情報である。
+\fBtimes\fP(2)  と \fBgetrusage\fP(2)  が返す情報がプロセス全体の情報でなくスレッド単位の情報である。
 .IP \- 3
-.\"O Threads do not share semaphore undo values (see
-.\"O .BR semop (2)).
-スレッド間でセマフォのアンドゥ値
-.RB ( semop (2)
-参照) を共有しない。
+スレッド間でセマフォのアンドゥ値 (\fBsemop\fP(2)  参照) を共有しない。
 .IP \- 3
-.\"O Threads do not share interval timers.
 スレッド間でインターバル・タイマを共有しない。
 .IP \- 3
-.\"O Threads do not share a common nice value.
 スレッドは共通の nice 値を共有しない。
 .IP \- 3
-.\"O POSIX.1 distinguishes the notions of signals that are directed
-.\"O to the process as a whole and signals that are directed to individual
-.\"O threads.
-.\"O According to POSIX.1, a process-directed signal (sent using
-.\"O .BR kill (2),
-.\"O for example) should be handled by a single,
-.\"O arbitrarily selected thread within the process.
-.\"O LinuxThreads does not support the notion of process-directed signals:
-.\"O signals may only be sent to specific threads.
-POSXI.1 では、全体としてのプロセスに送られるシグナルと、
-個別のスレッドに送られるシグナルを区別して考えている。
-POSIX.1 によると、プロセスに送られたシグナル (例えば
-.BR kill (2)
-を使って送る) は、そのプロセスに属すスレッドのうち
-勝手に (arbitrarily) に選択された一つのスレッドにより処理される
-ことになっている。LinuxThreads はプロセスに送られるシグナルの
+POSXI.1 では、全体としてのプロセスに送られるシグナルと、 個別のスレッドに送られるシグナルを区別して考えている。 POSIX.1
+によると、プロセスに送られたシグナル (例えば \fBkill\fP(2)  を使って送る) は、そのプロセスに属すスレッドのうち 勝手に
+(arbitrarily) に選択された一つのスレッドにより処理される ことになっている。LinuxThreads はプロセスに送られるシグナルの
 概念に対応しておらず、シグナルは特定のスレッドにだけ送ることができる。
 .IP \- 3
-.\"O Threads have distinct alternate signal stack settings.
-.\"O However, a new thread's alternate signal stack settings
-.\"O are copied from the thread that created it, so that
-.\"O the threads initially share an alternate signal stack.
-.\"O (A new thread should start with no alternate signal stack defined.
-.\"O If two threads handle signals on their shared alternate signal
-.\"O stack at the same time, unpredictable program failures are
-.\"O likely to occur.)
-スレッドはそれぞれの独自の代替シグナルスタックの設定を持つ。
-しかし、新しいスレッドの代替シグナルスタックの設定は
-そのスレッドを作成したスレッドからコピーされ、そのため
-スレッドは最初は一つの代替シグナルスタックを共有する。
-(仕様では、新しいスレッドは代替シグナルスタックが定義されていない状態
-で開始されるべきとされている。
-2つのスレッドが共有されている代替シグナルスタック上で同時に
-シグナルの処理を行った場合、予測不可能なプログラムのエラーが
-起こり得る。)
+スレッドはそれぞれの独自の代替シグナルスタックの設定を持つ。 しかし、新しいスレッドの代替シグナルスタックの設定は
+そのスレッドを作成したスレッドからコピーされ、そのため スレッドは最初は一つの代替シグナルスタックを共有する。
+(仕様では、新しいスレッドは代替シグナルスタックが定義されていない状態 で開始されるべきとされている。
+2つのスレッドが共有されている代替シグナルスタック上で同時に シグナルの処理を行った場合、予測不可能なプログラムのエラーが 起こり得る。)
 .SS NPTL
-.\"O With NPTL, all of the threads in a process are placed
-.\"O in the same thread group;
-.\"O all members of a thread group share the same PID.
-.\"O NPTL does not employ a manager thread.
-.\"O NPTL makes internal use of the first two real-time signals
-.\"O (see also
-.\"O .BR signal (7));
-.\"O these signals cannot be used in applications.
-NPTL では、一つのプロセスの全てのスレッドは同じスレッド・グループ
-に属する; スレッド・グループの全メンバーは同じ PID を共有する。
-NPTL は管理スレッド (manager thread) を利用しない。
-NPTL は内部でリアルタイムシグナルのうち最初の 2つの番号を使用しており
-.RB ( signal (7)
-参照)、これらのシグナルはアプリケーションでは使用できない。
+NPTL では、一つのプロセスの全てのスレッドは同じスレッド・グループ に属する; スレッド・グループの全メンバーは同じ PID を共有する。 NPTL
+は管理スレッド (manager thread) を利用しない。 NPTL は内部でリアルタイムシグナルのうち最初の 2つの番号を使用しており
+(\fBsignal\fP(7)  参照)、これらのシグナルはアプリケーションでは使用できない。
 
-.\"O NPTL still has at least one nonconformance with POSIX.1:
 NPTL にも POSIX.1 に準拠していない点が少なくとも一つある:
 .IP \- 3
-.\"O Threads do not share a common nice value.
-スレッドは共通の nice 値を共有しない。
 .\" FIXME . bug report filed for NPTL nice nonconformance
 .\" http://bugzilla.kernel.org/show_bug.cgi?id=6258
 .\" Sep 08: there is a patch by Denys Vlasenko to address this
 .\" "make setpriority POSIX compliant; introduce PRIO_THREAD extension"
 .\" Monitor this to see if it makes it into mainline.
+スレッドは共通の nice 値を共有しない。
 .PP
-.\"O Some NPTL nonconformances only occur with older kernels:
 NPTL の標準非準拠な点のうちいくつかは以前のカーネルでのみ発生する:
 .IP \- 3
-.\"O The information returned by
-.\"O .BR times (2)
-.\"O and
-.\"O .BR getrusage (2)
-.\"O is per-thread rather than process-wide (fixed in kernel 2.6.9).
-.BR times (2)
-と
-.BR getrusage (2)
-が返す情報がプロセス全体の情報でなくスレッド単位の情報である
-(カーネル 2.6.9 で修正された)。
+\fBtimes\fP(2)  と \fBgetrusage\fP(2)  が返す情報がプロセス全体の情報でなくスレッド単位の情報である (カーネル 2.6.9
+で修正された)。
 .IP \- 3
-.\"O Threads do not share resource limits (fixed in kernel 2.6.10).
 スレッド間でリソース制限を共有しない (カーネル 2.6.10 で修正された)。
 .IP \- 3
-.\"O Threads do not share interval timers (fixed in kernel 2.6.12).
-スレッド間でインターバル・タイマを共有しない
-(カーネル 2.6.12 で修正された)。
+スレッド間でインターバル・タイマを共有しない (カーネル 2.6.12 で修正された)。
 .IP \- 3
-.\"O Only the main thread is permitted to start a new session using
-.\"O .BR setsid (2)
-.\"O (fixed in kernel 2.6.16).
-メインスレッドだけが
-.BR setsid (2)
-を使って新しいセッションを開始することができる
-(カーネル 2.6.16 で修正された)。
+メインスレッドだけが \fBsetsid\fP(2)  を使って新しいセッションを開始することができる (カーネル 2.6.16 で修正された)。
 .IP \- 3
-.\"O Only the main thread is permitted to make the process into a
-.\"O process group leader using
-.\"O .BR setpgid (2)
-.\"O (fixed in kernel 2.6.16).
-メインスレッドだけが
-.BR setpgid (2)
-を使ってそのプロセスをプロセス・グループ・リーダーにすることができる
-(カーネル 2.6.16 で修正された)。
+メインスレッドだけが \fBsetpgid\fP(2)  を使ってそのプロセスをプロセス・グループ・リーダーにすることができる (カーネル 2.6.16
+で修正された)。
 .IP \- 3
-.\"O Threads have distinct alternate signal stack settings.
-.\"O However, a new thread's alternate signal stack settings
-.\"O are copied from the thread that created it, so that
-.\"O the threads initially share an alternate signal stack
-.\"O (fixed in kernel 2.6.16).
-スレッドはそれぞれの独自の代替シグナルスタックの設定を持つ。
-しかし、新しいスレッドの代替シグナルスタックの設定は
-そのスレッドを作成したスレッドからコピーされ、そのため
-スレッドは最初は一つの代替シグナルスタックを共有する
-(カーネル 2.6.16 で修正された)。
+スレッドはそれぞれの独自の代替シグナルスタックの設定を持つ。 しかし、新しいスレッドの代替シグナルスタックの設定は
+そのスレッドを作成したスレッドからコピーされ、そのため スレッドは最初は一つの代替シグナルスタックを共有する (カーネル 2.6.16 で修正された)。
 .PP
-.\"O Note the following further points about the NPTL implementation:
 NPTL の実装では以下の点についても注意すること:
 .IP \- 3
-.\"O If the stack size soft resource limit (see the description of
-.\"O .B RLIMIT_STACK
-.\"O in
-.\"O .BR setrlimit (2))
-.\"O is set to a value other than
-.\"O .IR unlimited ,
-.\"O then this value defines the default stack size for new threads.
-.\"O To be effective, this limit must be set before the program
-.\"O is executed, perhaps using the
-.\"O .I ulimit -s
-.\"O shell built-in command
-.\"O .RI ( "limit stacksize"
-.\"O in the C shell).
-スタックサイズのリソースのソフト・リミット
-.RB ( setrlimit (2)
-の
-.B RLIMIT_STACK
-の説明を参照) が
-.I unlimited
-以外の値に設定されている場合、ソフト・リミットの値が
-新しいスレッドのデフォルトのスタックサイズとなる。
-設定を有効にするためには、プログラムを実行する前にリミット値を
-設定しておかなければならない。たいていは、シェルの組み込みコマンドの
-.I ulimit -s
-(C シェルでは
-.IR "limit stacksize" )
-を使って設定する。
-.\"O .SS "Determining the Threading Implementation"
-.SS "スレッド実装の判定"
-.\"O Since glibc 2.3.2, the
-.\"O .BR getconf (1)
-.\"O command can be used to determine
-.\"O the system's threading implementation, for example:
-glibc 2.3.2 以降では、
-.BR getconf (1)
-コマンドを使って、
-システムのスレッド実装を判定することができる。
-以下に例を示す:
+スタックサイズのリソースのソフト・リミット (\fBsetrlimit\fP(2)  の \fBRLIMIT_STACK\fP の説明を参照) が
+\fIunlimited\fP 以外の値に設定されている場合、ソフト・リミットの値が 新しいスレッドのデフォルトのスタックサイズとなる。
+設定を有効にするためには、プログラムを実行する前にリミット値を 設定しておかなければならない。たいていは、シェルの組み込みコマンドの \fIulimit
+\-s\fP (C シェルでは \fIlimit stacksize\fP)  を使って設定する。
+.SS スレッド実装の判定
+glibc 2.3.2 以降では、 \fBgetconf\fP(1)  コマンドを使って、 システムのスレッド実装を判定することができる。 以下に例を示す:
 .nf
 .in +4n
 
@@ -1170,84 +721,42 @@ NPTL 2.3.4
 .in
 .fi
 .PP
-.\"O With older glibc versions, a command such as the following should
-.\"O be sufficient to determine the default threading implementation:
-ぞれ以前の glibc のバージョンでは、以下のようなコマンドで
-デフォルトのスレッド実装を判定することができる。
+ぞれ以前の glibc のバージョンでは、以下のようなコマンドで デフォルトのスレッド実装を判定することができる。
 .nf
 .in +4n
 
-bash$ $( ldd /bin/ls | grep libc.so | awk \(aq{print $3}\(aq ) | \\
+bash$ $( ldd /bin/ls | grep libc.so | awk \(aq{print $3}\(aq ) | \e
                 egrep \-i \(aqthreads|ntpl\(aq
         Native POSIX Threads Library by Ulrich Drepper et al
 .in
 .fi
-.\"O .SS "Selecting the Threading Implementation: LD_ASSUME_KERNEL"
 .SS "スレッドの実装の選択: LD_ASSUME_KERNEL"
-.\"O On systems with a glibc that supports both LinuxThreads and NPTL
-.\"O (i.e., glibc 2.3.\fIx\fP), the
-.\"O .B LD_ASSUME_KERNEL
-.\"O environment variable can be used to override
-.\"O the dynamic linker's default choice of threading implementation.
-.\"O This variable tells the dynamic linker to assume that it is
-.\"O running on top of a particular kernel version.
-LinuxThreads と NPTL の両方をサポートしている glibc
-(glibc 2.3.\fIx\fP) があるシステムでは、
-.B LD_ASSUME_KERNEL
-環境変数を使うことで、動的リンカがデフォルトで
-選択するスレッド実装を上書きすることができる。
-この変数により、動的リンカが特定のバージョンのカーネル上で
-動作していると仮定するように指定する。
-.\"O By specifying a kernel version that does not
-.\"O provide the support required by NPTL, we can force the use
-.\"O of LinuxThreads.
-.\"O (The most likely reason for doing this is to run a
-.\"O (broken) application that depends on some nonconformant behavior
-.\"O in LinuxThreads.)
-.\"O For example:
-NPTL が必要とするサポート機能を提供していないカーネルバージョンを
-指定することで、強制的に LinuxThreads を使うことができる
-(このようなことをする最もありそうな場面は、
-LinuxThreads の標準非準拠な振舞いに依存する (壊れた) アプリケーション
-を動作させる場合だろう)。
-以下に例を示す:
+LinuxThreads と NPTL の両方をサポートしている glibc (glibc 2.3.\fIx\fP) があるシステムでは、
+\fBLD_ASSUME_KERNEL\fP 環境変数を使うことで、動的リンカがデフォルトで 選択するスレッド実装を上書きすることができる。
+この変数により、動的リンカが特定のバージョンのカーネル上で 動作していると仮定するように指定する。 NPTL
+が必要とするサポート機能を提供していないカーネルバージョンを 指定することで、強制的に LinuxThreads を使うことができる
+(このようなことをする最もありそうな場面は、 LinuxThreads の標準非準拠な振舞いに依存する (壊れた) アプリケーション
+を動作させる場合だろう)。 以下に例を示す:
 .nf
 .in +4n
 
-bash$ $( LD_ASSUME_KERNEL=2.2.5 ldd /bin/ls | grep libc.so | \\
+bash$ $( LD_ASSUME_KERNEL=2.2.5 ldd /bin/ls | grep libc.so | \e
                 awk \(aq{print $3}\(aq ) | egrep \-i \(aqthreads|ntpl\(aq
-        linuxthreads-0.10 by Xavier Leroy
+        linuxthreads\-0.10 by Xavier Leroy
 .in
 .fi
-.\"O .SH "SEE ALSO"
 .SH 関連項目
-.BR clone (2),
-.BR futex (2),
-.BR gettid (2),
-.BR futex (7),
-.BR sigevent (7),
-.BR signal (7),
+.ad l
+.nh
+\fBclone\fP(2), \fBfutex\fP(2), \fBgettid\fP(2), \fBfutex\fP(7), \fBsigevent\fP(7),
+\fBsignal\fP(7),
 .br
-.\"O and various Pthreads manual pages, for example:
-および Pthreads の各種マニュアルページ、例えば:
-.BR pthread_attr_init (3),
-.BR pthread_atfork (3),
-.BR pthread_cancel (3),
-.BR pthread_cleanup_push (3),
-.BR pthread_cond_signal (3),
-.BR pthread_cond_wait (3),
-.BR pthread_create (3),
-.BR pthread_detach (3),
-.BR pthread_equal (3),
-.BR pthread_exit (3),
-.BR pthread_key_create (3),
-.BR pthread_kill (3),
-.BR pthread_mutex_lock (3),
-.BR pthread_mutex_unlock (3),
-.BR pthread_once (3),
-.BR pthread_setcancelstate (3),
-.BR pthread_setcanceltype (3),
-.BR pthread_setspecific (3),
-.BR pthread_sigmask (3),
-.\"O and
-.BR pthread_testcancel (3)
+および Pthreads の各種マニュアルページ、例えば: \fBpthread_attr_init\fP(3),
+\fBpthread_atfork\fP(3), \fBpthread_cancel\fP(3), \fBpthread_cleanup_push\fP(3),
+\fBpthread_cond_signal\fP(3), \fBpthread_cond_wait\fP(3), \fBpthread_create\fP(3),
+\fBpthread_detach\fP(3), \fBpthread_equal\fP(3), \fBpthread_exit\fP(3),
+\fBpthread_key_create\fP(3), \fBpthread_kill\fP(3), \fBpthread_mutex_lock\fP(3),
+\fBpthread_mutex_unlock\fP(3), \fBpthread_once\fP(3),
+\fBpthread_setcancelstate\fP(3), \fBpthread_setcanceltype\fP(3),
+\fBpthread_setspecific\fP(3), \fBpthread_sigmask\fP(3), \fBpthread_sigqueue\fP(3),
+and \fBpthread_testcancel\fP(3)
index 4c2c748..4b38f4c 100644 (file)
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
 .\"
-.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved.
-.\" Translated 2005-10-14, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\"*******************************************************************
 .\"
-.\"WORD:       pseudoterminal          擬似端末
-.\"WORD:       character device        キャラクタデバイス
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH PTY 7 2005-10-10 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.TH PTY 7 2005\-10\-10 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O pty \- pseudoterminal interfaces
 pty \- 擬似端末インタフェース
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O A pseudoterminal (sometimes abbreviated "pty")
-.\"O is a pair of virtual character devices that
-.\"O provide a bidirectional communication channel.
-擬似端末 (pseudoterminal; "pty" と略されることもある) は、
-双方向通信チャンネルを提供する仮想キャラクタデバイスのペアである。
-.\"O One end of the channel is called the
-.\"O .IR master ;
-.\"O the other end is called the
-.\"O .IR slave .
-チャンネルの一方の端点は
-.I マスタ (master)
-と呼ばれ、もう一方の端点は
-.I スレーブ (slave)
-と呼ばれる。
-.\"O The slave end of the pseudoterminal provides an interface
-.\"O that behaves exactly like a classical terminal.
-.\"O A process that expects to be connected to a terminal,
-.\"O can open the slave end of a pseudoterminal and
-.\"O then be driven by a program that has opened the master end.
-擬似端末のスレーブは、伝統的な端末と全く同じ動作をするインタフェースを
-提供する。端末に接続されることを想定しているプロセスは擬似端末の
-スレーブをオープンすることができ、それ以降はマスタ側をオープン
-しているプログラムからそのプロセスを制御することができる。
-.\"O Anything that is written on the master end is provided to the process
-.\"O on the slave end as though it was input typed on a terminal.
-.\"O For example, writing the interrupt character (usually control-C)
-.\"O to the master device would cause an interrupt signal
-.\"O .RB ( SIGINT )
-.\"O to be generated for the foreground process group
-.\"O that is connected to the slave.
-.\"O Conversely, anything that is written to the slave end of the
-.\"O pseudoterminal can be read by the process that is connected to
-.\"O the master end.
-端末で入力されたのと同じように、
-マスタ側に書き込まれた全てのデータは、スレーブ側のプロセスに送られる。
-例えば、マスタデバイスに割り込みキャラクタ (通常は control-C) を書き込むと、
-スレーブに接続されているフォアグラウンド・プロセスグループに対して
-割り込みシグナル
-.RB ( SIGINT )
-が生成される。
-反対に、擬似端末のスレーブ側に書き込まれた全てのデータは、
-マスタ側に接続されているプロセスから読み出すことができる。
-.\"O Pseudoterminals are used by applications such as network login services
-.\"O .RB ( ssh "(1), " rlogin "(1), " telnet (1)),
-.\"O terminal emulators,
-.\"O .BR script (1),
-.\"O .BR screen (1),
-.\"O and
-.\"O .BR expect (1).
-擬似端末は、ネットワークログインサービス
-.RB ( ssh "(1), " rlogin "(1), " telnet (1))
-や端末エミュレータ、
-.BR script (1),
-.BR screen (1),
-.BR expect (1)
+擬似端末 (pseudoterminal; "pty" と略されることもある) は、 双方向通信チャンネルを提供する仮想キャラクタデバイスのペアである。
+チャンネルの一方の端点は \fIマスタ (master)\fP と呼ばれ、もう一方の端点は \fIスレーブ (slave)\fP と呼ばれる。
+擬似端末のスレーブは、伝統的な端末と全く同じ動作をするインタフェースを 提供する。端末に接続されることを想定しているプロセスは擬似端末の
+スレーブをオープンすることができ、それ以降はマスタ側をオープン しているプログラムからそのプロセスを制御することができる。
+端末で入力されたのと同じように、 マスタ側に書き込まれた全てのデータは、スレーブ側のプロセスに送られる。 例えば、マスタデバイスに割り込みキャラクタ
+(通常は control\-C) を書き込むと、 スレーブに接続されているフォアグラウンド・プロセスグループに対して 割り込みシグナル
+(\fBSIGINT\fP)  が生成される。 反対に、擬似端末のスレーブ側に書き込まれた全てのデータは、
+マスタ側に接続されているプロセスから読み出すことができる。 擬似端末は、ネットワークログインサービス (\fBssh\fP(1), \fBrlogin\fP(1),
+\fBtelnet\fP(1))  や端末エミュレータ、 \fBscript\fP(1), \fBscreen\fP(1), \fBexpect\fP(1)
 などのアプリケーションで使用されている。
 
-.\"O Historically, two pseudoterminal APIs have evolved: BSD and System V.
-.\"O SUSv1 standardized a pseudoterminal API based on the System V API,
-.\"O and this API should be employed in all new programs that use
-.\"O pseudoterminals.
-歴史的に見ると BSD と System V の2種類の擬似端末の API が発展してきている。
-SUSv1 は System V API に基づいた擬似端末 API を標準化しており、
-擬似端末を使用する新しいプログラムはすべてこの API を採用すべきである。
+歴史的に見ると BSD と System V の2種類の擬似端末の API が発展してきている。 SUSv1 は System V API
+に基づいた擬似端末 API を標準化しており、 擬似端末を使用する新しいプログラムはすべてこの API を採用すべきである。
 
-.\"O Linux provides both BSD-style and (standardized) System V-style
-.\"O pseudoterminals.
-.\"O System V-style terminals are commonly called UNIX 98 pseudoterminals
-.\"O on Linux systems.
-.\"O Since kernel 2.6.4, BSD-style pseudoterminals are considered deprecated
-.\"O (they can be disabled when configuring the kernel);
-.\"O UNIX 98 pseudoterminals should be used in new applications.
-Linux では BSD 風と (標準化された) System V 風の擬似端末を提供している。
-System V 風の端末は、Linux システムでは一般に UNIX 98 擬似端末と呼ばれている。
-カーネル 2.6.4 以降では、BSD 風の擬似端末は廃止予定とみなされている
-(カーネルのコンフィギュレーションで BSD 風の擬似端末を無効にすることができる)。
-新しいアプリケーションでは、UNIX 98 擬似端末を使用すべきである。
-.\"O .SS "UNIX 98 pseudoterminals"
+Linux では BSD 風と (標準化された) System V 風の擬似端末を提供している。 System V 風の端末は、Linux
+システムでは一般に UNIX 98 擬似端末と呼ばれている。 カーネル 2.6.4 以降では、BSD 風の擬似端末は廃止予定とみなされている
+(カーネルのコンフィギュレーションで BSD 風の擬似端末を無効にすることができる)。 新しいアプリケーションでは、UNIX 98
+擬似端末を使用すべきである。
 .SS "UNIX 98 擬似端末"
-.\"O An unused UNIX 98 pseudoterminal master is opened by calling
-.\"O .BR posix_openpt (3).
-.\"O (This function opens the master clone device,
-.\"O .IR /dev/ptmx ;
-.\"O see
-.\"O .BR pts (4).)
-未使用の UNIX 98 擬似端末マスタをオープンするには
-.BR posix_openpt (3)
-を呼び出す
-(この関数はマスタ・クローン・デバイス (master clone device),
-.I /dev/ptmx
-をオープンする;
-.BR pts (4)
-を参照)。
-.\"O After performing any program-specific initializations,
-.\"O changing the ownership and permissions of the slave device using
-.\"O .BR grantpt (3),
-.\"O and unlocking the slave using
-.\"O .BR unlockpt (3)),
-.\"O the corresponding slave device can be opened by passing
-.\"O the name returned by
-.\"O .BR ptsname (3)
-.\"O in a call to
-.\"O .BR open (2).
-プログラム固有の初期化処理を実行し、
-.BR grantpt (3)
-を使ってスレーブデバイスの所有権や許可を変更し、
-.BR unlockpt (3)
-を使ってスレーブのロック解除を行うと、
-.BR ptsname (3)
-が返す名前を渡して
-.BR open (2)
-を呼び出すことにより
+未使用の UNIX 98 擬似端末マスタをオープンするには \fBposix_openpt\fP(3)  を呼び出す (この関数はマスタ・クローン・デバイス
+(master clone device), \fI/dev/ptmx\fP をオープンする; \fBpts\fP(4)  を参照)。
+プログラム固有の初期化処理を実行し、 \fBgrantpt\fP(3)  を使ってスレーブデバイスの所有権や許可を変更し、 \fBunlockpt\fP(3)
+を使ってスレーブのロック解除を行うと、 \fBptsname\fP(3)  が返す名前を渡して \fBopen\fP(2)  を呼び出すことにより
 対応するスレーブデバイスをオープンできるようになる。
 
-.\"O The Linux kernel imposes a limit on the number of available
-.\"O UNIX 98 pseudoterminals.
-.\"O In kernels up to and including 2.6.3, this limit is configured
-.\"O at kernel compilation time
-.\"O .RB ( CONFIG_UNIX98_PTYS ),
-.\"O and the permitted number of pseudoterminals can be up to 2048,
-.\"O with a default setting of 256.
-.\"O Since kernel 2.6.4, the limit is dynamically adjustable via
-.\"O .IR /proc/sys/kernel/pty/max ,
-.\"O and a corresponding file,
-.\"O .IR /proc/sys/kernel/pty/nr ,
-.\"O indicates how many pseudoterminals are currently in use.
-.\"O For further details on these two files, see
-.\"O .BR proc (5).
-Linux カーネルでは、利用できる UNIX 98 擬似端末の数に上限を設けている。
-2.6.3 以前のカーネルでは、この上限はカーネルのコンパイル時の設定
-.RB ( CONFIG_UNIX98_PTYS )
-である。許可される擬似端末の数は最大 2048 であり、
-デフォルトの設定は 256 である。
-カーネル 2.6.4 以降では、この上限は
-.I /proc/sys/kernel/pty/max
-経由で動的に調整可能となっている。また、
-.I /proc/sys/kernel/pty/nr
-で現在使用中の擬似端末の数を取得できる。
-この 2つのファイルの詳細は
-.BR proc (5)
-を参照。
-.\"O .SS "BSD pseudoterminals"
+Linux カーネルでは、利用できる UNIX 98 擬似端末の数に上限を設けている。 2.6.3
+以前のカーネルでは、この上限はカーネルのコンパイル時の設定 (\fBCONFIG_UNIX98_PTYS\fP)  である。許可される擬似端末の数は最大
+2048 であり、 デフォルトの設定は 256 である。 カーネル 2.6.4 以降では、この上限は
+\fI/proc/sys/kernel/pty/max\fP 経由で動的に調整可能となっている。また、 \fI/proc/sys/kernel/pty/nr\fP
+で現在使用中の擬似端末の数を取得できる。 この 2つのファイルの詳細は \fBproc\fP(5)  を参照。
 .SS "BSD 擬似端末"
-.\"O BSD-style pseudoterminals are provided as precreated pairs, with
-.\"O names of the form
-.\"O .I /dev/ptyXY
-.\"O (master) and
-.\"O .I /dev/ttyXY
-.\"O (slave),
-.\"O where X is a letter from the 16-character set [p-za-e],
-.\"O and Y is a letter from the 16-character set [0-9a-f].
-.\"O (The precise range of letters in these two sets varies across UNIX
-.\"O implementations.)
-BSD 風の擬似端末はあらかじめ作成されたペアとして提供される。その名前は
-.I /dev/ptyXY
-(マスタ側)、
-.I /dev/ttyXY
-(スレーブ側) である。ここで、
-X は [p-za-e] の 16文字のうちの一文字、
-Y は [0-9a-f] の 16文字のうちの一文字である
-(X, Y に使われる文字の正確な範囲は UNIX の実装により異なる)。
-.\"O For example,
-.\"O .I /dev/ptyp1
-.\"O and
-.\"O .I /dev/ttyp1
-.\"O constitute a BSD pseudoterminal pair.
-例えば、
-.I /dev/ptyp1
-と
-.I /dev/ttyp1
-は BSD 擬似端末ペアを構成する。
-.\"O A process finds an unused pseudoterminal pair by trying to
-.\"O .BR open (2)
-.\"O each pseudoterminal master until an open succeeds.
-.\"O The corresponding pseudoterminal slave (substitute "tty"
-.\"O for "pty" in the name of the master) can then be opened.
-プロセスが未使用の擬似端末ペアを見つけるには、
-各擬似端末のマスタの
-.BR open (2)
-を試み、open が成功するまでこれを繰り返す。
-マスタを open すると、対応する擬似端末のスレーブも open できるようになる
-(スレーブの名前は、マスタの名前の "pty" を "tty" に置き換えたものである)。
-.\"O .SH "FILES"
+BSD 風の擬似端末はあらかじめ作成されたペアとして提供される。その名前は \fI/dev/ptyXY\fP (マスタ側)、 \fI/dev/ttyXY\fP
+(スレーブ側) である。ここで、 X は [p\-za\-e] の 16文字のうちの一文字、 Y は [0\-9a\-f] の 16文字のうちの一文字である
+(X, Y に使われる文字の正確な範囲は UNIX の実装により異なる)。 例えば、 \fI/dev/ptyp1\fP と \fI/dev/ttyp1\fP は
+BSD 擬似端末ペアを構成する。 プロセスが未使用の擬似端末ペアを見つけるには、 各擬似端末のマスタの \fBopen\fP(2)  を試み、open
+が成功するまでこれを繰り返す。 マスタを open すると、対応する擬似端末のスレーブも open できるようになる (スレーブの名前は、マスタの名前の
+"pty" を "tty" に置き換えたものである)。
 .SH ファイル
-.I /dev/ptmx
-(UNIX 98 マスタ・クローン・デバイス)
+\fI/dev/ptmx\fP (UNIX 98 マスタ・クローン・デバイス)
 .br
-.I /dev/pts/*
-(UNIX 98 スレーブデバイス)
+\fI/dev/pts/*\fP (UNIX 98 スレーブデバイス)
 .br
-.I /dev/pty[p-za-e][0-9a-f]
-(BSD マスタデバイス)
+\fI/dev/pty[p\-za\-e][0\-9a\-f]\fP (BSD マスタデバイス)
 .br
-.I /dev/tty[p-za-e][0-9a-f]
-(BSD スレーブデバイス)
-.\"O .SH "NOTES"
+\fI/dev/tty[p\-za\-e][0\-9a\-f]\fP (BSD スレーブデバイス)
 .SH 注意
-.\"O A description of the
-.\"O .B TIOCPKT
-.\"O .BR ioctl (2),
-.\"O which controls packet mode operation, can be found in
-.\"O .BR tty_ioctl (4).
-パケット・モード操作の制御を行う
-.B TIOCPKT
-.BR ioctl (2)
-の説明は
-.BR tty_ioctl (4)
-に書かれている。
+パケット・モード操作の制御を行う \fBTIOCPKT\fP \fBioctl\fP(2)  の説明は \fBtty_ioctl\fP(4)  に書かれている。
 
-.\"O The BSD
-.\"O .BR ioctl (2)
-.\"O operations
-.\"O .BR TIOCSTOP ,
-.\"O .BR TIOCSTART ,
-.\"O .BR TIOCUCNTL ,
-.\"O and
-.\"O .BR TIOCREMOTE
-.\"O have not been implemented under Linux.
-BSD
-.BR ioctl (2)
-の
-.BR TIOCSTOP ,
-.BR TIOCSTART ,
-.BR TIOCUCNTL ,
-.B TIOCREMOTE
+BSD \fBioctl\fP(2)  の \fBTIOCSTOP\fP, \fBTIOCSTART\fP, \fBTIOCUCNTL\fP, \fBTIOCREMOTE\fP
 はこれまでのところ Linux では実装されていない。
-.\"O .SH "SEE ALSO"
 .SH 関連項目
-.BR select (2),
-.BR setsid (2),
-.BR forkpty (3),
-.BR openpty (3),
-.BR termios (3),
-.BR pts (4),
-.BR tty (4),
-.BR tty_ioctl (4)
+\fBselect\fP(2), \fBsetsid\fP(2), \fBforkpty\fP(3), \fBopenpty\fP(3), \fBtermios\fP(3),
+\fBpts\fP(4), \fBtty\fP(4), \fBtty_ioctl\fP(4)
index 2e3f70c..700d30d 100644 (file)
@@ -1,4 +1,4 @@
-'\" t
+.\" t
 .\" Don't change the first line, it tells man that we need tbl.
 .\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
 .\" Permission is granted to distribute possibly modified copies
 .\" and in case of nontrivial modification author and date
 .\" of the modification is added to the header.
 .\" $Id: raw.7,v 1.6 1999/06/05 10:32:08 freitag Exp $
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
-.\" Translated 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated 2007-01-05, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.43
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\"WORD         link level header(s)    リンクレベルヘッダ
-.\"WORD         effective user ID       実効ユーザー ID
-.\"WORD         capability              権限
-.\"WORD         route                   (パケットの) 経路
-.\"
-.TH RAW  7 2008-11-20 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O raw, SOCK_RAW \- Linux IPv4 raw sockets
+.\"*******************************************************************
+.TH RAW 7 2008\-11\-20 Linux "Linux Programmer's Manual"
 .SH 名前
 raw, SOCK_RAW \- Linux の IPv4 raw ソケット
-.\"O .SH SYNOPSIS
 .SH 書式
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .br
-.B #include <netinet/in.h>
+\fB#include <netinet/in.h>\fP
 .br
-.BI "raw_socket = socket(AF_INET, SOCK_RAW, int " protocol );
-.\"O .SH DESCRIPTION
+\fBraw_socket = socket(AF_INET, SOCK_RAW, int \fP\fIprotocol\fP\fB);\fP
 .SH 説明
-.\"O Raw sockets allow new IPv4 protocols to be implemented in user space.
-.\"O A raw socket receives or sends the raw datagram not
-.\"O including link level headers.
-raw ソケットを使うと、新しい IPv4 プロトコルをユーザ空間で
-実装できるようになる。 raw ソケットは、リンクレベルヘッダを
-含まない raw データグラムの送受信ができる。
+raw ソケットを使うと、新しい IPv4 プロトコルをユーザ空間で 実装できるようになる。 raw ソケットは、リンクレベルヘッダを 含まない raw
+データグラムの送受信ができる。
 
-.\"O The IPv4 layer generates an IP header when sending a packet unless the
-.\"O .B IP_HDRINCL
-.\"O socket option is enabled on the socket.
-.\"O When it is enabled, the packet must contain an IP header.
-.\"O For receiving the IP header is always included in the packet.
-IPv4 レイヤは、扱っているソケットで
-.B IP_HDRINCL
-ソケットオプションが有効になっていなければ、
-パケットを送信するときに IP ヘッダを生成する。
-.B IP_HDRINCL
-オプションが有効になっているときは、パケットには
-IP ヘッダが含まれていなければならない。
+IPv4 レイヤは、扱っているソケットで \fBIP_HDRINCL\fP ソケットオプションが有効になっていなければ、 パケットを送信するときに IP
+ヘッダを生成する。 \fBIP_HDRINCL\fP オプションが有効になっているときは、パケットには IP ヘッダが含まれていなければならない。
 受信時には、 IP ヘッダは常にパケットに含まれている。
 
-.\"O Only processes with an effective user ID of 0 or the
-.\"O .B CAP_NET_RAW
-.\"O capability are allowed to open raw sockets.
-実効ユーザー ID が 0 のプロセスか、
-.B CAP_NET_RAW
-権限を持つプロセスだけが raw ソケットをオープンすることができる。
+実効ユーザー ID が 0 のプロセスか、 \fBCAP_NET_RAW\fP 権限を持つプロセスだけが raw ソケットをオープンすることができる。
 
-.\"O All packets or errors matching the
-.\"O .I protocol
-.\"O number specified
-.\"O for the raw socket are passed to this socket.
-.\"O For a list of the allowed protocols see RFC\ 1700 assigned numbers and
-.\"O .BR getprotobyname (3).
-この raw ソケットに指定された
-.I protocol
-番号にマッチする全てのパケットとエラーとが、このソケットに渡される。
-許可されているプロトコルのリストは RFC\ 1700 の割り当て番号と
-.BR getprotobyname (3)
-を見よ。
+この raw ソケットに指定された \fIprotocol\fP 番号にマッチする全てのパケットとエラーとが、このソケットに渡される。
+許可されているプロトコルのリストは RFC\ 1700 の割り当て番号と \fBgetprotobyname\fP(3)  を見よ。
 
-.\"O A protocol of
-.\"O .B IPPROTO_RAW
-.\"O implies enabled
-.\"O .B IP_HDRINCL
-.\"O and is able to send any IP protocol that is specified in the passed
-.\"O header.
-.\"O Receiving of all IP protocols via
-.\"O .B IPPROTO_RAW
-.\"O is not possible using raw sockets.
-.B IPPROTO_RAW
-のプロトコルは暗黙のうちに
-.B IP_HDRINCL
-を有効にするので、
-渡されたヘッダで指定された、あらゆる IP プロトコルを送信できる。
-.B IPPROTO_RAW
-経由でのあらゆる IP プロトコルの受信は、
-raw ソケットを用いては行えない。
-.\"O
+\fBIPPROTO_RAW\fP のプロトコルは暗黙のうちに \fBIP_HDRINCL\fP を有効にするので、 渡されたヘッダで指定された、あらゆる IP
+プロトコルを送信できる。 \fBIPPROTO_RAW\fP 経由でのあらゆる IP プロトコルの受信は、 raw ソケットを用いては行えない。
+.RS
 .TS
 tab(:) allbox;
 c s
 l l.
-.\"O IP Header fields modified on sending by \fBIP_HDRINCL\fP
-.\"O IP Checksum:Always filled in.
-.\"O Source Address:Filled in when zero.
-.\"O Packet Id:Filled in when zero.
-.\"O Total Length:Always filled in.
 IP ヘッダフィールド。 \fBIP_HDRINCL\fP によって送信時に変更される。
 IP チェックサム:常に変更される。
 ソースアドレス:元の値が 0 の時に変更される。
 パケット ID:元の値が 0 の時に変更される。
 全体の長さ:常に埋められる。
 .TE
-.\"O.RE
+.RE
 .sp
 .PP
-.\"NAKANO Aloways filled in. とは?
-.\"O If
-.\"O .B IP_HDRINCL
-.\"O is specified and the IP header has a nonzero destination address then
-.\"O the destination address of the socket is used to route the packet.
-.\"O When
-.\"O .B MSG_DONTROUTE
-.\"O is specified, the destination address should refer to a local interface,
-.\"O otherwise a routing table lookup is done anyway but gatewayed routes
-.\"O are ignored.
-.B IP_HERINCL
-が指定されていて、 IP ヘッダに
-0 でない送信先アドレスが記入されていた場合は、
-その送信先アドレスがパケットの経路を決めるのに用いられる。
-.B MSG_DONTROUTE
-が指定されている時には、
-送信先アドレスはローカルなインターフェースを参照するものでなければならない。
-さもないと、ルーティングテーブルの参照はいずれにせよ行われるが、
+\fBIP_HERINCL\fP が指定されていて、 IP ヘッダに 0 でない送信先アドレスが記入されていた場合は、
+その送信先アドレスがパケットの経路を決めるのに用いられる。 \fBMSG_DONTROUTE\fP が指定されている時には、
+送信先アドレスはローカルなインターフェースを参照するものでなければならない。 さもないと、ルーティングテーブルの参照はいずれにせよ行われるが、
 ゲートウェイが必要な経路は無視される。
-.\"NAKANO ローカルなネットなのかインターフェースなのか?
 
-.\"O If
-.\"O .B IP_HDRINCL
-.\"O isn't set, then IP header options can be set on raw sockets with
-.\"O .BR setsockopt (2);
-.\"O see
-.\"O .BR ip (7)
-.\"O for more information.
-.B IP_HDRINCL
-がセットされていなければ、
-raw ソケットの IP ヘッダオプションを
-.BR setsockopt (2)
-を用いて設定することができる。詳細な情報は
-.BR ip (7)
-を見よ。
+\fBIP_HDRINCL\fP がセットされていなければ、 raw ソケットの IP ヘッダオプションを \fBsetsockopt\fP(2)
+を用いて設定することができる。詳細な情報は \fBip\fP(7)  を見よ。
 
-.\"O In Linux 2.2, all IP header fields and options can be set using
-.\"O IP socket options.
-.\"O This means raw sockets are usually only needed for new
-.\"O protocols or protocols with no user interface (like ICMP).
-Linux 2.2 では、 IP ヘッダの全てのフィールドとオプションとを
-IP ソケットオプションによって設定できる。したがって
-raw ソケットが必要になるのは、新しいプロトコルを設計する場合か、
-ユーザーインターフェースを持たないプロトコル (ICMP など) を扱う場合に
-限られる。
+Linux 2.2 では、 IP ヘッダの全てのフィールドとオプションとを IP ソケットオプションによって設定できる。したがって raw
+ソケットが必要になるのは、新しいプロトコルを設計する場合か、 ユーザーインターフェースを持たないプロトコル (ICMP など) を扱う場合に 限られる。
 
-.\"O When a packet is received, it is passed to any raw sockets which have
-.\"O been bound to its protocol before it is passed to other protocol handlers
-.\"O (e.g., kernel protocol modules).
-パケットは、受信されるとまずプロトコルにバインドしている
-raw ソケットに渡され、
-その後で他のプロトコルハンドラ (カーネルのプロトコルモジュールなど)
-に渡される。
-.\"O .SS Address Format
+パケットは、受信されるとまずプロトコルにバインドしている raw ソケットに渡され、 その後で他のプロトコルハンドラ
+(カーネルのプロトコルモジュールなど)  に渡される。
 .SS アドレスのフォーマット
-.\"O Raw sockets use the standard
-.\"O .I sockaddr_in
-.\"O address structure defined in
-.\"O .BR ip (7).
-.\"O The
-.\"O .I sin_port
-.\"O field could be used to specify the IP protocol number,
-.\"O but it is ignored for sending in Linux 2.2 and should be always
-.\"O set to 0 (see BUGS).
-.\"O For incoming packets,
-.\"O .I sin_port
-.\"O is set to the protocol of the packet.
-.\"O See the
-.\"O .I <netinet/in.h>
-.\"O include file for valid IP protocols.
-raw ソケットは標準の
-.I sockaddr_in
-アドレス構造体を用いる。定義は
-.BR ip (7)
-でなされている。
-.I sin_port
-フィールドを IP プロトコル番号の指定に用いることができるが、
-Linux 2.2 ではこれは送信時には無視され、常に 0 にされる
-(バグ の項を参照)。
-受信パケットに対しては、
-.I sin_port
-はそのパケットのプロトコルにセットされる。
-用いることのできる IP プロトコルは、インクルードファイル
-.I <netinet/in.h>
-を見よ。
-.\"O .SS Socket Options
+raw ソケットは標準の \fIsockaddr_in\fP アドレス構造体を用いる。定義は \fBip\fP(7)  でなされている。 \fIsin_port\fP
+フィールドを IP プロトコル番号の指定に用いることができるが、 Linux 2.2 ではこれは送信時には無視され、常に 0 にされる (バグ
+の項を参照)。 受信パケットに対しては、 \fIsin_port\fP はそのパケットのプロトコルにセットされる。 用いることのできる IP
+プロトコルは、インクルードファイル \fI<netinet/in.h>\fP を見よ。
 .SS ソケットオプション
-.\"O Raw socket options can be set with
-.\"O .BR setsockopt (2)
-.\"O and read with
-.\"O .BR getsockopt (2)
-.\"O by passing the
-.\"O .B IPPROTO_RAW
-.\"O .\" Or SOL_RAW on Linux
-.\"O family flag.
-raw ソケットのオプションは、
-.B IPPROTO_RAW
-.\" もしくは Linux では .I SOL_RAW
-ファミリーフラグを与えて
-.BR setsockopt (2)
-を呼べば設定でき、
-.BR getsockopt (2)
-を呼べば取得できる。
-.TP
-.B ICMP_FILTER
-.\"O Enable a special filter for raw sockets bound to the
-.\"O .B IPPROTO_ICMP
-.\"O protocol.
-.\"O The value has a bit set for each ICMP message type which
-.\"O should be filtered out.
-.\"O The default is to filter no ICMP messages.
-.B IPPROTO_ICMP
-プロトコルにバインドされた raw ソケットのための特殊なフィルタを有効にする。
-この値は ICMP メッセージのタイプそれぞれに対して、どれをフィルターアウト
-するかを表したビットセットである。デフォルトでは
-ICMP メッセージは全くフィルターしない。
+.\" Or SOL_RAW on Linux
+raw ソケットのオプションは、 \fBIPPROTO_RAW\fP ファミリーフラグを与えて \fBsetsockopt\fP(2)  を呼べば設定でき、
+\fBgetsockopt\fP(2)  を呼べば取得できる。
+.TP 
+\fBICMP_FILTER\fP
+\fBIPPROTO_ICMP\fP プロトコルにバインドされた raw ソケットのための特殊なフィルタを有効にする。 この値は ICMP
+メッセージのタイプそれぞれに対して、どれをフィルターアウト するかを表したビットセットである。デフォルトでは ICMP
+メッセージは全くフィルターしない。
 .PP
-.\"O In addition, all
-.\"O .BR ip (7)
-.\"O .B IPPROTO_IP
-.\"O socket options valid for datagram sockets are supported.
-さらに、データグラムソケットに使える全ての
-.BR ip (7)
-.B SOL_IP
-ソケットオプションがサポートされている。
-.\"O .SS Error Handling
+さらに、データグラムソケットに使える全ての \fBip\fP(7)  \fBSOL_IP\fP ソケットオプションがサポートされている。
 .SS エラー処理
-.\"O Errors originating from the network are only passed to the user when the
-.\"O socket is connected or the
-.\"O .B IP_RECVERR
-.\"O flag is enabled.
-.\"O For connected sockets, only
-.\"O .B EMSGSIZE
-.\"O and
-.\"O .B EPROTO
-.\"O are passed for compatibility.
-.\"O With
-.\"O .BR IP_RECVERR ,
-.\"O all network errors are saved in the error queue.
-ネットワークで生じたエラーがユーザに渡されるのは、
-ソケットが接続済みの場合か
-.B IP_RECVERR
-フラグが有効になっている場合に限られる。
-接続済みのソケットに対しては、
-.B EMSGSIZE
-および
-.B EPROTO
-だけが渡される (互換性のため)。
-.B IP_RECVERR
+ネットワークで生じたエラーがユーザに渡されるのは、 ソケットが接続済みの場合か \fBIP_RECVERR\fP フラグが有効になっている場合に限られる。
+接続済みのソケットに対しては、 \fBEMSGSIZE\fP および \fBEPROTO\fP だけが渡される (互換性のため)。 \fBIP_RECVERR\fP
 を設定すると、全てのネットワークエラーがエラーキューに保存される。
-.\"O .SH ERRORS
 .SH エラー
-.TP
-.B EACCES
-.\"O User tried to send to a broadcast address without having the
-.\"O broadcast flag set on the socket.
-ユーザーが broadcast フラグを設定していないソケットを用いて
-ブロードキャストアドレスに送信を行おうとした。
-.TP
-.B EFAULT
-.\"O An invalid memory address was supplied.
+.TP 
+\fBEACCES\fP
+ユーザーが broadcast フラグを設定していないソケットを用いて ブロードキャストアドレスに送信を行おうとした。
+.TP 
+\fBEFAULT\fP
 不正なメモリアドレスが与えられた。
-.TP
-.B EINVAL
-.\"O Invalid argument.
-引数が正しくない。
-.TP
-.B EMSGSIZE
-.\"O Packet too big.
-.\"O Either Path MTU Discovery is enabled (the
-.\"O .B IP_MTU_DISCOVER
-.\"O socket flag) or the packet size exceeds the maximum allowed IPv4
-.\"O packet size of 64KB.
-パケットが大きすぎる。 Path MTU Discoverry が有効になっている
-.RB ( IP_MTU_DISCOVER
-ソケットフラグ) か、パケットのサイズが IPv4 で許されている
-パケットサイズの最大値 64KB を越えている。
-.TP
-.B EOPNOTSUPP
-.\"O Invalid flag has been passed to a socket call (like
-.\"O .BR MSG_OOB ).
-ソケット呼び出しに不正なフラグ
-.RB ( MSG_OOB
-など) が渡された。
-.TP
-.B EPERM
-.\"O The user doesn't have permission to open raw sockets.
-.\"O Only processes with an effective user ID of 0 or the
-.\"O .B CAP_NET_RAW
-.\"O attribute may do that.
-ユーザーは raw ソケットをオープンする権限を持っていない。
-実行ユーザー ID が 0 のプロセスか、
-.B CAP_NET_RAW
+.TP 
+\fBEINVAL\fP
+引き数が不正。
+.TP 
+\fBEMSGSIZE\fP
+パケットが大きすぎる。 Path MTU Discoverry が有効になっている (\fBIP_MTU_DISCOVER\fP ソケットフラグ)
+か、パケットのサイズが IPv4 で許されている パケットサイズの最大値 64KB を越えている。
+.TP 
+\fBEOPNOTSUPP\fP
+ソケット呼び出しに不正なフラグ (\fBMSG_OOB\fP など) が渡された。
+.TP 
+\fBEPERM\fP
+ユーザーは raw ソケットをオープンする権限を持っていない。 実行ユーザー ID が 0 のプロセスか、 \fBCAP_NET_RAW\fP
 属性を持つプロセスだけがこれを行うことができる。
-.TP
-.B EPROTO
-.\"O An ICMP error has arrived reporting a parameter problem.
+.TP 
+\fBEPROTO\fP
 パラメータの問題を報告する ICMP エラーを受け取った。
-.\"O .SH VERSIONS
 .SH バージョン
-.\"O .B IP_RECVERR
-.\"O and
-.\"O .B ICMP_FILTER
-.\"O are new in Linux 2.2.
-.\"O They are Linux extensions and should not be used in portable programs.
-.B IP_RECVERR
-と
-.B ICMP_FILTER
-は Linux 2.2 で登場した。これらは Linux での拡張であり、
+\fBIP_RECVERR\fP と \fBICMP_FILTER\fP は Linux 2.2 で登場した。これらは Linux での拡張であり、
 移植性の必要なプログラムでは用いるべきでない。
 
-.\"O Linux 2.0 enabled some bug-to-bug compatibility with BSD in the
-.\"O raw socket code when the
-.\"O .B SO_BSDCOMPAT
-.\"O socket option was set \(em since Linux 2.2,
-.\"O this option no longer has that effect.
-Linux 2.0 では
-.B SO_BSDCOMPAT
-ソケットオプションをセットすると、
-BSD の raw ソケットにあるバグに互換性を取ることができた \(em
-Linux 2.2 以降では、このオプションはもはや効力を持たない。
-.\"O .SH NOTES
+Linux 2.0 では \fBSO_BSDCOMPAT\fP ソケットオプションをセットすると、 BSD の raw
+ソケットにあるバグに互換性を取ることができた \(em Linux 2.2 以降では、このオプションはもはや効力を持たない。
 .SH 注意
-.\"O By default, raw sockets do path MTU (Maximum Transmission Unit) discovery.
-.\"O This means the kernel
-.\"O will keep track of the MTU to a specific target IP address and return
-.\"O .B EMSGSIZE
-.\"O when a raw packet write exceeds it.
-.\"O When this happens, the application should decrease the packet size.
-.\"O Path MTU discovery can be also turned off using the
-.\"O .B IP_MTU_DISCOVER
-.\"O socket option or the
-.\"O .I /proc/sys/net/ipv4/ip_no_pmtu_disc
-.\"O file, see
-.\"O .BR ip (7)
-.\"O for details.
-.\"O When turned off, raw sockets will fragment outgoing packets
-.\"O that exceed the interface MTU.
-.\"O However, disabling it is not recommended
-.\"O for performance and reliability reasons.
-デフォルトでは、raw ソケットは Path MTU Discovery を行う。
-つまり、カーネルは特定の宛先 IP アドレスの MTU (Maximum Transmission Unit;
-最大転送単位) を記録し、raw パケットの書き込みが MTU を超えた場合
-.B EMSGSIZE
-を返す。
-.B EMSGSIZE
-を返された場合、アプリケーションはパケットサイズを小さくすべきである。
-ソケットオプション
-.B IP_MTU_DISCOVER
-または
-.I /proc/sys/net/ipv4/ip_no_pmtu_disc
-ファイルを使って Path MTU Discovery を無効にすることもできる
-(詳細は
-.BR ip (7)
-を参照)。
-Path MTU Discovery を無効にした場合は、パケットサイズが
-インタフェースの MTU よりも大きいと raw ソケットはそのパケットを
-フラグメント化して送出する。
-しかしながら、性能と信頼性の理由から Path MTU Discovery を
-無効にするのは推奨できない。
+デフォルトでは、raw ソケットは Path MTU Discovery を行う。 つまり、カーネルは特定の宛先 IP アドレスの MTU
+(Maximum Transmission Unit; 最大転送単位) を記録し、raw パケットの書き込みが MTU を超えた場合
+\fBEMSGSIZE\fP を返す。 \fBEMSGSIZE\fP を返された場合、アプリケーションはパケットサイズを小さくすべきである。 ソケットオプション
+\fBIP_MTU_DISCOVER\fP または \fI/proc/sys/net/ipv4/ip_no_pmtu_disc\fP ファイルを使って Path
+MTU Discovery を無効にすることもできる (詳細は \fBip\fP(7)  を参照)。 Path MTU Discovery
+を無効にした場合は、パケットサイズが インタフェースの MTU よりも大きいと raw ソケットはそのパケットを フラグメント化して送出する。
+しかしながら、性能と信頼性の理由から Path MTU Discovery を 無効にするのは推奨できない。
 
-.\"O A raw socket can be bound to a specific local address using the
-.\"O .BR bind (2)
-.\"O call.
-.\"O If it isn't bound, all packets with the specified IP protocol are received.
-.\"O In addition, a RAW socket can be bound to a specific network device using
-.\"O .BR SO_BINDTODEVICE ;
-.\"O see
-.\"O .BR socket (7).
-.BR bind (2)
-システムコールを用いると、
-raw ソケットを
-特定のローカルアドレスにバインドさせることができる。
-このバインドがされていない場合は、指定した IP プロトコルの
-すべてのパケットが受信される。
-さらに、
-.B SO_BINDTODEVICE
-を用いれば raw ソケットを特定のネットワークデバイスに
-バインドさせることもできる。
-.BR socket (7)
-を見よ。
+\fBbind\fP(2)  システムコールを用いると、 raw ソケットを 特定のローカルアドレスにバインドさせることができる。
+このバインドがされていない場合は、指定した IP プロトコルの すべてのパケットが受信される。 さらに、 \fBSO_BINDTODEVICE\fP
+を用いれば raw ソケットを特定のネットワークデバイスに バインドさせることもできる。 \fBsocket\fP(7)  を見よ。
 
-.\"O An
-.\"O .B IPPROTO_RAW
-.\"O socket is send only.
-.\"O If you really want to receive all IP packets, use a
-.\"O .BR packet (7)
-.\"O socket with the
-.\"O .B ETH_P_IP
-.\"O protocol.
-.\"O Note that packet sockets don't reassemble IP fragments,
-.\"O unlike raw sockets.
-.B IPPROTO_RAW
-ソケットは送信専用である。もしどうしてもすべての IP パケットを
-受信したい場合は、
-.BR packet (7)
-ソケットを
-.B ETH_P_IP
-プロトコルで用いること。
-packet ソケットは raw ソケットのように
-IP フラグメントを再構成しないことに注意。
+\fBIPPROTO_RAW\fP ソケットは送信専用である。もしどうしてもすべての IP パケットを 受信したい場合は、 \fBpacket\fP(7)
+ソケットを \fBETH_P_IP\fP プロトコルで用いること。 packet ソケットは raw ソケットのように IP
+フラグメントを再構成しないことに注意。
 
-.\"O If you want to receive all ICMP packets for a datagram socket,
-.\"O it is often better to use
-.\"O .B IP_RECVERR
-.\"O on that particular socket; see
-.\"O .BR ip (7).
-datagram ソケットに対するすべての ICMP パケットを受信したい場合は、
-特定のソケットに対して
-.B IP_RECVERR
-を用いるほうが良い場合が多い。
-.BR ip (7)
-を見よ。
+datagram ソケットに対するすべての ICMP パケットを受信したい場合は、 特定のソケットに対して \fBIP_RECVERR\fP
+を用いるほうが良い場合が多い。 \fBip\fP(7)  を見よ。
 
-.\"O Raw sockets may tap all IP protocols in Linux, even
-.\"O protocols like ICMP or TCP which have a protocol module in the kernel.
-.\"O In this case, the packets are passed to both the kernel module and the raw
-.\"O socket(s). This should not be relied upon in portable programs, many other BSD
-.\"O socket implementation have limitations here.
-raw ソケットは、 Linux のすべての IP プロトコルを受信することができる。
-ICMP や TCP のように、カーネル内部にプロトコルモジュールを持つような
-ものも可能である。この場合には、パケットはカーネルモジュールと
-raw ソケットの両方に渡される (raw ソケットが複数あればそれぞれに渡される)。
-移植性の必要なプログラムではこの機能に依存するべきではない。
-他の多くの BSD におけるソケットの実装ではこの点において制限がある。
+raw ソケットは、 Linux のすべての IP プロトコルを受信することができる。 ICMP や TCP
+のように、カーネル内部にプロトコルモジュールを持つような ものも可能である。この場合には、パケットはカーネルモジュールと raw
+ソケットの両方に渡される (raw ソケットが複数あればそれぞれに渡される)。 移植性の必要なプログラムではこの機能に依存するべきではない。 他の多くの
+BSD におけるソケットの実装ではこの点において制限がある。
 
-.\"O Linux never changes headers passed from the user (except for filling
-.\"O in some zeroed fields as described for
-.\"O .BR IP_HDRINCL ).
-.\"O This differs from many other implementations of raw sockets.
-Linux はユーザーから渡されたヘッダを決して変更しない (ただし
-.B IP_HDRINCL
-の説明にあるように、 0 をいくつか埋める場合を除く)。
-これは他の多くの raw ソケットの実装では異なる。
+Linux はユーザーから渡されたヘッダを決して変更しない (ただし \fBIP_HDRINCL\fP の説明にあるように、 0
+をいくつか埋める場合を除く)。 これは他の多くの raw ソケットの実装では異なる。
 
-.\"O RAW sockets are generally rather unportable and should be avoided in
-.\"O programs intended to be portable.
-一般に raw ソケットは移植性がないことが多いので、
-移植性が必要なプログラムでは避けるべきである。
+一般に raw ソケットは移植性がないことが多いので、 移植性が必要なプログラムでは避けるべきである。
 
-.\"O Sending on raw sockets should take the IP protocol from
-.\"O .IR sin_port ;
-.\"O this ability was lost in Linux 2.2.
-.\"O The workaround is to use
-.\"O .BR IP_HDRINCL .
-raw ソケットへの送信では、 IP プロトコルを
-.I sin_port
-から取得できなければならない。この機能は Linux 2.2 では使えなくなった。
-.B IP_HDRINCL
-を用いれば同様のことが実現できる。
-.\"O .SH BUGS
+raw ソケットへの送信では、 IP プロトコルを \fIsin_port\fP から取得できなければならない。この機能は Linux 2.2
+では使えなくなった。 \fBIP_HDRINCL\fP を用いれば同様のことが実現できる。
 .SH バグ
-.\"O Transparent proxy extensions are not described.
 透過プロクシ (transparent proxy) 拡張については記述していない。
 
-.\"O When the
-.\"O .B IP_HDRINCL
-.\"O option is set, datagrams will not be fragmented and are limited to
-.\"O the interface MTU.
-.B IP_HDRINCL
-オプションがセットされているとデータグラムはフラグメント化されず、
-インターフェースの MTU の大きさに制限される。
+\fBIP_HDRINCL\fP オプションがセットされているとデータグラムはフラグメント化されず、 インターフェースの MTU の大きさに制限される。
 
-.\"O Setting the IP protocol for sending in
-.\"O .I sin_port
-.\"O got lost in Linux 2.2.
-.\"O The protocol that socket was bound to or that
-.\"O was specified in the initial
-.\"O .BR socket (2)
-.\"O call is always used.
-送信用の IP プロトコルの設定を
-.I sin_port
-にしておく機能は Linux 2.2 から使えなくなった。
-ソケットにバインドされているプロトコルか、最初の
-.BR socket (2)
-コールによって指定されたプロトコルが常に用いられる。
-.\"O .\" .SH AUTHORS
-.\" .SH 著者
-.\"O .\" This man page was written by Andi Kleen.
-.\" この man ページは Andi Kleen が書いた。
-.\"O .SH SEE ALSO
+.\" .SH AUTHORS
+.\" This man page was written by Andi Kleen.
+送信用の IP プロトコルの設定を \fIsin_port\fP にしておく機能は Linux 2.2 から使えなくなった。
+ソケットにバインドされているプロトコルか、最初の \fBsocket\fP(2)  コールによって指定されたプロトコルが常に用いられる。
 .SH 関連項目
-.BR recvmsg (2),
-.BR sendmsg (2),
-.BR capabilities (7),
-.BR ip (7),
-.BR socket (7)
+\fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBcapabilities\fP(7), \fBip\fP(7), \fBsocket\fP(7)
 
-.\"O .B RFC\ 1191
-.\"O for path MTU discovery.
-パス MTU 発見に関する情報は
-.B RFC\ 1191
-にある
+パス MTU 発見に関する情報は \fBRFC\ 1191\fP にある
 
-.\"O .B RFC\ 791
-.\"O and the
-.\"O .I <linux/ip.h>
-.\"O include file for the IP protocol.
-IP プロトコルに関しては
-.B RFC\ 791
-とインクルードファイル
-.I <linux/ip.h>
-を参照。
+IP プロトコルに関しては \fBRFC\ 791\fP とインクルードファイル \fI<linux/ip.h>\fP を参照。
index 1bd3346..621e0e0 100644 (file)
@@ -1,3 +1,5 @@
+.ie  t .ds dg \(dg
+.el .ds dg (!)
 .\" From Henry Spencer's regex package (as found in the apache
 .\" distribution). The package carries the following copyright:
 .\"
 .\" 2005-05-11 Removed discussion of `[[:<:]]' and `[[:>:]]', which
 .\"    appear not to be in the glibc implementation of regcomp
 .\"
-.ie t .ds dg \(dg
-.el .ds dg (!)
-.\"
-.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved.
-.\" Translated Wed 8 Jul 1998 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
+.\"*******************************************************************
 .\"
-.\"WORD:       regular expression      正規表現
-.\"WORD:       modern RE               新しい正規表現
-.\"WORD:       obsolete RE             古い正規表現
-.\"WORD:       basic RE                基本正規表現
-.\"WORD:       extended RE             拡張正規表現
-.\"WORD:       branch                  枝
-.\"WORD:       piece                   文節
-.\"WORD:       atom                    アトム
-.\"WORD:       bound                   繰り返し指定
-.\"WORD:       bracket expression      ブラケット表現
-.\"WORD:       digit                   数字
-.\"WORD:       collating sequence      照合順序
-.\"WORD:       collating element       照合順序の要素
-.\"WORD:       character class         文字クラス
-.\"WORD:       equivalent class        等価クラス
-.\"WORD:       substring               部分文字列
-.\"WORD:       subexpression           部分正規表現
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH REGEX 7 2009-01-12 "" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O regex \- POSIX.2 regular expressions
+.\"*******************************************************************
+.TH REGEX 7 2009\-01\-12 "" "Linux Programmer's Manual"
 .SH 名前
 regex \- POSIX.2 正規表現
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O Regular expressions ("RE"s),
-.\"O as defined in POSIX.2, come in two forms:
-.\"O modern REs (roughly those of
-.\"O .IR egrep ;
-.\"O POSIX.2 calls these "extended" REs)
-.\"O and obsolete REs (roughly those of
-.\"O .BR ed ;
-.\"O POSIX.2 "basic" REs).
-.\"O Obsolete REs mostly exist for backward compatibility in some old programs;
-.\"O they will be discussed at the end.
-.\"O POSIX.2 leaves some aspects of RE syntax and semantics open;
-.\"O "\*(dg" marks decisions on these aspects that
-.\"O may not be fully portable to other POSIX.2 implementations.
-正規表現 (Regular expression: RE) は POSIX.2 で定義されており、
-二つの形式がある。新しい正規表現 (modern RE) と古い正規表現 (obsolete RE)
-である。新しい正規表現はだいたい
-.I egrep
-のものと同じで、 POSIX.2 では「拡張」正規表現 ("extended" RE)
-と呼ばれている。古い正規表現はだいたい
-.BR ed (1)
-のものと同じで、 POSIX.2 では「基本」正規表現 ("basic" RE) である。
-古い正規表現は、古いプログラムとの互換性を保つためのものである。
-これについては最後に議論する。
-POSIX.2 では、正規表現の文法や記号の一部が、未定義のまま残されている。
-"\*(dg" は、このような意味で、他の POSIX.2 の実装と
-完全には互換でないかも知れない部分である。
-.PP
-.\"O A (modern) RE is one\*(dg or more nonempty\*(dg \fIbranches\fR,
-.\"O separated by \(aq|\(aq.
-.\"O It matches anything that matches one of the branches.
-(新しい) 正規表現は一つ以上\*(dg の空白でない \fI枝 (branch)\fP からなる。
-枝どうしは \(aq|\(aq で区切られる。正規表現は、
-枝のどれかにマッチ (match) したものにマッチする。
-.PP
-.\"O A branch is one\*(dg or more \fIpieces\fR, concatenated.
-.\"O It matches a match for the first, followed by a match for the second, etc.
-枝は一つ以上の文節 (piece) が結合されたものである。
-枝は第一の文節がマッチし、
-続いて第二の文節がマッチし、... したものにマッチする。
-.PP
-.\"O A piece is an \fIatom\fR possibly followed
-.\"O by a single\*(dg \(aq*\(aq, \(aq+\(aq, \(aq?\(aq, or \fIbound\fR.
-.\"O An atom followed by \(aq*\(aq
-.\"O matches a sequence of 0 or more matches of the atom.
-.\"O An atom followed by \(aq+\(aq
-.\"O matches a sequence of 1 or more matches of the atom.
-.\"O An atom followed by \(aq?\(aq
-.\"O matches a sequence of 0 or 1 matches of the atom.
-文節は\fIアトム (atom)\fR からなる。ただしアトムの後には一つ\*(dg の \(aq*\(aq,
-\(aq+\(aq, \(aq?\(aq あるいは \fI繰り返し指定 (bound)\fR が続くこともある。
-\(aq*\(aq が後置されたアトムは、マッチしたアトムの 0 個以上の並びにマッチする。
-\(aq+\(aq が後置されたアトムは、マッチしたアトムの 1 個以上の並びにマッチする。
-\(aq?\(aq が後置されたアトムは、マッチしたアトムの 0 個または 1 個にマッチする。
-.PP
-.\"O A \fIbound\fR is \(aq{\(aq followed by an unsigned decimal integer,
-.\"O possibly followed by \(aq,\(aq
-.\"O possibly followed by another unsigned decimal integer,
-.\"O always followed by \(aq}\(aq.
-\fI繰り返し指定\fRとは \(aq{\(aq に続いて、符号なし 10 進整数、\(aq,\(aq、
-もう一つの 10 進整数、\(aq}\(aq を並べたものである。\(aq,\(aq と二つめの
-10 進整数は省略できる。二つめの 10 進整数だけを省略することもできる
-(最後の `}' は省略できない)。
-.\"O The integers must lie between 0 and
-.\"O .B RE_DUP_MAX
-.\"O (255\*(dg) inclusive,
-.\"O and if there are two of them, the first may not exceed the second.
-.\"O An atom followed by a bound containing one integer \fIi\fR
-.\"O and no comma matches
-.\"O a sequence of exactly \fIi\fR matches of the atom.
-.\"O An atom followed by a bound
-.\"O containing one integer \fIi\fR and a comma matches
-.\"O a sequence of \fIi\fR or more matches of the atom.
-.\"O An atom followed by a bound
-.\"O containing two integers \fIi\fR and \fIj\fR matches
-.\"O a sequence of \fIi\fR through \fIj\fR (inclusive) matches of the atom.
-整数は 0 以上
-.B RE_DUP_MAX
-(255\*(dg) 以下の間で指定できる。
-二つ指定する場合には、最初の数値は後の数値を越えてはならない。
-整数 \fIi\fR だけからなる繰り返し指定を後置されたアトムは、
-アトムをぴったりちょうど \fIi\fR 個だけ並べたものにマッチする。
-整数 \fIi\fR とコンマが指定された繰り返し指定を後置されたアトムは、
-アトムを \fIi\fR個以上並べたものにマッチする。
-整数 \fIi\fR と \fIj\fR が指定された繰り返し指定を後置されたアトムは、
-アトムを \fIi\fR個以上 \fIj\fR 個以下だけ並べたものにマッチする。
-.PP
-.\"O An atom is a regular expression enclosed in "\fI()\fP"
-.\"O (matching a match for the regular expression),
-.\"O an empty set of "\fI()\fP" (matching the null string)\*(dg,
-.\"O a \fIbracket expression\fR (see below), \(aq.\(aq
-.\"O (matching any single character), \(aq^\(aq (matching the null string at the
-.\"O beginning of a line), \(aq$\(aq (matching the null string at the
-.\"O end of a line), a \(aq\e\(aq followed by one of the characters
-.\"O "\fI^.[$()|*+?{\e\fP"
-.\"O (matching that character taken as an ordinary character),
-.\"O a \(aq\e\(aq followed by any other character\*(dg
-.\"O (matching that character taken as an ordinary character,
-.\"O as if the \(aq\e\(aq had not been present\*(dg),
-.\"O or a single character with no other significance (matching that character).
-アトムの種類は以下の通り。"\fI()\fP" に囲まれた正規表現
-(その正規表現がマッチする文字列にマッチする)、
-中身が空の "\fI()\fP" (null 文字列にマッチする)\*(dg、
-\fIブラケット表現 (bracket expression\fR :後述)、
-\(aq.\(aq (任意の 1 文字にマッチする)、
-\(aq^\(aq (行頭の空白文字にマッチする)、
-\(aq$\(aq (行末の空白文字にマッチする)、
-\(aq\e\(aq に "\fI^.[$()|*+?{\e\fP" のいずれか一文字を後置したもの
-(通常の文字として扱われ、その文字にマッチする)、
-\(aq\e\(aq にそれ以外の文字を後置したもの\*(dg
-(\(aq\e\(aq がない場合と同じように、その文字にマッチする\*(dg)、
-特に意味を持たない文字一つ (その文字にマッチする)。
-.\"O A \(aq{\(aq followed by a character other than a digit is an ordinary
-.\"O character, not the beginning of a bound\*(dg.
-.\"O It is illegal to end an RE with \(aq\e\(aq.
-\(aq{\(aq は数字以外の文字が後置されると通常の文字として扱われ、
-繰り返し指定の始まりとはされない\*(dg。\(aq\e\(aq
-で終わる正規表現は不正なものとみなされる。
-.PP
-.\"O A \fIbracket expression\fR is a list of characters enclosed in "\fI[]\fP".
-.\"O It normally matches any single character from the list (but see below).
-.\"O If the list begins with \(aq^\(aq,
-.\"O it matches any single character
-.\"O (but see below) \fInot\fR from the rest of the list.
-.\"O If two characters in the list are separated by \(aq\-\(aq, this is shorthand
-.\"O for the full \fIrange\fR of characters between those two (inclusive) in the
-.\"O collating sequence,
-.\"O for example, "\fI[0\-9]\fP" in ASCII matches any decimal digit.
-.\"O It is illegal\*(dg for two ranges to share an
-.\"O endpoint, for example, "\fIa-c-e\fP".
-.\"O Ranges are very collating-sequence-dependent,
-.\"O and portable programs should avoid relying on them.
-\fIブラケット表現\fRは "\fI[]\fP" によって閉じられた文字のリストである。
-これは通常リスト中に存在している文字にマッチする。
-(例外あり、後述。) リストが \(aq^\(aq で始まると、
-\fIブラケット表現\fRはリストに存在して\fIいない\fR文字一つにマッチする
-(例外あり、後述)。 リスト中の二つの文字が \(aq\-\(aq で区切られている場合は、
-これは照合順序 (collating sequence) でその二つの文字に挟まれる、
-すべての文字の並びを短縮したものとみなされる (両端含む)。
-例えば "\fI[0\-9]\fP" は ASCII では 10 進の数字 (digit) のいずれかにマッチする。
-二つの領域指定が端点を共有してはならない\*(dg。
-つまり "\fIa-c-e\fP" のようなものは不正である。領域指定は照合順序に強く依存する。
-したがって移植性の高いプログラムを作る場合は、
-領域指定には頼らないほうが良いだろう。
-.PP
-【訳注: 照合順序 (collating sequence) というのは、国際化
-(Internationalization) に関連した用語です。アルファベット順に単語を並
-べる際には、言語によって並べる基準が異なります。照合順序は、その差異を
-吸収するための仕組みです。
-.PP
-例えば、スペイン語では ch という文字並びを特別扱いするため、アルファベッ
-ト順が a, b, c, ch, d, e, ... の順になるそうです。このようなシーケンス
-のことを collating sequence と言います。このとき `ch' という文字並びは、
-単語整列の際にあたかも「一文字」のように扱われます。ここで、
-順序付けを行う際に最小の単位となる、`a'、`b' の文字や
-`ch' のような特別な文字並びなど、照合順序の要素のことを
-collating element と言います。collating sequence は、文字単位ではなく
-collating element を単位として定義されます。】
-.PP
-.\"O To include a literal \(aq]\(aq in the list, make it the first character
-.\"O (following a possible \(aq^\(aq).
-.\"O To include a literal \(aq\-\(aq, make it the first or last character,
-.\"O or the second endpoint of a range.
-.\"O To use a literal `\-' as the first endpoint of a range,
-.\"O enclose it in `[.' and `.]' to make it a collating element (see below).
-.\"O With the exception of these and some combinations using `[' (see next
-.\"O paragraphs), all other special characters, including `\e', lose their
-.\"O To use a literal \(aq\-\(aq as the first endpoint of a range,
-.\"O enclose it in "\fI[.\fP" and "\fI.]\fP"
-.\"O to make it a collating element (see below).
-.\"O With the exception of these and some combinations using \(aq[\(aq (see next
-.\"O paragraphs), all other special characters, including \(aq\e\(aq, lose their
-.\"O special significance within a bracket expression.
-文字 \(aq]\(aq そのものをリストに入れたい場合は、
-最初の文字として指定すれば良い (\(aq^\(aq) の後に続けるのでも良い)。
-文字 \(aq\-\(aq そのものをリストに入れたい場合は、
-最初か最後の文字とすれば良い。
-あるいは領域指定の終端文字として指定しても良い。
-\(aq\-\(aq を領域指定の先頭文字に指定するには、"\fI[.\fP" と "\fI.]\fP" で囲って、
-照合順序の要素 (collating element: 後述) にすれば良い。
-他の特殊文字 ( も含む) は、
-ブラケット表現の内部ではすべて通常の文字として扱われる。
-.PP
-.\"O Within a bracket expression, a collating element (a character,
-.\"O a multicharacter sequence that collates as if it were a single character,
-.\"O or a collating-sequence name for either)
-.\"O enclosed in "\fI[.\fP" and "\fI.]\fP" stands for the
-.\"O sequence of characters of that collating element.
-.\"O The sequence is a single element of the bracket expression's list.
-.\"O A bracket expression containing a multicharacter collating element
-.\"O can thus match more than one character,
-.\"O for example, if the collating sequence includes a "ch" collating element,
-.\"O then the RE "\fI[[.ch.]]*c\fP" matches the first five characters
-.\"O of "chchcc".
-ブラケット表現の内部では、"\fI[.\fP" と "\fI.]\fP" に囲われた照合順序の要素は、
-その要素に対応する文字並びを表す。
-「照合順序の要素」とは、
-[1] 文字、 [2] 単一文字のように扱われる複数文字のシーケンス、
-[3] 1, 2 いずれかに対応する照合順序上の名前、のいずれかである。
-この繰り返しは、ブラケット表現のリストにおける単一の要素となる。
-上記 [2] の、「複数文字からなる照合順序要素」を含むブラケット表現は、
-したがって一文字以上にマッチすることがある。
-例えば、もし照合順序が "ch" という要素を含んでいる場合には、
-正規表現 "\fI[[.ch.]]*c\fP" は "chchcc" の最初の 5 文字にマッチする。
-.PP
-.\"O Within a bracket expression, a collating element enclosed in "\fI[=\fP" and
-.\"O "\fI=]\fP" is an equivalence class, standing for the sequences of characters
-.\"O of all collating elements equivalent to that one, including itself.
-.\"O (If there are no other equivalent collating elements,
-.\"O the treatment is as if the enclosing delimiters
-.\"O were "\fI[.\fP" and "\fI.]\fP".)
-.\"O For example, if o and \o'o^' are the members of an equivalence class,
-.\"O then "\fI[[=o=]]\fP", "\fI[[=\o'o^'=]]\fP",
-.\"O and "\fI[o\o'o^']\fP" are all synonymous.
-.\"O An equivalence class may not\*(dg be an endpoint
-.\"O of a range.
-ブラケット表現の内部では、"\fI[=\fP" と "\fI=]\fP" に囲まれた照合順序の要素は、
-等価クラス (equivalence class) となる。
-これは、その要素と等価な要素すべてからなる文字シーケンス (自身も含む) を表す。
-他に等価な要素がなければ、
-取り扱いは "\fI[.\fP" と "\fI.]\fP" で囲まれている場合と同じである。
-例えば o と ou が等価クラスのメンバーであれば、
-"\fI[[=o=]]\fP", "\fI[[=\o'o^'=]]\fP", "\fI[o\o'o^']\fP" はすべて同じ意味になる。
-等価クラスは領域指定の端点にはなれない\*(dg。
-.\" nippon 端末では \o'o^' が正しく出ないので、例示を変更しました。
-.PP
-.\"O Within a bracket expression, the name of a \fIcharacter class\fR enclosed
-.\"O in "\fI[:\fP" and "\fI:]\fP" stands for the list
-.\"O of all characters belonging to that
-.\"O class.
-.\"O Standard character class names are:
-ブラケット表現の内部では、"\fI[:\fP" と "\fI:]\fP" で囲われた\fI文字クラス
-(character class)\fR はそのクラスに属するすべての文字のリストを表す。
-標準で用意されている文字クラスの名前は以下の通り:
+正規表現 (Regular expression: RE) は POSIX.2 で定義されており、 二つの形式がある。新しい正規表現 (modern
+RE) と古い正規表現 (obsolete RE)  である。新しい正規表現はだいたい \fIegrep\fP のものと同じで、 POSIX.2
+では「拡張」正規表現 ("extended" RE)  と呼ばれている。古い正規表現はだいたい \fBed\fP(1)  のものと同じで、 POSIX.2
+では「基本」正規表現 ("basic" RE) である。 古い正規表現は、古いプログラムとの互換性を保つためのものである。
+これについては最後に議論する。 POSIX.2 では、正規表現の文法や記号の一部が、未定義のまま残されている。 "\*(dg"
+は、このような意味で、他の POSIX.2 の実装と 完全には互換でないかも知れない部分である。
+.PP
+(新しい) 正規表現は一つ以上\*(dg の空白でない \fI枝 (branch)\fP からなる。 枝どうしは \(aq|\(aq
+で区切られる。正規表現は、 枝のどれかにマッチ (match) したものにマッチする。
+.PP
+枝は一つ以上の文節 (piece) が結合されたものである。 枝は第一の文節がマッチし、 続いて第二の文節がマッチし、... したものにマッチする。
+.PP
+文節は\fIアトム (atom)\fP からなる。ただしアトムの後には一つ\*(dg の \(aq*\(aq, \(aq+\(aq, \(aq?\(aq
+あるいは \fI繰り返し指定 (bound)\fP が続くこともある。 \(aq*\(aq が後置されたアトムは、マッチしたアトムの 0
+個以上の並びにマッチする。 \(aq+\(aq が後置されたアトムは、マッチしたアトムの 1 個以上の並びにマッチする。 \(aq?\(aq
+が後置されたアトムは、マッチしたアトムの 0 個または 1 個にマッチする。
+.PP
+\fI繰り返し指定\fPとは \(aq{\(aq に続いて、符号なし 10 進整数、\(aq,\(aq、 もう一つの 10 進整数、\(aq}\(aq
+を並べたものである。\(aq,\(aq と二つめの 10 進整数は省略できる。二つめの 10 進整数だけを省略することもできる (最後の `}'
+は省略できない)。 整数は 0 以上 \fBRE_DUP_MAX\fP (255\*(dg) 以下の間で指定できる。
+二つ指定する場合には、最初の数値は後の数値を越えてはならない。 整数 \fIi\fP だけからなる繰り返し指定を後置されたアトムは、 アトムをぴったりちょうど
+\fIi\fP 個だけ並べたものにマッチする。 整数 \fIi\fP とコンマが指定された繰り返し指定を後置されたアトムは、 アトムを
+\fIi\fP個以上並べたものにマッチする。 整数 \fIi\fP と \fIj\fP が指定された繰り返し指定を後置されたアトムは、 アトムを \fIi\fP個以上 \fIj\fP
+個以下だけ並べたものにマッチする。
+.PP
+アトムの種類は以下の通り。"\fI()\fP" に囲まれた正規表現 (その正規表現がマッチする文字列にマッチする)、 中身が空の "\fI()\fP" (null
+文字列にマッチする)\*(dg、 \fIブラケット表現 (bracket expression\fP :後述)、 \(aq.\(aq (任意の 1
+文字にマッチする)、 \(aq^\(aq (行頭の空白文字にマッチする)、 \(aq$\(aq (行末の空白文字にマッチする)、 \(aq\e\(aq
+に "\fI^.[$()|*+?{\e\fP" のいずれか一文字を後置したもの (通常の文字として扱われ、その文字にマッチする)、 \(aq\e\(aq
+にそれ以外の文字を後置したもの\*(dg (\(aq\e\(aq がない場合と同じように、その文字にマッチする\*(dg)、 特に意味を持たない文字一つ
+(その文字にマッチする)。 \(aq{\(aq は数字以外の文字が後置されると通常の文字として扱われ、
+繰り返し指定の始まりとはされない\*(dg。\(aq\e\(aq で終わる正規表現は不正なものとみなされる。
+.PP
+\fIブラケット表現\fPは "\fI[]\fP" によって閉じられた文字のリストである。 これは通常リスト中に存在している文字にマッチする。 (例外あり、後述。)
+リストが \(aq^\(aq で始まると、 \fIブラケット表現\fPはリストに存在して\fIいない\fP文字一つにマッチする (例外あり、後述)。
+リスト中の二つの文字が \(aq\-\(aq で区切られている場合は、 これは照合順序 (collating sequence)
+でその二つの文字に挟まれる、 すべての文字の並びを短縮したものとみなされる (両端含む)。 例えば "\fI[0\-9]\fP" は ASCII では 10
+進の数字 (digit) のいずれかにマッチする。 二つの領域指定が端点を共有してはならない\*(dg。 つまり "\fIa\-c\-e\fP"
+のようなものは不正である。領域指定は照合順序に強く依存する。 したがって移植性の高いプログラムを作る場合は、 領域指定には頼らないほうが良いだろう。
+【\fB訳注\fP: 照合順序 (collating sequence) というのは、国際化 (Internationalization)
+に関連した用語です。アルファベット順に単語を並 べる際には、言語によって並べる基準が異なります。照合順序は、その差異を 吸収するための仕組みです。
+例えば、スペイン語では ch という文字並びを特別扱いするため、アルファベッ ト順が a, b, c, ch, d, e,
+\&... の順になるそうです。このようなシーケンス のことを collating sequence と言います。このとき `ch' という文字並びは、
+単語整列の際にあたかも「一文字」のように扱われます。ここで、 順序付けを行う際に最小の単位となる、`a'、`b' の文字や `ch'
+のような特別な文字並びなど、照合順序の要素のことを collating element と言います。collating sequence
+は、文字単位ではなく collating element を単位として定義されます。】
+.PP
+文字 \(aq]\(aq そのものをリストに入れたい場合は、 最初の文字として指定すれば良い (\(aq^\(aq) の後に続けるのでも良い)。 文字
+\(aq\-\(aq そのものをリストに入れたい場合は、 最初か最後の文字とすれば良い。 あるいは領域指定の終端文字として指定しても良い。
+\(aq\-\(aq を領域指定の先頭文字に指定するには、"\fI[.\fP" と "\fI.]\fP" で囲って、 照合順序の要素 (collating
+element: 後述) にすれば良い。 他の特殊文字 ( も含む) は、 ブラケット表現の内部ではすべて通常の文字として扱われる。
+.PP
+ブラケット表現の内部では、"\fI[.\fP" と "\fI.]\fP" に囲われた照合順序の要素は、 その要素に対応する文字並びを表す。 「照合順序の要素」とは、
+[1] 文字、 [2] 単一文字のように扱われる複数文字のシーケンス、 [3] 1, 2 いずれかに対応する照合順序上の名前、のいずれかである。
+この繰り返しは、ブラケット表現のリストにおける単一の要素となる。 上記 [2] の、「複数文字からなる照合順序要素」を含むブラケット表現は、
+したがって一文字以上にマッチすることがある。 例えば、もし照合順序が "ch" という要素を含んでいる場合には、 正規表現
+"\fI[[.ch.]]*c\fP" は "chchcc" の最初の 5 文字にマッチする。
+.PP
+ブラケット表現の内部では、"\fI[=\fP" と "\fI=]\fP" に囲まれた照合順序の要素は、 等価クラス (equivalence class) となる。
+これは、その要素と等価な要素すべてからなる文字シーケンス (自身も含む) を表す。 他に等価な要素がなければ、 取り扱いは "\fI[.\fP" と
+"\fI.]\fP" で囲まれている場合と同じである。 例えば o と ou が等価クラスのメンバーであれば、 "\fI[[=o=]]\fP",
+"\fI[[=\o'o^'=]]\fP", "\fI[o\o'o^']\fP" はすべて同じ意味になる。 等価クラスは領域指定の端点にはなれない\*(dg。
+.PP
+ブラケット表現の内部では、"\fI[:\fP" と "\fI:]\fP" で囲われた\fI文字クラス (character class)\fP
+はそのクラスに属するすべての文字のリストを表す。 標準で用意されている文字クラスの名前は以下の通り:
 .PP
 .RS
 .nf
@@ -305,219 +117,81 @@ cntrl    print   xdigit
 .fi
 .RE
 .PP
-.\"O These stand for the character classes defined in
-.\"O .BR wctype (3).
-.\"O A locale may provide others.
-.\"O A character class may not be used as an endpoint of a range.
-これらは
-.BR wctype (3)
-で定義されている文字クラスを表している。ロケール (locale) によって、
-これら以外のクラスが定義されることもある。
-文字クラスは領域指定の端点にはなれない。
+.\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666
+.\" The following does not seem to apply in the glibc implementation
 .\" .PP
-.\"O .\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666
-.\"O .\" The following does not seem to apply in the glibc implementation
-.\"O .\" There are two special cases\*(dg of bracket expressions:
-.\"O .\" the bracket expressions "\fI[[:<:]]\fP" and "\fI[[:>:]]\fP" match
-.\"O .\" the null string at the beginning and end of a word respectively.
-.\"O .\" A word is defined as a sequence of
-.\"O .\" word characters
-.\"O .\" which is neither preceded nor followed by
-.\"O .\" word characters.
-.\"O .\" A word character is an
-.\"O .\" .I alnum
-.\"O .\" character (as defined by
-.\"O .\" .BR wctype (3))
-.\"O .\" or an underscore.
-.\"O .\" This is an extension,
-.\"O .\" compatible with but not specified by POSIX.2,
-.\"O .\" and should be used with
-.\"O .\" caution in software intended to be portable to other systems.
-.\" http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666 にあるように
-.\" 以下の記載は glibc の実装にはあてはまらないようである。
-.\" ブラケット表現には、特殊な意味を持つものが二つ存在する\*(dg。
-.\" ブラケット表現 "\fI[[:<:]]\fP" はワード (word) 先頭のヌル文字列に、
-.\" "\fI[[:>:]]\fP" はワード末尾のヌル文字列にそれぞれマッチする。
-.\" ワードとはワード文字の並びであり、
-.\" ワード文字が前置も後置もされていないものである。
-.\" ワード文字は
+.\" There are two special cases\*(dg of bracket expressions:
+.\" the bracket expressions "\fI[[:<:]]\fP" and "\fI[[:>:]]\fP" match
+.\" the null string at the beginning and end of a word respectively.
+.\" A word is defined as a sequence of
+.\" word characters
+.\" which is neither preceded nor followed by
+.\" word characters.
+.\" A word character is an
 .\" .I alnum
-.\" 文字
-.\" .RB ( wctype (3)
-.\" で定義されている) およびアンダースコア `_' である。
-.\" これは拡張記法であり、POSIX.2 に反してはいないが、
-.\" 定義もされていない。
-.\" 他のシステムと互換性を確保したいソフトウェアでは、
-.\" 注意して用いるようにすること。
-.PP
-.\"O In the event that an RE could match more than one substring of a given
-.\"O string,
-.\"O the RE matches the one starting earliest in the string.
-.\"O If the RE could match more than one substring starting at that point,
-.\"O it matches the longest.
-.\"O Subexpressions also match the longest possible substrings, subject to
-.\"O the constraint that the whole match be as long as possible,
-.\"O with subexpressions starting earlier in the RE taking priority over
-.\"O ones starting later.
-.\"O Note that higher-level subexpressions thus take priority over
-.\"O their lower-level component subexpressions.
-正規表現が、与えられた文字列の複数の部分文字列
-(substring) にマッチできるような場合には、
-最も先頭の近くから始まるものにマッチする。
-その位置から始まり、正規表現がマッチできる部分文字列が複数ある場合には、
-最長のものにマッチする。
-部分正規表現 (subexpression) も最も長い部分文字列にマッチする。
-ただし、全体のマッチが最長であるように、という条件が優先される。
-正規表現の中で先に現れる部分正規表現は、後に現れるものより優先される。
-ただし、より高位の部分正規表現は、
+.\" character (as defined by
+.\" .BR wctype (3))
+.\" or an underscore.
+.\" This is an extension,
+.\" compatible with but not specified by POSIX.2,
+.\" and should be used with
+.\" caution in software intended to be portable to other systems.
+これらは \fBwctype\fP(3)  で定義されている文字クラスを表している。ロケール (locale) によって、
+これら以外のクラスが定義されることもある。 文字クラスは領域指定の端点にはなれない。
+.PP
+正規表現が、与えられた文字列の複数の部分文字列 (substring) にマッチできるような場合には、 最も先頭の近くから始まるものにマッチする。
+その位置から始まり、正規表現がマッチできる部分文字列が複数ある場合には、 最長のものにマッチする。 部分正規表現 (subexpression)
+も最も長い部分文字列にマッチする。 ただし、全体のマッチが最長であるように、という条件が優先される。
+正規表現の中で先に現れる部分正規表現は、後に現れるものより優先される。 ただし、より高位の部分正規表現は、
 それを構成する低位の部分正規表現よりも優先されることに注意すること。
 .PP
-.\"O Match lengths are measured in characters, not collating elements.
-.\"O A null string is considered longer than no match at all.
-.\"O For example,
-.\"O "\fIbb*\fP" matches the three middle characters of "abbbc",
-.\"O "\fI(wee|week)(knights|nights)\fP"
-.\"O matches all ten characters of "weeknights",
-.\"O when "\fI(.*).*\fP" is matched against "abc" the parenthesized subexpression
-.\"O matches all three characters, and
-.\"O when "\fI(a*)*\fP" is matched against "bc"
-.\"O both the whole RE and the parenthesized
-.\"O subexpression match the null string.
-マッチ長は照合順序の要素ではなく、文字数を単位としてカウントされる。
-null 文字列は、全くマッチしなかった場合よりも長いとみなされる。
-例えば "\fIbb*\fP" は "abbbc" のまん中の 3 文字にマッチする。
-"\fI(wee|week)(knights|nights)\fP" は "weeknights" の全体にマッチする。
-"\fI(.*).*\fP" を "abc" にマッチさせると、
-括弧の内部の部分正規表現が 3 文字すべてにマッチする。
-"\fI(a*)*\fP" を "bc" にマッチさせると、正規表現全体も、
-括弧で括られた部分正規表現も null 文字列にマッチする。
+マッチ長は照合順序の要素ではなく、文字数を単位としてカウントされる。 null 文字列は、全くマッチしなかった場合よりも長いとみなされる。 例えば
+"\fIbb*\fP" は "abbbc" のまん中の 3 文字にマッチする。 "\fI(wee|week)(knights|nights)\fP" は
+"weeknights" の全体にマッチする。 "\fI(.*).*\fP" を "abc" にマッチさせると、 括弧の内部の部分正規表現が 3
+文字すべてにマッチする。 "\fI(a*)*\fP" を "bc" にマッチさせると、正規表現全体も、 括弧で括られた部分正規表現も null
+文字列にマッチする。
 .PP
-.\"O If case-independent matching is specified,
-.\"O the effect is much as if all case distinctions had vanished from the
-.\"O alphabet.
-.\"O When an alphabetic that exists in multiple cases appears as an
-.\"O ordinary character outside a bracket expression, it is effectively
-.\"O transformed into a bracket expression containing both cases,
-.\"O for example, \(aqx\(aq becomes "\fI[xX]\fP".
-.\"O When it appears inside a bracket expression, all case counterparts
-.\"O of it are added to the bracket expression, so that, for example, "\fI[x]\fP"
-.\"O becomes "\fI[xX]\fP" and "\fI[^x]\fP" becomes "\fI[^xX]\fP".
-マッチが大文字・小文字を無視するように指定されると、
-アルファベット全体から大小文字の区別が無くなったかのような効果となる。
-大文字・小文字を持つアルファベットがブラケット表現の外部で
-通常の文字として現れると、
-これは実効的に大小両方の文字のブラケット表現のように変換される。
+マッチが大文字・小文字を無視するように指定されると、 アルファベット全体から大小文字の区別が無くなったかのような効果となる。
+大文字・小文字を持つアルファベットがブラケット表現の外部で 通常の文字として現れると、 これは実効的に大小両方の文字のブラケット表現のように変換される。
 すなわち \(aqx\(aq は "\fI[xX]\fP" となる。ブラケット表現の内部に現れると、
-大文字なら小文字が、小文字なら大文字がそのブラケット表現に加えられる。
-すなわち
-"\fI[x]\fP" は "\fI[xX]\fP" に、"\fI[^x]\fP" は "\fI[^xX]\fP" になる。
-.PP
-.\"O No particular limit is imposed on the length of REs\*(dg.
-.\"O Programs intended to be portable should not employ REs longer
-.\"O than 256 bytes,
-.\"O as an implementation can refuse to accept such REs and remain
-.\"O POSIX-compliant.
-正規表現の長さには特に制限はない\*(dg。
-ただし移植性を高くしたいプログラムでは、
-256 バイトより長い正規表現は実行しないようにするほうが良い。
-なぜなら、そのような正規表現を拒否し、
-しかも POSIX 互換を保つような実装が可能だからである。
-.PP
-.\"O Obsolete ("basic") regular expressions differ in several respects.
-.\"O \(aq|\(aq, \(aq+\(aq, and \(aq?\(aq are
-.\"O ordinary characters and there is no equivalent
-.\"O for their functionality.
-.\"O The delimiters for bounds are "\fI\e{\fP" and "\fI\e}\fP",
-.\"O with \(aq{\(aq and \(aq}\(aq by themselves ordinary characters.
-.\"O The parentheses for nested subexpressions are "\fI\e(\fP" and "\fI\e)\fP",
-.\"O with \(aq(\(aq and \(aq)\(aq by themselves ordinary characters.
-.\"O \(aq^\(aq is an ordinary character except at the beginning of the
-.\"O RE or\*(dg the beginning of a parenthesized subexpression,
-.\"O \(aq$\(aq is an ordinary character except at the end of the
-.\"O RE or\*(dg the end of a parenthesized subexpression,
-.\"O and \(aq*\(aq is an ordinary character if it appears at the beginning of the
-.\"O RE or the beginning of a parenthesized subexpression
-.\"O (after a possible leading \(aq^\(aq).
-古い ("基本") 正規表現は、いくつかの点において異なる。
-\(aq|\(aq, \(aq+\(aq, and \(aq?\(aq は通常の文字となる。
-対応する機能は存在しない。繰り返し指定の区切りは
-"\fI\e{\fP" および "\fI\e}\fP" となる。\(aq{\(aq と \(aq}\(aq は、
-単独では通常の文字として扱われる。
-部分正規表現をネストする括弧は "\fI\e(\fP" および "\fI\e)\fP" となり、
-\(aq(\(aq と \(aq)\(aq は単独では通常の文字となる。
-\(aq^\(aq は正規表現の先頭か、
-括弧でくくられた部分表現の先頭\*(dgを除いて通常の文字となる。
-\(aq$\(aq は正規表現の末尾か、
-括弧でくくられた部分正規表現の末尾\*(dgを除いて通常の文字となる。
-\(aq*\(aq は、正規表現の先頭か、
-括弧でくくられた部分文字列の先頭に置かれた場合は通常の文字となる
-(\(aq^\(aq) が前置されていてもよい)。
-.PP
-.\"O Finally, there is one new type of atom, a \fIback reference\fR:
-.\"O \(aq\e\(aq followed by a nonzero decimal digit \fId\fR
-.\"O matches the same sequence of characters
-.\"O matched by the \fId\fRth parenthesized subexpression
-.\"O (numbering subexpressions by the positions of their opening parentheses,
-.\"O left to right),
-.\"O so that, for example, "\fI\e([bc]\e)\e1\fP" matches "bb" or "cc" but not "bc".
-最後に、アトムとして別のタイプが存在する。
-\fI後方参照 (back reference)\fR である。
-\(aq\e\(aq の後に 0 でない 10 進数値文字 \fId\fR が続くと、
-括弧でくくられた部分正規表現の
-\fId\fR 番目にマッチした文字並びと同じものにマッチする。
-(部分正規表現の番号付けは、
-開き括弧 `(' の位置が左のものから右のものへ向かってなされる。)
-したがって "\fI\e([bc]\e)\e1\fP" は
-"bb" または "cc" にはマッチするが、"bc" にはマッチしない。
-.\"O .SH BUGS
+大文字なら小文字が、小文字なら大文字がそのブラケット表現に加えられる。 すなわち "\fI[x]\fP" は "\fI[xX]\fP" に、"\fI[^x]\fP" は
+"\fI[^xX]\fP" になる。
+.PP
+正規表現の長さには特に制限はない\*(dg。 ただし移植性を高くしたいプログラムでは、 256 バイトより長い正規表現は実行しないようにするほうが良い。
+なぜなら、そのような正規表現を拒否し、 しかも POSIX 互換を保つような実装が可能だからである。
+.PP
+古い ("基本") 正規表現は、いくつかの点において異なる。 \(aq|\(aq, \(aq+\(aq, and \(aq?\(aq
+は通常の文字となる。 対応する機能は存在しない。繰り返し指定の区切りは "\fI\e{\fP" および "\fI\e}\fP" となる。\(aq{\(aq と
+\(aq}\(aq は、 単独では通常の文字として扱われる。 部分正規表現をネストする括弧は "\fI\e(\fP" および "\fI\e)\fP" となり、
+\(aq(\(aq と \(aq)\(aq は単独では通常の文字となる。 \(aq^\(aq は正規表現の先頭か、
+括弧でくくられた部分表現の先頭\*(dgを除いて通常の文字となる。 \(aq$\(aq は正規表現の末尾か、
+括弧でくくられた部分正規表現の末尾\*(dgを除いて通常の文字となる。 \(aq*\(aq は、正規表現の先頭か、
+括弧でくくられた部分文字列の先頭に置かれた場合は通常の文字となる (\(aq^\(aq) が前置されていてもよい)。
+.PP
+最後に、アトムとして別のタイプが存在する。 \fI後方参照 (back reference)\fP である。 \(aq\e\(aq の後に 0 でない 10
+進数値文字 \fId\fP が続くと、 括弧でくくられた部分正規表現の \fId\fP 番目にマッチした文字並びと同じものにマッチする。
+(部分正規表現の番号付けは、 開き括弧 `(' の位置が左のものから右のものへ向かってなされる。)  したがって "\fI\e([bc]\e)\e1\fP"
+は "bb" または "cc" にはマッチするが、"bc" にはマッチしない。
 .SH バグ
-.\"O Having two kinds of REs is a botch.
 正規表現が 2 種類あるのは格好悪い。
 .PP
-.\"O The current POSIX.2 spec says that \(aq)\(aq is an ordinary character in
-.\"O the absence of an unmatched \(aq(\(aq;
-.\"O this was an unintentional result of a wording error,
-.\"O and change is likely.
-.\"O Avoid relying on it.
-現在の POSIX.2 規格においては、\(aq)\(aq は、
-対応する \(aq(\(aq がない場合には通常の文字として扱われることになっている。
-しかしこれは、本来の意図とは異なる記述上のエラーであり、
-修正される可能性が高い。これに依存したコードは使わないこと。
+現在の POSIX.2 規格においては、\(aq)\(aq は、 対応する \(aq(\(aq がない場合には通常の文字として扱われることになっている。
+しかしこれは、本来の意図とは異なる記述上のエラーであり、 修正される可能性が高い。これに依存したコードは使わないこと。
 .PP
-.\"O Back references are a dreadful botch,
-.\"O posing major problems for efficient implementations.
-.\"O They are also somewhat vaguely defined
-.\"O (does
-.\"O "\fIa\e(\e(b\e)*\e2\e)*d\fP" match "abbbd"?).
-.\"O Avoid using them.
-後方参照はひどく出来の悪い代物である。
-効率の良い実装をするのはとても難しい。
-また定義があいまいである。
-("\fIa\e(\e(b\e)*\e2\e)*d\fP" は "abbbd" にマッチすると思うか?)
-使わないほうが良い。
+後方参照はひどく出来の悪い代物である。 効率の良い実装をするのはとても難しい。 また定義があいまいである。
+("\fIa\e(\e(b\e)*\e2\e)*d\fP" は "abbbd" にマッチすると思うか?)  使わないほうが良い。
 .PP
-.\"O POSIX.2's specification of case-independent matching is vague.
-.\"O The "one case implies all cases" definition given above
-.\"O is current consensus among implementors as to the right interpretation.
-POSIX.2 の規格では、case (大文字か小文字か)
-に依存しないマッチの記述があいまいである。
-現在のところでは「一つの case がすべての case を意味する」
-という上記の定義が正しい解釈であるというのが、
-実装者の間での共通認識のようである。
 .\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666
 .\" The following does not seem to apply in the glibc implementation
 .\" .PP
-.\"O .\" The syntax for word boundaries is incredibly ugly.
-.\" ワード境界に関する文法定義が非常に醜い。
-.\"O .SH AUTHOR
+.\" The syntax for word boundaries is incredibly ugly.
+POSIX.2 の規格では、case (大文字か小文字か)  に依存しないマッチの記述があいまいである。 現在のところでは「一つの case がすべての
+case を意味する」 という上記の定義が正しい解釈であるというのが、 実装者の間での共通認識のようである。
 .SH 著者
 .\" Sigh... The page license means we must have the author's name
 .\" in the formatted output.
-.\"O This page was taken from Henry Spencer's regex package.
 このページは Henry Spencer の regex パッケージから採録したものである。
-.\"O .SH SEE ALSO
 .SH 関連項目
-.BR grep (1),
-.BR regex (3)
+\fBgrep\fP(1), \fBregex\fP(3)
 .PP
 POSIX.2, section 2.8 (Regular Expression Notation).
index 5ed33d2..a17bb2b 100644 (file)
@@ -1,4 +1,4 @@
-'\" t
+.\" t
 .\" Don't remove the line above, it tells man that tbl is needed.
 .\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
 .\" Permission is granted to distribute possibly modified copies
@@ -7,65 +7,35 @@
 .\" of the modification is added to the header.
 .\" Based on the original comments from Alexey Kuznetsov, written with
 .\" help from Matthew Wilcox.
-.\" $Id: rtnetlink.7,v 1.10 2001/04/04 08:02:19 ysato Exp $
+.\" $Id: rtnetlink.7,v 1.8 2000/01/22 01:55:04 freitag Exp $
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
-.\" Translated Mon 6 Dec 1999 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\"WORD         queueing dicipline      キューイング(の)ルール
-.\"WORD         permanent               永続的な
-.\"WORD         neighbor                近傍
-.\"
-.TH RTNETLINK  7 2008-08-08 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O rtnetlink, NETLINK_ROUTE \- Linux IPv4 routing socket
+.\"*******************************************************************
+.TH RTNETLINK 7 2008\-08\-08 Linux "Linux Programmer's Manual"
 .SH 名前
 rtnetlink, NETLINK_ROUTE \- Linux IPv4 ルーティングソケット
-.\"O .SH SYNOPSIS
 .SH 書式
-.B #include <asm/types.h>
+\fB#include <asm/types.h>\fP
 .br
-.B #include <linux/netlink.h>
+\fB#include <linux/netlink.h>\fP
 .br
-.B #include <linux/rtnetlink.h>
+\fB#include <linux/rtnetlink.h>\fP
 .br
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .sp
-.BI "rtnetlink_socket = socket(AF_NETLINK, int " socket_type ", NETLINK_ROUTE);"
-.\"O .SH DESCRIPTION
+\fBrtnetlink_socket = socket(AF_NETLINK, int \fP\fIsocket_type\fP\fB,
+NETLINK_ROUTE);\fP
 .SH 説明
-.\"O Rtnetlink allows the kernel's routing tables to be read and altered.
-.\"O It is used within the kernel to communicate between
-.\"O various subsystems, though this usage is not documented here, and for
-.\"O communication with user-space programs.
-.\"O Network routes, IP addresses, link parameters, neighbor setups, queueing
-.\"O disciplines, traffic classes and packet classifiers may all be controlled
-.\"O through
-.\"O .B NETLINK_ROUTE
-.\"O sockets.
-.\"O It is based on netlink messages; see
-.\"O .BR netlink (7)
-.\"O for more information.
-.B rtnetlink
-はカーネルのルーティングテーブルを読んだり変更したり
-するためのものである。これはカーネルが内部のサブシステムと
-通信するためにも用いられているが、それはここでは記述しない。
-この man ページではユーザー空間のプログラムとの通信に関してのみ述べる。
-ネットワーク経路・IP アドレス・リンクパラメータ・
-近傍設定 (neighbor setup)・キューイングルール (queueing dicipline)・
-トラフィッククラス・パケットのクラス分類などが、すべて
-.B NETLINK_ROUTE
-ソケットを通して制御できる。
-.B rtnetlink
-は netlink メッセージをベースにしている。詳細は
-.BR netlink (7)
-を見ること。
 .\" FIXME ? all these macros could be moved to rtnetlink(3)
-.\"O .SS "Routing Attributes"
+\fBrtnetlink\fP はカーネルのルーティングテーブルを読んだり変更したり するためのものである。これはカーネルが内部のサブシステムと
+通信するためにも用いられているが、それはここでは記述しない。 この man ページではユーザー空間のプログラムとの通信に関してのみ述べる。
+ネットワーク経路・IP アドレス・リンクパラメータ・ 近傍設定 (neighbor setup)・キューイングルール (queueing
+dicipline)・ トラフィッククラス・パケットのクラス分類などが、すべて \fBNETLINK_ROUTE\fP ソケットを通して制御できる。
+\fBrtnetlink\fP は netlink メッセージをベースにしている。詳細は \fBnetlink\fP(7)  を見ること。
 .SS ルーティング属性
-.\"O Some rtnetlink messages have optional attributes after the initial header:
-rtnetlink メッセージには、初期ヘッダの後に付加的な属性を
-持つものがある。
+rtnetlink メッセージには、初期ヘッダの後に付加的な属性を 持つものがある。
 
 .in +4n
 .nf
@@ -77,33 +47,13 @@ struct rtattr {
 .fi
 .in
 
-.\"O These attributes should be only manipulated using the RTA_* macros
-.\"O or libnetlink, see
-.\"O .BR rtnetlink (3).
-これらの属性の操作は、 RTA_* マクロか libnetlink を通してのみ
-行うべきである。
-.BR rtnetlink (3)
-を見よ。
-.\"O .SS Messages
+これらの属性の操作は、 RTA_* マクロか libnetlink を通してのみ 行うべきである。 \fBrtnetlink\fP(3)  を見よ。
 .SS メッセージ
-.\"O Rtnetlink consists of these message types
-.\"O (in addition to standard netlink messages):
-rtnetlink は (標準的な netlink メッセージに加えて)
-以下のメッセージタイプから構成される。
-.TP
-.BR RTM_NEWLINK ", " RTM_DELLINK ", " RTM_GETLINK
-.\"O Create, remove or get information about a specific network interface.
-.\"O These messages contain an
-.\"O .I ifinfomsg
-.\"O structure followed by a series of
-.\"O .I rtattr
-.\"O structures.
-指定したネットワークインターフェースの情報を、生成・削除・取得する。
-これらのメッセージは
-.I ifinfomsg
-構造体と、それに続いていくつかの
-.I rtattr
-構造体を伴う。
+rtnetlink は (標準的な netlink メッセージに加えて)  以下のメッセージタイプから構成される。
+.TP 
+\fBRTM_NEWLINK\fP, \fBRTM_DELLINK\fP, \fBRTM_GETLINK\fP
+指定したネットワークインターフェースの情報を、生成・削除・取得する。 これらのメッセージは \fIifinfomsg\fP 構造体と、それに続いていくつかの
+\fIrtattr\fP 構造体を伴う。
 
 .nf
 struct ifinfomsg {
@@ -116,49 +66,19 @@ struct ifinfomsg {
 .fi
 
 .\" FIXME ifi_type
-.\"O .I ifi_flags
-.\"O contains the device flags, see
-.\"O .BR netdevice (7);
-.\"O .I ifi_index
-.\"O is the unique interface index,
-.\"O .I ifi_change
-.\"O is reserved for future use and should be always set to 0xFFFFFFFF.
-.I ifi_flags
-はデバイスのフラグである。
-.BR netdevice (7)
-を見よ。
-.I ifi_index
-は他と重ならないインターフェースの index である。
-.I ifi_change
-は将来の利用のために予約されており、常に
-0xFFFFFFFF にセットすべきである。
+\fIifi_flags\fP はデバイスのフラグである。 \fBnetdevice\fP(7)  を見よ。 \fIifi_index\fP
+は他と重ならないインターフェースの index である。 \fIifi_change\fP は将来の利用のために予約されており、常に 0xFFFFFFFF
+にセットすべきである。
 .TS
 tab(:);
 c
 l l l.
-.\"O Routing attributes
-.\"O rta_type:value type:description
-.\"O _
-.\"O IFLA_UNSPEC:-:unspecified.
-.\"O IFLA_ADDRESS:hardware address:interface L2 address
-.\"O IFLA_BROADCAST:hardware address:L2 broadcast address.
-.\"O IFLA_IFNAME:asciiz string:Device name.
-.\"O IFLA_MTU:unsigned int:MTU of the device.
-.\"O IFLA_LINK:int:Link type.
-.\"O IFLA_QDISC:asciiz string:Queueing discipline.
-.\"O IFLA_STATS:T{
-.\"O see below
-.\"O T}:Interface Statistics.
 ルーティング属性
 rta_type:値の型:説明
 _
-IFLA_UNSPEC:-:指定されていない。
-IFLA_ADDRESS:hardware address:T{
-インターフェース L2 アドレス
-T}
-IFLA_BROADCAST:hardware address:T{
-L2 ブロードキャストアドレス
-T}
+IFLA_UNSPEC:\-:指定されていない。
+IFLA_ADDRESS:hardware address:インターフェース L2 アドレス
+IFLA_BROADCAST:hardware address:L2 ブロードキャストアドレス
 IFLA_IFNAME:asciiz string:デバイス名
 IFLA_MTU:unsigned int:デバイスの MTU
 IFLA_LINK:int:リンクタイプ
@@ -168,30 +88,12 @@ IFLA_STATS:T{
 T}:インターフェースの統計
 .TE
 .sp
-.\"O The value type for IFLA_STATS is \fIstruct net_device_stats\fP.
 IFLA_STATS の値の型は \fIstruct net_device_stats\fP である。
-.TP
-.BR RTM_NEWADDR ", " RTM_DELADDR ", " RTM_GETADDR
-.\"O Add, remove or receive information about an IP address associated with
-.\"O an interface.
-.\"O In Linux 2.2, an interface can carry multiple IP addresses,
-.\"O this replaces the alias device concept in 2.0.
-.\"O In Linux 2.2, these messages
-.\"O support IPv4 and IPv6 addresses.
-.\"O They contain an
-.\"O .I ifaddrmsg
-.\"O structure, optionally followed by
-.\"O .I rtattr
-.\"O routing attributes.
-インターフェースの IP アドレスの情報を追加・削除・取得する。
-Linux 2.2 では、一つのインターフェースに複数の IP アドレスを
-保持させることができ、これは 2.0 の別名デバイスの概念を置き換える。
-Linux 2.2 では、これらのメッセージは
-IPv4 と IPv6 の両方のアドレスをサポートしている。
-これらは
-.I ifaddrmsg
-構造体を伴う。そのあとに
-.I rtattr
+.TP 
+\fBRTM_NEWADDR\fP, \fBRTM_DELADDR\fP, \fBRTM_GETADDR\fP
+インターフェースの IP アドレスの情報を追加・削除・取得する。 Linux 2.2 では、一つのインターフェースに複数の IP アドレスを
+保持させることができ、これは 2.0 の別名デバイスの概念を置き換える。 Linux 2.2 では、これらのメッセージは IPv4 と IPv6
+の両方のアドレスをサポートしている。 これらは \fIifaddrmsg\fP 構造体を伴う。そのあとに \fIrtattr\fP
 ルーティング属性が続くこともある。
 
 .nf
@@ -204,62 +106,20 @@ struct ifaddrmsg {
 };
 .fi
 
-.\"O .I ifa_family
-.\"O is the address family type (currently
-.\"O .B AF_INET
-.\"O or
-.\"O .BR AF_INET6 ),
-.\"O .I ifa_prefixlen
-.\"O is the length of the address mask of the address if defined for the
-.\"O family (like for IPv4),
-.\"O .I ifa_scope
-.\"O is the address scope,
-.\"O .I ifa_index
-.\"O is the interface index of the interface the address is associated with.
-.\"O .I ifa_flags
-.\"O is a flag word of
-.\"O .B IFA_F_SECONDARY
-.\"O for secondary address (old alias interface),
-.\"O .B IFA_F_PERMANENT
-.\"O for a permanent address set by the user and other undocumented flags.
-.I ifa_family
-はアドレスファミリーのタイプである (現在は
-.B AF_INET
-または
-.BR AF_INET6 )。
-.I ifa_prefixlen
-はアドレスのアドレスマスクの長さである (IPv4 のように、
-そのファミリーで定義されている場合)。
-.I ifa_scope
-はアドレスのスコープである。
-.I ifa_index
-はアドレスが関連づけられているインターフェースの index である。
-.I ifa_flags
-はフラグワードで、
-二つめのアドレス (古い別名インターフェース) の場合は
-.B IFA_F_SECONDARY
-に、永続的なアドレスの場合は
-.B IFA_F_PERMANENT
-に適用される。ユーザーによってセットされるフラグと、
-undocumented なフラグがある。
+\fIifa_family\fP はアドレスファミリーのタイプである (現在は \fBAF_INET\fP または \fBAF_INET6\fP)。
+\fIifa_prefixlen\fP はアドレスのアドレスマスクの長さである (IPv4 のように、 そのファミリーで定義されている場合)。
+\fIifa_scope\fP はアドレスのスコープである。 \fIifa_index\fP はアドレスが関連づけられているインターフェースの index である。
+\fIifa_flags\fP はフラグワードで、 二つめのアドレス (古い別名インターフェース) の場合は \fBIFA_F_SECONDARY\fP
+に、永続的なアドレスの場合は \fBIFA_F_PERMANENT\fP に適用される。ユーザーによってセットされるフラグと、 undocumented
+なフラグがある。
 .TS
 tab(:);
 c
 l l l.
-.\"O Attributes
-.\"O rta_type:value type:description
-.\"O _
-.\"O IFA_UNSPEC:-:unspecified.
-.\"O IFA_ADDRESS:raw protocol address:interface address
-.\"O IFA_LOCAL:raw protocol address:local address
-.\"O IFA_LABEL:asciiz string:name of the interface
-.\"O IFA_BROADCAST:raw protocol address:broadcast address.
-.\"O IFA_ANYCAST:raw protocol address:anycast address
-.\"O IFA_CACHEINFO:struct ifa_cacheinfo:Address information.
 属性
 rta_type:値の型:説明
 _
-IFA_UNSPEC:-:指定されていない
+IFA_UNSPEC:\-:指定されていない
 IFA_ADDRESS:raw protocol address:インターフェースアドレス
 IFA_LOCAL:raw protocol address:ローカルアドレス
 IFA_LABEL:asciiz string:インターフェースの名前
@@ -268,42 +128,11 @@ IFA_ANYCAST:raw protocol address:anycast アドレス
 IFA_CACHEINFO:struct ifa_cacheinfo:アドレス情報
 .TE
 .\" FIXME struct ifa_cacheinfo
-.TP
-.BR RTM_NEWROUTE ", " RTM_DELROUTE ", " RTM_GETROUTE
-.\"O Create, remove or receive information about a network route.
-.\"O These messages contain an
-.\"O .I rtmsg
-.\"O structure with an optional sequence of
-.\"O .I rtattr
-.\"O structures following.
-.\"O For
-.\"O .BR RTM_GETROUTE ,
-.\"O setting
-.\"O .I rtm_dst_len
-.\"O and
-.\"O .I rtm_src_len
-.\"O to 0 means you get all entries for the specified routing table.
-ネットワーク経路の情報を生成・削除・取得する。
-これらのメッセージは
-.I rtmsg
-構造体を伴う。そのあとにいくつかの
-.I rtattr
-構造体を続けることもできる。
-.B RTM_GETROUTE
-で
-.I rtm_dst_len
-と
-.I rtm_src_len
-に 0 をセットすると、
-指定されたルーティングテーブルの全てのエントリを所得する。
-.\"O For the other fields, except
-.\"O .I rtm_table
-.\"O and
-.\"O .IR rtm_protocol ,
-.\"O 0 is the wildcard.
-.I rtm_table
-と
-.I rtm_protocol
+.TP 
+\fBRTM_NEWROUTE\fP, \fBRTM_DELROUTE\fP, \fBRTM_GETROUTE\fP
+ネットワーク経路の情報を生成・削除・取得する。 これらのメッセージは \fIrtmsg\fP 構造体を伴う。そのあとにいくつかの \fIrtattr\fP
+構造体を続けることもできる。 \fBRTM_GETROUTE\fP で \fIrtm_dst_len\fP と \fIrtm_src_len\fP に 0
+をセットすると、 指定されたルーティングテーブルの全てのエントリを所得する。 \fIrtm_table\fP と \fIrtm_protocol\fP
 以外の他のフィールドに 0 を入れると、ワイルドカードを意味する。
 
 .nf
@@ -324,38 +153,16 @@ struct rtmsg {
 .TS
 tab(:);
 l l.
-.\"O rtm_type:Route type
-.\"O _
-.\"O RTN_UNSPEC:unknown route
-.\"O RTN_UNICAST:a gateway or direct route
-.\"O RTN_LOCAL:a local interface route
-.\"O RTN_BROADCAST:T{
-.\"O a local broadcast route (sent as a broadcast)
-.\"O T}
-.\"O RTN_ANYCAST:T{
-.\"O a local broadcast route (sent as a unicast)
-.\"O T}
-.\"O RTN_MULTICAST:a multicast route
-.\"O RTN_BLACKHOLE:a packet dropping route
-.\"O RTN_UNREACHABLE:an unreachable destination
-.\"O RTN_PROHIBIT:a packet rejection route
-.\"O RTN_THROW:continue routing lookup in another table
-.\"O RTN_NAT:a network address translation rule
-.\"O RTN_XRESOLVE:T{
-.\"O refer to an external resolver (not implemented)
-.\"O T}
 rtm_type:経路のタイプ
 _
 RTN_UNSPEC:未知の経路
 RTN_UNICAST:ゲートウェイまたはダイレクトな経路
 RTN_LOCAL:ローカルインターフェースの経路
 RTN_BROADCAST:T{
-ローカルなブロードキャスト経路
-(ブロードキャストとして送信される)
+ローカルなブロードキャスト経路 (ブロードキャストとして送信される)
 T}
 RTN_ANYCAST:T{
-ローカルなブロードキャスト経路
-(ユニキャストとして送信される)
+ローカルなブロードキャスト経路 (ユニキャストとして送信される)
 T}
 RTN_MULTICAST:マルチキャスト経路
 RTN_BLACKHOLE:パケットを捨てる経路
@@ -370,15 +177,6 @@ T}
 .TS
 tab(:);
 l l.
-.\"O rtm_protocol:Route origin.
-.\"O _
-.\"O RTPROT_UNSPEC:unknown
-.\"O RTPROT_REDIRECT:T{
-.\"O by an ICMP redirect (currently unused)
-.\"O T}
-.\"O RTPROT_KERNEL:by the kernel
-.\"O RTPROT_BOOT:during boot
-.\"O RTPROT_STATIC:by the administrator
 rtm_protocol:経路の情報源
 _
 RTPROT_UNSPEC:不明
@@ -390,38 +188,14 @@ RTPROT_BOOT:ブート時
 RTPROT_STATIC:管理者による
 .TE
 
-.\"O Values larger than
-.\"O .B RTPROT_STATIC
-.\"O are not interpreted by the kernel, they are just for user information.
-.\"O They may be used to tag the source of a routing information or to
-.\"O distingush between multiple routing daemons.
-.\"O See
-.\"O .I <linux/rtnetlink.h>
-.\"O for the routing daemon identifiers which are already assigned.
-.B RTPROT_STATIC
-よりも大きな値はカーネルによって解釈されない。これは
-単なるユーザーへの情報である。これらは経路情報の情報源を
-タグ付けしたり、複数のルーティングデーモンからの情報を
-区別するために用いることができる。
-既に割り当てられているルーティングデーモンの識別子については
-.I <linux/rtnetlink.h>
-を見よ。
-
-.\"O .I rtm_scope
-.\"O is the distance to the destination:
-.I rtm_scope
-は行き先への距離である。
+\fBRTPROT_STATIC\fP よりも大きな値はカーネルによって解釈されない。これは 単なるユーザーへの情報である。これらは経路情報の情報源を
+タグ付けしたり、複数のルーティングデーモンからの情報を 区別するために用いることができる。 既に割り当てられているルーティングデーモンの識別子については
+\fI<linux/rtnetlink.h>\fP を見よ。
 
+\fIrtm_scope\fP は行き先への距離である。
 .TS
 tab(:);
 l l.
-.\"O RT_SCOPE_UNIVERSE:global route
-.\"O RT_SCOPE_SITE:T{
-.\"O interior route in the local autonomous system
-.\"O T}
-.\"O RT_SCOPE_LINK:route on this link
-.\"O RT_SCOPE_HOST:route on the local host
-.\"O RT_SCOPE_NOWHERE:destination doesn't exist
 RT_SCOPE_UNIVERSE:グローバルな経路
 RT_SCOPE_SITE:T{
 ローカルな自律システムにおける内部経路
@@ -431,30 +205,12 @@ RT_SCOPE_HOST:ローカルホスト上の経路
 RT_SCOPE_NOWHERE:行き先が存在しない
 .TE
 
-.\"O The values between
-.\"O .B RT_SCOPE_UNIVERSE
-.\"O and
-.\"O .B RT_SCOPE_SITE
-.\"O are available to the user.
-ユーザーは
-.B RT_SCOPE_UNIVERSE
-と
-.B RT_SCOPE_SITE
-の間の値を用いることができる。
+ユーザーは \fBRT_SCOPE_UNIVERSE\fP と \fBRT_SCOPE_SITE\fP の間の値を用いることができる。
 
-.\"O The
-.\"O .I rtm_flags
-.\"O have the following meanings:
-.I rtm_flags
-は以下の意味を持つ:
+\fIrtm_flags\fP は以下の意味を持つ:
 .TS
 tab(:);
 l l.
-.\"O RTM_F_NOTIFY:T{
-.\"O if the route changes, notify the user via rtnetlink
-.\"O T}
-.\"O RTM_F_CLONED:route is cloned from another route
-.\"O RTM_F_EQUALIZE:a multipath equalizer (not yet implemented)
 RTM_F_NOTIFY:T{
 経路が変更されると、 rtnetlink を通してユーザーに通知が行く。
 T}
@@ -462,56 +218,25 @@ RTM_F_CLONED:経路は他の経路によって複製された。
 RTM_F_EQUALIZE:マルチパスイコライザ (まだ実装されていない)
 .TE
 
-.\"O .I rtm_table
-.\"O specifies the routing table
-.I rtm_table
-ではルーティングテーブルを指定する。
+\fIrtm_table\fP ではルーティングテーブルを指定する。
 .TS
 tab(:);
 l l.
-.\"O RT_TABLE_UNSPEC:an unspecified routing table
-.\"O RT_TABLE_DEFAULT:the default table
-.\"O RT_TABLE_MAIN:the main table
-.\"O RT_TABLE_LOCAL:the local table
 RT_TABLE_UNSPEC:指定されていないルーティングテーブル
 RT_TABLE_DEFAULT:デフォルトのテーブル
 RT_TABLE_MAIN:メインのテーブル
 RT_TABLE_LOCAL:ローカルテーブル
 .TE
 
-.\"O The user may assign arbitrary values between
-.\"O .B RT_TABLE_UNSPEC
-.\"O and
-.\"O .BR RT_TABLE_DEFAULT .
-ユーザーは
-.B RT_TABLE_UNSPEC
-と
-.BR RT_TABLE_DEFAULT .
-の間の任意の値を用いることができる。
+ユーザーは \fBRT_TABLE_UNSPEC\fP と \fBRT_TABLE_DEFAULT\fP.  の間の任意の値を用いることができる。
 .TS
 tab(:);
 c
 l l l.
-.\"O Attributes
-.\"O rta_type:value type:description
-.\"O _
-.\"O RTA_UNSPEC:-:ignored.
-.\"O RTA_DST:protocol address:Route destination address.
-.\"O RTA_SRC:protocol address:Route source address.
-.\"O RTA_IIF:int:Input interface index.
-.\"O RTA_OIF:int:Output interface index.
-.\"O RTA_GATEWAY:protocol address:The gateway of the route
-.\"O RTA_PRIORITY:int:Priority of route.
-.\"O RTA_PREFSRC::
-.\"O RTA_METRICS:int:Route metric
-.\"O RTA_MULTIPATH::
-.\"O RTA_PROTOINFO::
-.\"O RTA_FLOW::
-.\"O RTA_CACHEINFO::
 属性
 rta_type:値の型:説明
 _
-RTA_UNSPEC:-:無視される
+RTA_UNSPEC:\-:無視される
 RTA_DST:protocol address:経路の行き先アドレス
 RTA_SRC:protocol address:経路の発信元アドレス
 RTA_IIF:int:入力インターフェースの index
@@ -526,20 +251,11 @@ RTA_FLOW::
 RTA_CACHEINFO::
 .TE
 
-.\"O .B Fill these values in!
-.B (これらの値を埋めること!)
-.TP
-.BR RTM_NEWNEIGH ", " RTM_DELNEIGH  ", " RTM_GETNEIGH
-.\"O Add, remove or receive information about a neighbor table
-.\"O entry (e.g., an ARP entry).
-.\"O The message contains an
-.\"O .I ndmsg
-.\"O structure.
-近傍テーブル (neighbor table) のエントリ
-(例えば ARP エントリ) の情報を追加・削除・取得する。
-このメッセージは
-.I ndmsg
-構造体を伴う。
+\fB(これらの値を埋めること!)\fP
+.TP 
+\fBRTM_NEWNEIGH\fP, \fBRTM_DELNEIGH\fP, \fBRTM_GETNEIGH\fP
+近傍テーブル (neighbor table) のエントリ (例えば ARP エントリ) の情報を追加・削除・取得する。 このメッセージは
+\fIndmsg\fP 構造体を伴う。
 
 .nf
 struct ndmsg {
@@ -558,21 +274,10 @@ struct nda_cacheinfo {
 };
 .fi
 
-.\"O .I ndm_state
-.\"O is a bit mask of the following states:
-.I ndm_state
-は以下の状態のビットマスクである:
+\fIndm_state\fP は以下の状態のビットマスクである:
 .TS
 tab(:);
 l l.
-.\"O NUD_INCOMPLETE:a currently resolving cache entry
-.\"O NUD_REACHABLE:a confirmed working cache entry
-.\"O NUD_STALE:an expired cache entry
-.\"O NUD_DELAY:an entry waiting for a timer
-.\"O NUD_PROBE:a cache entry that is currently reprobed
-.\"O NUD_FAILED:an invalid cache entry
-.\"O NUD_NOARP:a device with no destination cache
-.\"O NUD_PERMANENT:a static entry
 NUD_INCOMPLETE:現在レゾルブ中のキャッシュエントリ
 NUD_REACHABLE:動作確認済みのキャッシュエントリ
 NUD_STALE:期限切れのキャッシュエントリ
@@ -583,78 +288,33 @@ NUD_NOARP:行き先キャッシュのないデバイス
 NUD_PERMANENT:静的なエントリ
 .TE
 
-.\"O Valid
-.\"O .I ndm_flags
-.\"O are:
-有効な
-.I ndm_flags
-は以下の通り:
+有効な \fIndm_flags\fP は以下の通り:
 .TS
 tab(:);
 l l.
-.\"O NTF_PROXY:a proxy arp entry
-.\"O NTF_ROUTER:an IPv6 router
 NTF_PROXY:プロクシ arp エントリ
 NTF_ROUTER:IPv6 ルータ
 .TE
 
 .\" FIXME
 .\" document the members of the struct better
-.\"O The
-.\"O .I rtattr
-.\"O struct has the following meanings for the
-.\"O .I rta_type
-.\"O field:
-.I rtattr
-構造体は、
-.I rta_type
-フィールドに応じてそれぞれ以下の意味を持つ:
+\fIrtattr\fP 構造体は、 \fIrta_type\fP フィールドに応じてそれぞれ以下の意味を持つ:
 .TS
 tab(:);
 l l.
-.\"O NDA_UNSPEC:unknown type
-.\"O NDA_DST:a neighbor cache n/w layer destination address
-.\"O NDA_LLADDR:a neighbor cache link layer address
-.\"O NDA_CACHEINFO:cache statistics.
 NDA_UNSPEC:未知のタイプ
 NDA_DST:近傍キャッシュネットワーク層の行き先アドレス
 NDA_LLADDR:近傍キャッシュリンク層のアドレス
 NDA_CACHEINFO:キャッシュの統計
 .TE
 
-.\"O If the
-.\"O .I rta_type
-.\"O field is
-.\"O .B NDA_CACHEINFO
-.\"O then a
-.\"O .I struct nda_cacheinfo
-.\"O header follows
-.I rta_type
-フィールドが
-.B NDA_CACHEINFO
-の場合には、
-.I struct nda_cacheinfo
-ヘッダが続く。
-.TP
-.BR RTM_NEWRULE ", " RTM_DELRULE ", " RTM_GETRULE
-.\"O Add, delete or retrieve a routing rule.
-.\"O Carries a
-.\"O .I struct rtmsg
-ルーティングルールを追加・削除・取得する。
-.I struct rtmsg
-を伴う。
-.\"O
-.TP
-.BR RTM_NEWQDISC ", " RTM_DELQDISC ", " RTM_GETQDISC
-.\"O Add, remove or get a queueing discipline.
-.\"O The message contains a
-.\"O .I struct tcmsg
-.\"O and may be followed by a series of
-.\"O attributes.
-キューイングルールを追加・削除・取得する。
-このメッセージは
-.I struct tcmsg
-を伴い、またそのあとに属性がいくつか続くこともある。
+\fIrta_type\fP フィールドが \fBNDA_CACHEINFO\fP の場合には、 \fIstruct nda_cacheinfo\fP ヘッダが続く。
+.TP 
+\fBRTM_NEWRULE\fP, \fBRTM_DELRULE\fP, \fBRTM_GETRULE\fP
+ルーティングルールを追加・削除・取得する。 \fIstruct rtmsg\fP を伴う。
+.TP 
+\fBRTM_NEWQDISC\fP, \fBRTM_DELQDISC\fP, \fBRTM_GETQDISC\fP
+キューイングルールを追加・削除・取得する。 このメッセージは \fIstruct tcmsg\fP を伴い、またそのあとに属性がいくつか続くこともある。
 
 .nf
 struct tcmsg {
@@ -669,19 +329,10 @@ struct tcmsg {
 tab(:);
 c
 l l l.
-.\"O Attributes
-.\"O rta_type:value type:Description
-.\"O _
-.\"O TCA_UNSPEC:-:unspecified
-.\"O TCA_KIND:asciiz string:Name of queueing discipline
-.\"O TCA_OPTIONS:byte sequence:Qdisc-specific options follow
-.\"O TCA_STATS:struct tc_stats:Qdisc statistics.
-.\"O TCA_XSTATS:qdisc specific:Module-specific statistics.
-.\"O TCA_RATE:struct tc_estimator:Rate limit.
 属性
 rta_type:値の型:説明
 _
-TCA_UNSPEC:-:指定されていない
+TCA_UNSPEC:\-:指定されていない
 TCA_KIND:asciiz string:キューイングルールの名前
 TCA_OPTIONS:byte sequence:Qdisc 特有のオプションが続く
 TCA_STATS:struct tc_stats:Qdisc の統計
@@ -689,43 +340,16 @@ TCA_XSTATS:qdisc specific:モジュール特有の統計
 TCA_RATE:struct tc_estimator:レート制限
 .TE
 
-.\"O In addition various other qdisc module specific attributes are allowed.
-.\"O For more information see the appropriate include files.
-さらに、 qdisc モジュール特有の様々な属性を指定できる。
-詳細な情報は適切なインクルードファイルを見よ。
-.TP
-.BR RTM_NEWTCLASS ", " RTM_DELTCLASS ", " RTM_GETTCLASS
-.\"O Add, remove or get a traffic class.
-.\"O These messages contain a
-.\"O .I struct tcmsg
-.\"O as described above.
-トラフィッククラスを追加・削除・取得する。
-これらのメッセージは、上述の
-.I struct tcmsg
-を伴う。
-.TP
-.BR RTM_NEWTFILTER ", " RTM_DELTFILTER ", " RTM_GETTFILTER
-.\"O Add, remove or receive information about a traffic filter.
-.\"O These messages contain a
-.\"O .I struct tcmsg
-.\"O as described above.
-トラフィックフィルターの情報を追加・削除・取得する。
-これらのメッセージは、上述の
-.I struct tcmsg
-を伴う。
-.\"O .SH VERSIONS
+さらに、 qdisc モジュール特有の様々な属性を指定できる。 詳細な情報は適切なインクルードファイルを見よ。
+.TP 
+\fBRTM_NEWTCLASS\fP, \fBRTM_DELTCLASS\fP, \fBRTM_GETTCLASS\fP
+トラフィッククラスを追加・削除・取得する。 これらのメッセージは、上述の \fIstruct tcmsg\fP を伴う。
+.TP 
+\fBRTM_NEWTFILTER\fP, \fBRTM_DELTFILTER\fP, \fBRTM_GETTFILTER\fP
+トラフィックフィルターの情報を追加・削除・取得する。 これらのメッセージは、上述の \fIstruct tcmsg\fP を伴う。
 .SH バージョン
-.\"O .B rtnetlink
-.\"O is a new feature of Linux 2.2.
-.B rtnetlink
-は Linux 2.2 の新機能である。
-.\"O .SH BUGS
+\fBrtnetlink\fP は Linux 2.2 の新機能である。
 .SH バグ
-.\"O This manual page is incomplete.
-この man ページは不完全である。
-.\"O .SH SEE ALSO
+このマニュアルは完全ではない。
 .SH 関連項目
-.BR cmsg (3),
-.BR rtnetlink (3),
-.BR ip (7),
-.BR netlink (7)
+\fBcmsg\fP(3), \fBrtnetlink\fP(3), \fBip\fP(7), \fBnetlink\fP(7)
index ab8a193..a828d10 100644 (file)
@@ -1,4 +1,4 @@
-'\" t
+.\" t
 .\" Hey Emacs! This file is -*- nroff -*- source.
 .\"
 .\" Copyright (C) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
 .\"
-.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
-.\" Translated 2006-04-18, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" Updated 2008-08-07, Akihiro MOTOKI, LDP v3.05
-.\" Updated 2009-02-23, Akihiro MOTOKI, LDP v3.19
+.\"*******************************************************************
 .\"
-.TH SEM_OVERVIEW 7 2010-05-22 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SEM_OVERVIEW 7 2010\-05\-22 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O sem_overview \- Overview of POSIX semaphores
 sem_overview \- POSIX セマフォの概要
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O POSIX semaphores allow processes and threads to synchronize their actions.
-POSIX セマフォを使用すると、プロセスやスレッド間でその動作を
-同期させることができる。
+POSIX セマフォを使用すると、プロセスやスレッド間でその動作を 同期させることができる。
 
-.\"O A semaphore is an integer whose value is never allowed to fall below zero.
-.\"O Two operations can be performed on semaphores:
-.\"O increment the semaphore value by one
-.\"O .RB ( sem_post (3));
-.\"O and decrement the semaphore value by one
-.\"O .RB ( sem_wait (3)).
-.\"O If the value of a semaphore is currently zero, then a
-.\"O .BR sem_wait (3)
-.\"O operation will block until the value becomes greater than zero.
-セマフォは整数であり、その値は決して 0 未満になることは許されない。
-セマフォに対してできる操作は 2 つである:
-セマフォ値を 1 増やす
-.RB ( sem_post (3));
-セマフォ値を 1 減らす
-.RB ( sem_wait (3))。
-セマフォの値がすでに 0 の場合、セマフォ値が 0 より大きくなるまで
-.BR sem_wait (3)
-操作は停止 (block) する。
+セマフォは整数であり、その値は決して 0 未満になることは許されない。 セマフォに対してできる操作は 2 つである: セマフォ値を 1 増やす
+(\fBsem_post\fP(3)); セマフォ値を 1 減らす (\fBsem_wait\fP(3))。 セマフォの値がすでに 0 の場合、セマフォ値が 0
+より大きくなるまで \fBsem_wait\fP(3)  操作は停止 (block) する。
 
-.\"O POSIX semaphores come in two forms: named semaphores and
-.\"O unnamed semaphores.
-POSIX セマフォには、名前付きセマフォ (named semaphore) と
-名前なしセマフォ (unnamed semaphore) の 2つの形がある。
-.TP
-.\"O .B Named semaphores
-.B 名前付きセマフォ
-.\"O A named semaphore is identified by a name of the form
-.\"O .IR /somename ;
-.\"O that is, a null-terminated string of up to
-.\"O .BI NAME_MAX \-4
-.\"O (i.e., 251) characters consisting of an initial slash,
-名前付きセマフォは
-.I /somename
-という形式の名前で識別される。
-その名前は、最大で
-.BI NAME_MAX \-4
-(すなわち 251) 文字の NULL 終端された文字列で、
+POSIX セマフォには、名前付きセマフォ (named semaphore) と 名前なしセマフォ (unnamed semaphore) の
+2つの形がある。
+.TP 
+\fB名前付きセマフォ\fP
 .\" glibc allows the initial slash to be omitted, and makes
 .\" multiple initial slashes equivalent to a single slash.
 .\" This differs from the implementation of POSIX message queues.
-.\"O followed by one or more characters, none of which are slashes.
-スラッシュで始まり、スラッシュ以外の文字が 1 文字以上続く形式である。
 .\" glibc allows subdirectory components in the name, in which
 .\" case the subdirectory tree must exist under /dev/shm, and
 .\" the fist subdirectory component must exist as the name
 .\" sem.name, and all of the subdirectory components must allow the
 .\" required permissions if a user wants to create a semaphore
 .\" object in a subdirectory.
-.\"O Two processes can operate on the same named semaphore by passing
-.\"O the same name to
-.\"O .BR sem_open (3).
-.BR sem_open (3)
-に同じ名前を渡すことにより、2 つのプロセス間で同じ名前のセマフォ
-に対し操作を行うことができる。
+名前付きセマフォは \fI/somename\fP という形式の名前で識別される。 その名前は、最大で \fBNAME_MAX\fP\fI\-4\fP (すなわち 251)
+文字の NULL 終端された文字列で、 スラッシュで始まり、スラッシュ以外の文字が 1 文字以上続く形式である。 \fBsem_open\fP(3)
+に同じ名前を渡すことにより、2 つのプロセス間で同じ名前のセマフォ に対し操作を行うことができる。
 
-.\"O The
-.\"O .BR sem_open (3)
-.\"O function creates a new named semaphore or opens an existing
-.\"O named semaphore.
-.\"O After the semaphore has been opened, it can be operated on using
-.\"O .BR sem_post (3)
-.\"O and
-.\"O .BR sem_wait (3).
-.\"O When a process has finished using the semaphore, it can use
-.\"O .BR sem_close (3)
-.\"O to close the semaphore.
-.\"O When all processes have finished using the semaphore,
-.\"O it can be removed from the system using
-.\"O .BR sem_unlink (3).
-.BR sem_open (3)
-関数は、新しい名前付きセマフォを作成するか、既に存在する名前付き
-セマフォをオープンする。
-セマフォをオープンした後は、
-.BR sem_post (3)
-と
-.BR sem_wait (3)
-を使ってセマフォを操作できる。
-プロセスがセマフォの使用を終えた際は、
-.BR sem_close (3)
-を使ってセマフォをクローズできる。
-あるセマフォをどのプロセスも使用しなくなると、
-.BR sem_unlink (3)
+\fBsem_open\fP(3)  関数は、新しい名前付きセマフォを作成するか、既に存在する名前付き セマフォをオープンする。 セマフォをオープンした後は、
+\fBsem_post\fP(3)  と \fBsem_wait\fP(3)  を使ってセマフォを操作できる。 プロセスがセマフォの使用を終えた際は、
+\fBsem_close\fP(3)  を使ってセマフォをクローズできる。 あるセマフォをどのプロセスも使用しなくなると、 \fBsem_unlink\fP(3)
 を使ってそのセマフォをシステムから削除することができる。
-.TP
-.\"O .B Unnamed semaphores (memory-based semaphores)
-.B 名前なしセマフォ (メモリベース・セマフォ)
-.\"O An unnamed semaphore does not have a name.
-.\"O Instead the semaphore is placed in a region of memory that
-.\"O is shared between multiple threads (a
-.\"O .IR "thread-shared semaphore" )
-.\"O or processes (a
-.\"O .IR "process-shared semaphore" ).
-.\"O A thread-shared semaphore is placed in an area of memory shared
-.\"O between the threads of a process, for example, a global variable.
-.\"O A process-shared semaphore must be placed in a shared memory region
-.\"O (e.g., a System V shared memory segment created using
-.\"O .BR shmget (2),
-.\"O or a POSIX shared memory object built created using
-.\"O .BR shm_open (3)).
-名前なしセマフォは名前を持たない。その代わり、セマフォは、
-複数スレッド間で共有されるメモリ領域、もしくは複数プロセス間で
-共有されたメモリ領域に置かれる (前者を
-.IR "スレッド共有セマフォ (thread-shared semaphore)" 、
-後者を
-.IR "プロセス共有セマフォ (process-shared semaphore)"
-と呼ぶ)。スレッド共有セマフォは、同じプロセス内のスレッド間で共有される
-メモリ領域、例えば大域変数 (global variable) に配置される。
-プロセス共有セマフォは、共有メモリ領域 (例えば、
-.BR shmget (2)
-を使って作成できる System V 共有メモリ・セグメントや
-.BR shm_open (3)
-を使って作成できる POSIX 共有メモリ・オブジェクト)
-内に配置しなければならない。
+.TP 
+\fB名前なしセマフォ (メモリベース・セマフォ)\fP
+名前なしセマフォは名前を持たない。その代わり、セマフォは、 複数スレッド間で共有されるメモリ領域、もしくは複数プロセス間で
+共有されたメモリ領域に置かれる (前者を \fIスレッド共有セマフォ (thread\-shared semaphore)\fP、 後者を
+\fIプロセス共有セマフォ (process\-shared semaphore)\fP
+と呼ぶ)。スレッド共有セマフォは、同じプロセス内のスレッド間で共有される メモリ領域、例えば大域変数 (global variable) に配置される。
+プロセス共有セマフォは、共有メモリ領域 (例えば、 \fBshmget\fP(2)  を使って作成できる System V 共有メモリ・セグメントや
+\fBshm_open\fP(3)  を使って作成できる POSIX 共有メモリ・オブジェクト)  内に配置しなければならない。
 
-.\"O Before being used, an unnamed semaphore must be initialized using
-.\"O .BR sem_init (3).
-.\"O It can then be operated on using
-.\"O .BR sem_post (3)
-.\"O and
-.\"O .BR sem_wait (3).
-.\"O When the semaphore is no longer required,
-.\"O and before the memory in which it is located is deallocated,
-.\"O the semaphore should be destroyed using
-.\"O .BR sem_destroy (3).
-名前なしセマフォは、使用する前に
-.BR sem_init (3)
-を使って初期化しなければならない。
-セマフォは
-.BR sem_post (3)
-と
-.BR sem_wait (3)
-を使って操作できる。
-セマフォがもはや必要なくなったときや、
-セマフォが置かれているメモリを解放する前には、
-.BR sem_destroy (3)
-を使ってセマフォを破棄すべきである。
+名前なしセマフォは、使用する前に \fBsem_init\fP(3)  を使って初期化しなければならない。 セマフォは \fBsem_post\fP(3)  と
+\fBsem_wait\fP(3)  を使って操作できる。 セマフォがもはや必要なくなったときや、 セマフォが置かれているメモリを解放する前には、
+\fBsem_destroy\fP(3)  を使ってセマフォを破棄すべきである。
 .PP
-.\"O The remainder of this section describes some specific details
-.\"O of the Linux implementation of POSIX semaphores.
-この節の残りでは、POSIX セマフォの Linux の実装の詳細
-について説明する。
-.\"O .SS Versions
-.SS バージョン
-.\"O Prior to kernel 2.6, Linux only supported unnamed,
-.\"O thread-shared semaphores.
-.\"O On a system with Linux 2.6 and a glibc that provides the NPTL
-.\"O threading implementation,
-.\"O a complete implementation of POSIX semaphores is provided.
-バージョン 2.6 より前のカーネルでは、Linux は
-名前なしのスレッド共有セマフォのみをサポートしていた。
-Linux 2.6 と NPTL スレッド実装を提供している glibc が入った
-システムでは、POSIX セマフォの完全な実装が提供される。
-.\"O .SS Persistence
+この節の残りでは、POSIX セマフォの Linux の実装の詳細 について説明する。
+.SS Versions
+バージョン 2.6 より前のカーネルでは、Linux は 名前なしのスレッド共有セマフォのみをサポートしていた。 Linux 2.6 と NPTL
+スレッド実装を提供している glibc が入った システムでは、POSIX セマフォの完全な実装が提供される。
 .SS 持続性
-.\"O POSIX named semaphores have kernel persistence:
-.\"O if not removed by
-.\"O .BR sem_unlink (3),
-.\"O a semaphore will exist until the system is shut down.
-POSIX 名前付きセマフォはカーネル内で保持される。
-.BR sem_unlink (3)
-で削除されなければ、セマフォは
+POSIX 名前付きセマフォはカーネル内で保持される。 \fBsem_unlink\fP(3)  で削除されなければ、セマフォは
 システムがシャットダウンされるまで存在し続ける。
-.\"O .SS Linking
 .SS リンク
-.\"O Programs using the POSIX semaphores API must be compiled with
-.\"O .I cc \-lrt
-.\"O to link against the real-time library,
-.\"O .IR librt .
-POSIX セマフォ API を使用したプログラムは
-.I cc \-lrt
-でコンパイルし、リアルタイムライブラリ
-.I librt
+POSIX セマフォ API を使用したプログラムは \fIcc \-lrt\fP でコンパイルし、リアルタイムライブラリ \fIlibrt\fP
 とリンクしなければならない。
-.\"O .SS Accessing named semaphores via the file system
 .SS ファイルシステム経由での名前付きセマフォへのアクセス
-.\"O On Linux, named semaphores are created in a virtual file system,
-.\"O normally mounted under
-.\"O .IR /dev/shm ,
-.\"O with names of the form
-.\"O .IR \fBsem.\fPsomename .
-Linux では、名前付きセマフォは仮想ファイルシステム
-(virtual file system) 内に
-.I \fBsem.\fPsomename
-という形の名前で作成される。仮想ファイルシステムは通常
-.I /dev/shm
-以下にマウントされる。
-.\"O (This is the reason that semaphore names are limited to
-.\"O .BI NAME_MAX \-4
-.\"O rather than
-.\"O .B NAME_MAX
-.\"O characters.)
-(これが、セマフォの名前の文字数の上限が
-.B NAME_MAX
-ではなく
-.BI NAME_MAX \-4
-となっている理由である。)
+Linux では、名前付きセマフォは仮想ファイルシステム (virtual file system) 内に \fBsem.\fP\fIsomename\fP
+という形の名前で作成される。仮想ファイルシステムは通常 \fI/dev/shm\fP 以下にマウントされる。 (これが、セマフォの名前の文字数の上限が
+\fBNAME_MAX\fP ではなく \fBNAME_MAX\fP\fI\-4\fP となっている理由である。)
 
-.\"O Since Linux 2.6.19, ACLs can be placed on files under this directory,
-.\"O to control object permissions on a per-user and per-group basis.
 Linux 2.6.19 以降では、このディレクトリ配下のファイルに対して ACL を
-設定でき、オブジェクトへの許可をユーザ単位、グループ単位で制御することが
-できる。
-.\"O .SH "CONFORMING TO"
+設定でき、オブジェクトへの許可をユーザ単位、グループ単位で制御することが できる。
 .SH 準拠
-POSIX.1-2001.
-.\"O .SH NOTES
+POSIX.1\-2001.
 .SH 注意
-.\"O System V semaphores
-.\"O .RB ( semget (2),
-.\"O .BR semop (2),
-.\"O etc.) are an older semaphore API.
-.\"O POSIX semaphores provide a simpler, and better designed interface than
-.\"O System V semaphores;
-.\"O on the other hand POSIX semaphores are less widely available
-.\"O (especially on older systems) than System V semaphores.
-System V セマフォ
-.RB ( semget (2),
-.BR semop (2)
-など) は古いセマフォ API である。 POSIX セマフォは System V よりも
-簡単で、うまく設計されたインタフェースを提供している。
-一方で、POSIX セマフォは System V セマフォと比べると
+System V セマフォ (\fBsemget\fP(2), \fBsemop\fP(2)  など) は古いセマフォ API である。 POSIX セマフォは
+System V よりも 簡単で、うまく設計されたインタフェースを提供している。 一方で、POSIX セマフォは System V セマフォと比べると
 利用できるシステムが少ない (特に、古いシステムでは少ない)。
-.\"O .SH EXAMPLE
 .SH 例
-.\"O An example of the use of various POSIX semaphore functions is shown in
-.\"O .BR sem_wait (3).
-各種の POSIX セマフォ関数を使用した例が
-.BR sem_wait (3)
-に記載されている。
-.\"O .SH "SEE ALSO"
+各種の POSIX セマフォ関数を使用した例が \fBsem_wait\fP(3)  に記載されている。
 .SH 関連項目
-.BR sem_close (3),
-.BR sem_destroy (3),
-.BR sem_getvalue (3),
-.BR sem_init (3),
-.BR sem_open (3),
-.BR sem_post (3),
-.BR sem_unlink (3),
-.BR sem_wait (3),
-.BR pthreads (7)
+\fBsem_close\fP(3), \fBsem_destroy\fP(3), \fBsem_getvalue\fP(3), \fBsem_init\fP(3),
+\fBsem_open\fP(3), \fBsem_post\fP(3), \fBsem_unlink\fP(3), \fBsem_wait\fP(3),
+\fBpthreads\fP(7)
index be62dec..2f89236 100644 (file)
@@ -1,4 +1,4 @@
-'\" t
+.\" t
 .\" Hey Emacs! This file is -*- nroff -*- source.
 .\"
 .\" Copyright (C) 2008, Linux Foundation, written by Michael Kerrisk
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
 .\"
-.\" Japanese Version Copyright (c) 2008  Akihiro MOTOKI
-.\"         all rights reserved.
-.\" Translated 2008-08-21, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.04
+.\"*******************************************************************
 .\"
-.TH SHM_OVERVIEW 7 2010-09-10 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SHM_OVERVIEW 7 2010\-09\-10 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O shm_overview \- Overview of POSIX shared memory
 shm_overview \- POSIX 共有メモリの概要
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O The POSIX shared memory API allows processes to communicate information
-.\"O by sharing a region of memory.
-POSIX 共有メモリ API を使用すると、メモリのある領域を共有して、
-プロセス間で情報をやり取りすることができる。
+POSIX 共有メモリ API を使用すると、メモリのある領域を共有して、 プロセス間で情報をやり取りすることができる。
 
-.\"O The interfaces employed in the API are:
 この API では以下のインターフェースが採用されている。
-.TP 15
-.BR shm_open (3)
-.\"O Create and open a new object, or open an existing object.
-.\"O This is analogous to
-.\"O .BR open (2).
-.\"O The call returns a file descriptor for use by the other
-.\"O interfaces listed below.
-新しいオブジェクトを生成しオープンする、もしくは
-既存のオブジェクトをオープンする。これは
-.BR open (2)
-と同じである。下記にある他のインターフェースで使用する
-ファイルディスクリプタを返す。
-.TP
-.BR ftruncate (2)
-.\"O Set the size of the shared memory object.
-.\"O (A newly created shared memory object has a length of zero.)
+.TP  15
+\fBshm_open\fP(3)
+新しいオブジェクトを生成しオープンする、もしくは 既存のオブジェクトをオープンする。これは \fBopen\fP(2)
+と同じである。下記にある他のインターフェースで使用する ファイルディスクリプタを返す。
+.TP 
+\fBftruncate\fP(2)
 共有メモリオブジェクトの大きさを設定する。
-.TP
-.BR mmap (2)
-.\"O Map the shared memory object into the virtual address space
-.\"O of the calling process.
-呼び出したプロセスの仮想アドレス空間に共有メモリオブジェクトを
-マップする。
-.TP
-.BR munmap (2)
-.\"O Unmap the shared memory object from the virtual address space
-.\"O of the calling process.
-呼び出したプロセスの仮想アドレス空間から
-共有メモリオブジェクトをアンマップする。
-.TP
-.BR shm_unlink (3)
-.\"O Remove a shared memory object name.
+.TP 
+\fBmmap\fP(2)
+呼び出したプロセスの仮想アドレス空間に共有メモリオブジェクトを マップする。
+.TP 
+\fBmunmap\fP(2)
+呼び出したプロセスの仮想アドレス空間から 共有メモリオブジェクトをアンマップする。
+.TP 
+\fBshm_unlink\fP(3)
 共有メモリオブジェクト名を削除する。
-.TP
-.BR close (2)
-.\"O Close the file descriptor allocated by
-.\"O .BR shm_open (3)
-.\"O when it is no longer needed.
-.BR shm_open (3)
-で割り当てられたファイルディスクリプタが不要になった際に、
-そのファイルディスクリプタをクローズする。
-.TP
-.BR fstat (2)
-.\"O Obtain a
-.\"O .I stat
-.\"O structure that describes the shared memory object.
-.\"O Among the information returned by this call are the object's
-.\"O size
-.\"O .RI ( st_size ),
-.\"O permissions
-.\"O .RI ( st_mode ),
-.\"O owner
-.\"O .RI ( st_uid ),
-.\"O and group
-.\"O .RI ( st_gid ).
-その共有メモリオブジェクトについての情報が入った
-.I stat
-構造体を取得する。
-このシステムコールが返す情報には、オブジェクトのサイズ
-.RI ( st_size )、
-許可属性
-.RI ( st_mode )、
-所有者
-.RI ( st_uid )、
-グループ
-.RI ( st_gid )
-がある。
-.TP
-.BR fchown (2)
-.\"O To change the ownership of a shared memory object.
+.TP 
+\fBclose\fP(2)
+\fBshm_open\fP(3)  で割り当てられたファイルディスクリプタが不要になった際に、 そのファイルディスクリプタをクローズする。
+.TP 
+\fBfstat\fP(2)
+その共有メモリオブジェクトについての情報が入った \fIstat\fP 構造体を取得する。 このシステムコールが返す情報には、オブジェクトのサイズ
+(\fIst_size\fP)、 許可属性 (\fIst_mode\fP)、 所有者 (\fIst_uid\fP)、 グループ (\fIst_gid\fP)  がある。
+.TP 
+\fBfchown\fP(2)
 共有メモリオブジェクトの所有権を変更する。
-.TP
-.BR fchmod (2)
-.\"O To change the permissions of a shared memory object.
+.TP 
+\fBfchmod\fP(2)
 共有メモリオブジェクトの許可属性を変更する。
-.\"O .SS Versions
-.SS バージョン
-.\"O POSIX shared memory is supported since Linux 2.4 and glibc 2.2.
+.SS Versions
 POSIX 共有メモリは Linux 2.4 と glibc 2.2 以降でサポートされている。
-.\"O .SS Persistence
 .SS 持続性
-.\"O POSIX shared memory objects have kernel persistence:
-.\"O a shared memory object will exist until the system is shut down,
-.\"O or until all processes have unmapped the object and it has been deleted with
-.\"O .BR shm_unlink (3)
-POSIX 共有メモリオブジェクトはカーネル内で保持される。
-共有メモリオブジェクトは、システムがシャットダウンされるか、
-全てのプロセスがそのオブジェクトをアンマップし、
-.BR shm_unlink (3)
-で削除されるまで、存在し続ける。
-.\"O .SS Linking
+POSIX 共有メモリオブジェクトはカーネル内で保持される。 共有メモリオブジェクトは、システムがシャットダウンされるか、
+全てのプロセスがそのオブジェクトをアンマップし、 \fBshm_unlink\fP(3)  で削除されるまで、存在し続ける。
 .SS リンク
-.\"O Programs using the POSIX shared memory API must be compiled with
-.\"O .I cc \-lrt
-.\"O to link against the real-time library,
-.\"O .IR librt .
-POSIX 共有メモリ API を使用したプログラムは
-.I cc \-lrt
-でコンパイルし、リアルタイムライブラリ
-.I librt
+POSIX 共有メモリ API を使用したプログラムは \fIcc \-lrt\fP でコンパイルし、リアルタイムライブラリ \fIlibrt\fP
 とリンクしなければならない。
-.\"O .SS Accessing shared memory objects via the file system
 .SS ファイルシステム経由での共有メモリオブジェクトへのアクセス
-.\"O On Linux, shared memory objects are created in a
-.\"O .RI ( tmpfs )
-.\"O virtual file system, normally mounted under
-.\"O .IR /dev/shm .
-.\"O Since kernel 2.6.19, Linux supports the use of access control lists (ACLs)
-.\"O to control the permissions of objects in the virtual file system.
-Linux では、共有メモリオブジェクトは通常
-.I /dev/shm
-以下にマウントされる仮想ファイルシステム
-.RI ( tmpfs )
-内に作成される。
-カーネル 2.6.19 以降の Linux では、
-仮想ファイルシステム内のオブジェクトの許可属性の制御に、
-アクセス制御リスト (ACL; access control lists) を使うことができる。
-.\"O .SH "CONFORMING TO"
+Linux では、共有メモリオブジェクトは通常 \fI/dev/shm\fP 以下にマウントされる仮想ファイルシステム (\fItmpfs\fP)
+内に作成される。 カーネル 2.6.19 以降の Linux では、 仮想ファイルシステム内のオブジェクトの許可属性の制御に、 アクセス制御リスト
+(ACL; access control lists) を使うことができる。
 .SH 準拠
-POSIX.1-2001.
-.\"O .SH NOTES
+POSIX.1\-2001.
 .SH 注意
-.\"O Typically, processes must synchronize their access to a shared
-.\"O memory object, using, for example, POSIX semaphores.
-通常は、共有メモリオブジェクトにアクセスするプロセスは、
-POSIX セマフォなどを使ってプロセス間で同期をとらなければならない。
+通常は、共有メモリオブジェクトにアクセスするプロセスは、 POSIX セマフォなどを使ってプロセス間で同期をとらなければならない。
 
-.\"O System V shared memory
-.\"O .RB ( shmget (2),
-.\"O .BR shmop (2),
-.\"O etc.) is an older shared memory API.
-.\"O POSIX shared memory provides a simpler, and better designed interface;
-.\"O on the other hand POSIX shared memory is somewhat less widely available
-.\"O (especially on older systems) than System V shared memory.
-System V 共有メモリ
-.RB ( shmget (2),
-.BR shmop (2)
-など) は古い共有メモリ API である。
-POSIX 共有メモリは、より簡単で、うまく設計されたインタフェースを提供している。
-一方で、POSIX 共有メモリは System V 共有メモリと比べると
+System V 共有メモリ (\fBshmget\fP(2), \fBshmop\fP(2)  など) は古い共有メモリ API である。 POSIX
+共有メモリは、より簡単で、うまく設計されたインタフェースを提供している。 一方で、POSIX 共有メモリは System V 共有メモリと比べると
 利用できるシステムが少ない (特に、古いシステムでは少ない)。
-.\"O .SH "SEE ALSO"
 .SH 関連項目
-.BR fchmod (2),
-.BR fchown (2),
-.BR fstat (2),
-.BR ftruncate (2),
-.BR mmap (2),
-.BR mprotect (2),
-.BR munmap (2),
-.BR shmget (2),
-.BR shmop (2),
-.BR shm_open (3),
-.BR shm_unlink (3),
-.BR sem_overview (7)
+\fBfchmod\fP(2), \fBfchown\fP(2), \fBfstat\fP(2), \fBftruncate\fP(2), \fBmmap\fP(2),
+\fBmprotect\fP(2), \fBmunmap\fP(2), \fBshmget\fP(2), \fBshmop\fP(2), \fBshm_open\fP(3),
+\fBshm_unlink\fP(3), \fBsem_overview\fP(7)
index ecd554f..8a77f01 100644 (file)
@@ -1,4 +1,4 @@
-'\" t
+.\" t
 .\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de)
 .\" and Copyright (c) 2002, 2006 by Michael Kerrisk <mtk.manpages@gmail.com>
 .\" and Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk
 .\"     Added section on stop/cont signals interrupting syscalls.
 .\" 2008-10-05, mtk: various additions
 .\"
-.\" Japanese Version Copyright (c) 1997 Takafumi Naka
-.\"     and 2005-2008 Akihiro MOTOKI
-.\"         all rights reserved.
-.\" Translated 1997-02-13, Takafumi Naka <takafumi@yk.rim.or.jp>
-.\" Modified 1999-06-22, Tatsuo SEKINE <tsekine@isoternet.org>
-.\" Modified 1999-07-18, Takafumi Naka <takafumi@yk.rim.or.jp>
-.\" Modified 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>, LDP v1.28
-.\" Updated 2003-07-24, Kentaro Shirakata <argrath@ub32.org>
-.\" Updated 2005-02-23, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" Updated 2006-07-28, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.36
-.\" Updated 2007-05-28, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.50
-.\" Updated 2007-09-08, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.64
-.\" Updated 2008-08-11, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.05
-.\" Updated 2008-11-21, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.13
-.\" Updated 2010-04-10, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.24
+.\"*******************************************************************
 .\"
-.\"WORD:       disposition     処理方法
-.\"WORD:       pending         処理待ち
-.\"WORD:       signal handler  シグナルハンドラ
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH SIGNAL 7  2011-09-18 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O signal \- overview of signals
+.\"*******************************************************************
+.TH SIGNAL 7 2011\-09\-18 Linux "Linux Programmer's Manual"
 .SH 名前
 signal \- シグナルの概要
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O Linux supports both POSIX reliable signals (hereinafter
-.\"O "standard signals") and POSIX real-time signals.
-Linux は POSIX 信頼シグナル (reliable signal; 以後 "標準シグナル"と表記)
-と POSIX リアルタイムシグナルの両方に対応している。
-.\"O .SS "Signal Dispositions"
+Linux は POSIX 信頼シグナル (reliable signal; 以後 "標準シグナル"と表記)  と POSIX
+リアルタイムシグナルの両方に対応している。
 .SS シグナル処理方法
-.\"O Each signal has a current
-.\"O .IR disposition ,
-.\"O which determines how the process behaves when it is delivered
-.\"O the signal.
-シグナルはそれぞれ現在の「処理方法 (disposition)」を保持しており、
-この処理方法によりシグナルが配送された際にプロセスが
+シグナルはそれぞれ現在の「処理方法 (disposition)」を保持しており、 この処理方法によりシグナルが配送された際にプロセスが
 どのような振舞いをするかが決まる。
 
-.\"O The entries in the "Action" column of the tables below specify
-.\"O the default disposition for each signal, as follows:
-後述の表の "動作" の欄のエントリは各シグナルのデフォルトの
-処理方法を示しており、以下のような意味を持つ。
+後述の表の "動作" の欄のエントリは各シグナルのデフォルトの 処理方法を示しており、以下のような意味を持つ。
 .IP Term
-.\"O Default action is to terminate the process.
 デフォルトの動作はプロセス終了。
 .IP Ign
-.\"O Default action is to ignore the signal.
 デフォルトの動作はこのシグナルの無視。
 .IP Core
-.\"O Default action is to terminate the process and dump core (see
-.\"O .BR core (5)).
-デフォルトの動作はプロセス終了とコアダンプ出力
-.RB ( core (5)
-参照)。
+デフォルトの動作はプロセス終了とコアダンプ出力 (\fBcore\fP(5)  参照)。
 .IP Stop
-.\"O Default action is to stop the process.
 デフォルトの動作はプロセスの一時停止。
 .IP Cont
-.\"O Default action is to continue the process if it is currently stopped.
 デフォルトの動作は、プロセスが停止中の場合にその実行の再開。
 .PP
-.\"O A process can change the disposition of a signal using
-.\"O .BR sigaction (2)
-.\"O or
-.\"O .BR signal (2).
-.\"O (The latter is less portable when establishing a signal handler;
-.\"O see
-.\"O .BR signal (2)
-.\"O for details.)
-プロセスは、
-.BR sigaction (2)
-や
-.BR signal (2)
-を使って、シグナルの処理方法を変更することができる
-.RB ( signal (2)
-の方がシグナルハンドラを設定する際の移植性が低い;
-詳細は
-.BR signal (2)
-を参照)。
-.\"O Using these system calls, a process can elect one of the
-.\"O following behaviors to occur on delivery of the signal:
-.\"O perform the default action; ignore the signal;
-.\"O or catch the signal with a
-.\"O .IR "signal handler" ,
-.\"O a programmer-defined function that is automatically invoked
-.\"O when the signal is delivered.
-.\"O (By default, the signal handler is invoked on the
-.\"O normal process stack.
-.\"O It is possible to arrange that the signal handler
-.\"O uses an alternate stack; see
-.\"O .BR sigaltstack (2)
-.\"O for a discussion of how to do this and when it might be useful.)
-シグナルの配送時に起こる動作として
-プロセスが選択できるのは、次のいずれか一つである。
-デフォルトの動作を実行する、シグナルを無視する、
-.I "シグナルハンドラ (signal handler)"
-でシグナルを捕捉する。シグナルハンドラとは、シグナル配送時に
-自動的に起動されるプログラマ定義の関数である。
-(デフォルトでは、シグナルハンドラは通常のプロセスのスタック上で起動される。
+プロセスは、 \fBsigaction\fP(2)  や \fBsignal\fP(2)  を使って、シグナルの処理方法を変更することができる
+(\fBsignal\fP(2)  の方がシグナルハンドラを設定する際の移植性が低い; 詳細は \fBsignal\fP(2)  を参照)。
+シグナルの配送時に起こる動作として プロセスが選択できるのは、次のいずれか一つである。 デフォルトの動作を実行する、シグナルを無視する、
+\fIシグナルハンドラ (signal handler)\fP でシグナルを捕捉する。シグナルハンドラとは、シグナル配送時に
+自動的に起動されるプログラマ定義の関数である。 (デフォルトでは、シグナルハンドラは通常のプロセスのスタック上で起動される。
 シグナルハンドラが代替スタック (alternate stack) を使用するように設定する
-こともできる。代替スタックを使用するように設定する方法と、どのような際に
-代替スタックが役に立つかについての議論については
-.BR sigaltstack (2)
-を参照のこと。
+こともできる。代替スタックを使用するように設定する方法と、どのような際に 代替スタックが役に立つかについての議論については
+\fBsigaltstack\fP(2)  を参照のこと。
 
-.\"O The signal disposition is a per-process attribute:
-.\"O in a multithreaded application, the disposition of a
-.\"O particular signal is the same for all threads.
-シグナルの処理方法はプロセス単位の属性である。
-マルチスレッドのアプリケーションでは、あるシグナルの処理方法は
-全てのスレッドで同じである。
+シグナルの処理方法はプロセス単位の属性である。 マルチスレッドのアプリケーションでは、あるシグナルの処理方法は 全てのスレッドで同じである。
 
-.\"O A child created via
-.\"O .BR fork (2)
-.\"O inherits a copy of its parent's signal dispositions.
-.\"O During an
-.\"O .BR execve (2),
-.\"O the dispositions of handled signals are reset to the default;
-.\"O the dispositions of ignored signals are left unchanged.
-.BR fork (2)
-で作成された子プロセスは親プロセスのシグナルの処理方法のコピーを継承する。
-.BR execve (2)
-の間、ハンドラが登録されているシグナルの処理方法はデフォルトにリセット
-され、無視となっているシグナルの処理方法は変更されずそのままとなる。
-.\"O .SS Sending a Signal
+\fBfork\fP(2) 経由で作成された子プロセスは、親プロセスのシグナルの処理方法の コピーを継承する。
+\fBexecve\fP(2) の前後で、ハンドラが設定されているシグナルの処理方法はデフォルトにリセットされ、
+無視が設定されているシグナルの処理方法は変更されずそのままとなる。
 .SS シグナルの送信
-.\"O The following system calls and library functions allow
-.\"O the caller to send a signal:
-以下のシステムコールとライブラリ関数を使って、
-呼び出し者はシグナルを送信することができる。
-.TP 16
-.BR raise (3)
-.\"O Sends a signal to the calling thread.
+以下のシステムコールとライブラリ関数を使って、 呼び出し者はシグナルを送信することができる。
+.TP  16
+\fBraise\fP(3)
 呼び出したスレッドにシグナルを送る。
-.TP
-.BR kill (2)
-.\"O Sends a signal to a specified process,
-.\"O to all members of a specified process group,
-.\"O or to all processes on the system.
-指定されたプロセスや、指定されたプロセスグループの全メンバー、
-システムの全プロセスにシグナルを送る。
-.TP
-.BR killpg (2)
-.\"O Sends a signal to all of the members of a specified process group.
+.TP 
+\fBkill\fP(2)
+指定されたプロセスや、指定されたプロセスグループの全メンバー、 システムの全プロセスにシグナルを送る。
+.TP 
+\fBkillpg\fP(2)
 指定されたプロセスグループの全メンバーにシグナルを送る。
-.TP
-.BR pthread_kill (3)
-.\"O Sends a signal to a specified POSIX thread in the same process as
-.\"O the caller.
+.TP 
+\fBpthread_kill\fP(3)
 呼び出し者と同じプロセス内の指定された POSIX スレッドにシグナルを送る。
-.TP
-.BR tgkill (2)
-.\"O Sends a signal to a specified thread within a specific process.
-.\"O (This is the system call used to implement
-.\"O .BR pthread_kill (3).)
-指定されたプロセス内の指定されたスレッドにシグナルを送る
-(このシステムコールを使って
-.BR pthread_kill (3)
-は実装されている)。
-.TP
-.BR sigqueue (3)
-.\"O Sends a real-time signal with accompanying data to a specified process.
+.TP 
+\fBtgkill\fP(2)
+指定されたプロセス内の指定されたスレッドにシグナルを送る (このシステムコールを使って \fBpthread_kill\fP(3)  は実装されている)。
+.TP 
+\fBsigqueue\fP(3)
 指定されたプロセスに付属データとともにリアルタイムシグナルを送る。
-.\"O .SS Waiting for a Signal to be Caught
 .SS シグナルが捕捉されるのを待つ
-.\"O The following system calls suspend execution of the calling process
-.\"O or thread until a signal is caught
-.\"O (or an unhandled signal terminates the process):
-以下のシステムコールを使って、シグナルが捕捉されるまで
-呼び出したプロセスやスレッドの実行を中断 (suspend) することができる
-(ハンドラが設定されていないシグナルによりそのプロセスが終了した
-場合にも実行の停止は終了する)。
-.TP 16
-.BR pause (2)
-.\"O Suspends execution until any signal is caught.
+以下のシステムコールを使って、シグナルが捕捉されるまで 呼び出したプロセスやスレッドの実行を中断 (suspend) することができる
+(ハンドラが設定されていないシグナルによりそのプロセスが終了した 場合にも実行の停止は終了する)。
+.TP  16
+\fBpause\fP(2)
 何かシグナルが捕捉されるまで実行を停止する。
-.TP
-.BR sigsuspend (2)
-.\"O Temporarily changes the signal mask (see below) and suspends
-.\"O execution until one of the unmasked signals is caught.
-一時的にシグナルマスク (下記参照) を変更し、
-マスクされていないシグナルのいずれかが捕捉されるまで
-実行を中断する。
-.\"O .SS Synchronously Accepting a Signal
+.TP 
+\fBsigsuspend\fP(2)
+一時的にシグナルマスク (下記参照) を変更し、 マスクされていないシグナルのいずれかが捕捉されるまで 実行を中断する。
 .SS シグナルの同期受信
-.\"O Rather than asynchronously catching a signal via a signal handler,
-.\"O it is possible to synchronously accept the signal, that is,
-.\"O to block execution until the signal is delivered,
-.\"O at which point the kernel returns information about the
-.\"O signal to the caller.
-.\"O There are two general ways to do this:
-シグナルハンドラ経由でシグナルを非同期 (asynchronously) で捕捉する以外にも、
-シグナルを同期 (synchronously) して受け付けることもできる。
-同期して受け付けるとは、シグナルが配送されるまで実行を停止 (block)
-するということである。シグナルを受け付けた際に、カーネルは
-そのシグナルに関する情報を呼び出し者に返す。
-これを行う一般的な方法が二つある。
+シグナルハンドラ経由でシグナルを非同期 (asynchronously) で捕捉する以外にも、 シグナルを同期 (synchronously)
+して受け付けることもできる。 同期して受け付けるとは、シグナルが配送されるまで実行を停止 (block)
+するということである。シグナルを受け付けた際に、カーネルは そのシグナルに関する情報を呼び出し者に返す。 これを行う一般的な方法が二つある。
 .IP * 2
-.\"O .BR sigwaitinfo (2),
-.\"O .BR sigtimedwait (2),
-.\"O and
-.\"O .BR sigwait (3)
-.\"O suspend execution until one of the signals in a specified
-.\"O set is delivered.
-.\"O Each of these calls returns information about the delivered signal.
-.BR sigwaitinfo (2),
-.BR sigtimedwait (2),
-.BR sigwait (3)
-は、指定されたシグナル集合のシグナルの一つが配送されるまで実行を中断する。
-どのシステムコールや関数でも、配送されたシグナルに関する情報が返される。
+\fBsigwaitinfo\fP(2), \fBsigtimedwait\fP(2), \fBsigwait\fP(3)
+は、指定されたシグナル集合のシグナルの一つが配送されるまで実行を中断する。 どのシステムコールや関数でも、配送されたシグナルに関する情報が返される。
 .IP *
-.\"O .BR signalfd (2)
-.\"O returns a file descriptor that can be used to read information
-.\"O about signals that are delivered to the caller.
-.\"O Each
-.\"O .BR read (2)
-.\"O from this file descriptor blocks until one of the signals
-.\"O in the set specified in the
-.\"O .BR signalfd (2)
-.\"O call is delivered to the caller.
-.\"O The buffer returned by
-.\"O .BR read (2)
-.\"O contains a structure describing the signal.
-.BR signalfd (2)
-が返すファイルディスクリプタを使うと、呼び出し元に配送された
-シグナルに関する情報を読み出すことができる。
-このファイルディスクリプタからの
-.BR read (2)
-は、
-.BR signalfd (2)
-の呼び出し時に指定されたシグナル集合のシグナルの一つが呼び出し元に
-配送されるまで停止 (block) する。
-.BR read (2)
+\fBsignalfd\fP(2)  が返すファイルディスクリプタを使うと、呼び出し元に配送された シグナルに関する情報を読み出すことができる。
+このファイルディスクリプタからの \fBread\fP(2)  は、 \fBsignalfd\fP(2)
+の呼び出し時に指定されたシグナル集合のシグナルの一つが呼び出し元に 配送されるまで停止 (block) する。 \fBread\fP(2)
 が返すバッファにはシグナルに関する情報を格納した構造体が入っている。
-.\"O .SS "Signal Mask and Pending Signals"
 .SS シグナルマスクと処理待ちシグナル
-.\"O A signal may be
-.\"O .IR blocked ,
-.\"O which means that it will not be delivered until it is later unblocked.
-.\"O Between the time when it is generated and when it is delivered
-.\"O a signal is said to be
-.\"O .IR pending .
-シグナルは
-.I "ブロック (block)"
-されることがある。ブロックされると、そのシグナルは
-その後ブロックを解除されるまで配送されなくなる。
-シグナルが生成されてから配送されるまでの間、そのシグナルは
-.I "処理待ち (pending)"
-であると呼ばれる。
+シグナルは \fIブロック (block)\fP されることがある。ブロックされると、そのシグナルは その後ブロックを解除されるまで配送されなくなる。
+シグナルが生成されてから配送されるまでの間、そのシグナルは \fI処理待ち (pending)\fP であると呼ばれる。
 
-.\"O Each thread in a process has an independent
-.\"O .IR "signal mask" ,
-.\"O which indicates the set of signals that the thread is currently blocking.
-.\"O A thread can manipulate its signal mask using
-.\"O .BR pthread_sigmask (3).
-.\"O In a traditional single-threaded application,
-.\"O .BR sigprocmask (2)
-.\"O can be used to manipulate the signal mask.
-プロセス内の各スレッドは、それぞれ独立な
-.I "シグナルマスク (signal mask)"
-を持つ。シグナルマスクはそのスレッドが現在ブロックしている
-シグナル集合を示すものである。
-スレッドは、
-.BR pthread_sigmask (3)
-を使って自分のシグナルマスクを操作できる。
-伝統的なシングルスレッドのアプリケーションでは、
-.BR sigprocmask (2)
-を使って、シグナルマスクを操作できる。
+プロセス内の各スレッドは、それぞれ独立な \fIシグナルマスク (signal mask)\fP を持つ。シグナルマスクはそのスレッドが現在ブロックしている
+シグナル集合を示すものである。 スレッドは、 \fBpthread_sigmask\fP(3)  を使って自分のシグナルマスクを操作できる。
+伝統的なシングルスレッドのアプリケーションでは、 \fBsigprocmask\fP(2)  を使って、シグナルマスクを操作できる。
 
-.\"O A child created via
-.\"O .BR fork (2)
-.\"O inherits a copy of its parent's signal mask;
-.\"O the signal mask is preserved across
-.\"O .BR execve (2).
-.BR fork (2)
-経由で作成された子プロセスは、
-親プロセスのシグナルマスクのコピーを継承する。
-.BR execve (2)
+\fBfork\fP(2)  経由で作成された子プロセスは親プロセスのシグナルマスクのコピーを継承する。 \fBexecve\fP(2)
 の前後でシグナルマスクは保持される。
 
-.\"O A signal may be generated (and thus pending)
-.\"O for a process as a whole (e.g., when sent using
-.\"O .BR kill (2))
-.\"O or for a specific thread (e.g., certain signals,
-.\"O such as
-.\"O .B SIGSEGV
-.\"O and
-.\"O .BR SIGFPE ,
-.\"O generated as a
-.\"O consequence of executing a specific machine-language instruction
-.\"O are thread directed, as are signals targeted at a specific thread using
-.\"O .BR pthread_kill (3)).
-.\"O A process-directed signal may be delivered to any one of the
-.\"O threads that does not currently have the signal blocked.
-.\"O If more than one of the threads has the signal unblocked, then the
-.\"O kernel chooses an arbitrary thread to which to deliver the signal.
-生成されるシグナル (したがって処理待ちとなるシグナル) には、
-プロセス全体宛てと特定のスレッド宛てがある。
-例えば、プロセス全体宛てのシグナルは
-.BR kill (2)
-を使って送信される。
-特定のマシン語の命令の実行の結果として生成される、
-.B SIGSEGV
-や
-.B SIGFPE
-などのシグナルは、スレッド宛てとなる。
-また、
-.BR pthread_kill (3)
-を使って特定のスレッド宛てに生成されたシグナルも
-スレッド宛てとなる。
-プロセス宛てのシグナルは、そのシグナルをブロックしていないスレッドのうち
-いずれかの一つに配送することができる。そのシグナルをブロックしていない
-スレッドが複数ある場合、シグナルを配送するスレッドはカーネルが
+生成されるシグナル (したがって処理待ちとなるシグナル) には、 プロセス全体宛てと特定のスレッド宛てがある。 例えば、プロセス全体宛てのシグナルは
+\fBkill\fP(2)  を使って送信される。 特定のマシン語の命令の実行の結果として生成される、 \fBSIGSEGV\fP や \fBSIGFPE\fP
+などのシグナルは、スレッド宛てとなる。 また、 \fBpthread_kill\fP(3)  を使って特定のスレッド宛てに生成されたシグナルも
+スレッド宛てとなる。 プロセス宛てのシグナルは、そのシグナルをブロックしていないスレッドのうち
+いずれかの一つに配送することができる。そのシグナルをブロックしていない スレッドが複数ある場合、シグナルを配送するスレッドはカーネルが
 無作為に選択する。
 
-.\"O A thread can obtain the set of signals that it currently has pending
-.\"O using
-.\"O .BR sigpending (2).
-.\"O This set will consist of the union of the set of pending
-.\"O process-directed signals and the set of signals pending for
-.\"O the calling thread.
-スレッドは、
-.BR sigpending (2)
-を使って、現在処理待ちのシグナル集合を取得することができる。
-この集合は、プロセス宛ての処理待ちシグナルと
-呼び出したスレッド宛てのシグナルの両方から構成される。
+スレッドは、 \fBsigpending\fP(2)  を使って、現在処理待ちのシグナル集合を取得することができる。
+この集合は、プロセス宛ての処理待ちシグナルと 呼び出したスレッド宛てのシグナルの両方から構成される。
 
-.\"O A child created via
-.\"O .BR fork (2)
-.\"O initially has an empty pending signal set;
-.\"O the pending signal set is preserved across an
-.\"O .BR execve (2).
-.BR fork (2)
-経由で作成された子プロセスでは、処理待ちのシグナル集合は
-空の集合で初期化される。
-.BR execve (2)
+\fBfork\fP(2)  経由で作成された子プロセスでは、処理待ちのシグナル集合は空の集合で初期化される。 \fBexecve\fP(2)
 の前後で、処理待ちのシグナル集合は保持される。
-.\"O .SS "Standard Signals"
 .SS 標準シグナル
-.\"O Linux supports the standard signals listed below.
-.\"O Several signal numbers
-.\"O are architecture-dependent, as indicated in the "Value" column.
-.\"O (Where three values are given, the first one is usually valid for
-.\"O alpha and sparc,
-.\"O the middle one for ix86, ia64, ppc, s390, arm and sh,
-.\"O and the last one for mips.
-Linux は以下に示す標準シグナルに対応している。
-シグナル番号の一部はアーキテクチャ依存であり、"値" 欄に示す通りである。
-(3つの値が書かれているものは、 1つ目が alpha と sparc で通常有効な値、
-真ん中が ix86, ia64, ppc, s390, arm, sh での値、最後が mips での値である。
 .\" parisc is a law unto itself
-.\"O A \- denotes that a signal is absent on the corresponding architecture.)
-\- はそのアーキテクチャにおいて対応するシグナルがないことを示す。)
+Linux は以下に示す標準シグナルに対応している。 シグナル番号の一部はアーキテクチャ依存であり、"値" 欄に示す通りである。
+(3つの値が書かれているものは、 1つ目が alpha と sparc で通常有効な値、 真ん中が ix86, ia64, ppc, s390,
+arm, sh での値、最後が mips での値である。 \- はそのアーキテクチャにおいて対応するシグナルがないことを示す。)
 
-.\"O First the signals described in the original POSIX.1-1990 standard.
-最初に、POSIX.1-1990 に定義されているシグナルを示す。
+最初に、POSIX.1\-1990 に定義されているシグナルを示す。
 .TS
 l c c l
 ____
 lB c c l.
-.\"O Signal    Value   Action  Comment
 シグナル   値     動作  コメント
-.\"O SIGHUP    \01     Term    Hangup detected on controlling terminal
-.\"O                   or death of controlling process
-SIGHUP \01     Term    T{
-制御端末(controlling terminal)のハングアップ検出、
-または制御しているプロセスの死
-T}
-.\"O SIGINT    \02     Term    Interrupt from keyboard
-.\"O SIGQUIT   \03     Core    Quit from keyboard
-.\"O SIGILL    \04     Core    Illegal Instruction
-.\"O SIGABRT   \06     Core    Abort signal from \fBabort\fP(3)
-.\"O SIGFPE    \08     Core    Floating point exception
-.\"O SIGKILL   \09     Term    Kill signal
+SIGHUP \01     Term    制御端末(controlling terminal)のハングアップ検出、
+                       または制御しているプロセスの死
 SIGINT \02     Term    キーボードからの割り込み (Interrupt)
 SIGQUIT        \03     Core    キーボードによる中止 (Quit)
 SIGILL \04     Core    不正な命令
 SIGABRT        \06     Core    \fBabort\fP(3) からの中断 (Abort) シグナル
 SIGFPE \08     Core    浮動小数点例外
 SIGKILL        \09     Term    Kill シグナル
-.\"O SIGSEGV   11      Core    Invalid memory reference
-.\"O SIGPIPE   13      Term    Broken pipe: write to pipe with no
-.\"O                   readers
-.\"O SIGALRM   14      Term    Timer signal from \fBalarm\fP(2)
-.\"O SIGTERM   15      Term    Termination signal
 SIGSEGV        11      Core    不正なメモリ参照
-SIGPIPE        13      Term    パイプ破壊: 読み手の無いパイプへの書き出し
+SIGPIPE        13      Term    パイプ破壊:
+                       読み手の無いパイプへの書き出し
 SIGALRM        14      Term    \fBalarm\fP(2) からのタイマーシグナル
 SIGTERM        15      Term    終了 (termination) シグナル
-.\"O SIGUSR1   30,10,16        Term    User-defined signal 1
-.\"O SIGUSR2   31,12,17        Term    User-defined signal 2
-.\"O SIGCHLD   20,17,18        Ign     Child stopped or terminated
-.\"O SIGCONT   19,18,25        Cont    Continue if stopped
 SIGUSR1        30,10,16        Term    ユーザ定義シグナル 1
 SIGUSR2        31,12,17        Term    ユーザ定義シグナル 2
 SIGCHLD        20,17,18        Ign     子プロセスの一時停止 (stop) または終了
 SIGCONT        19,18,25        Cont    一時停止 (stop) からの再開
-.\"O SIGSTOP   17,19,23        Stop    Stop process
-.\"O SIGTSTP   18,20,24        Stop    Stop typed at tty
-.\"O SIGTTIN   21,21,26        Stop    tty input for background process
-.\"O SIGTTOU   22,22,27        Stop    tty output for background process
 SIGSTOP        17,19,23        Stop    プロセスの一時停止 (stop)
 SIGTSTP        18,20,24        Stop    端末 (tty) より入力された一時停止 (stop)
 SIGTTIN        21,21,26        Stop    バックグランドプロセスの tty 入力
 SIGTTOU        22,22,27        Stop    バックグランドプロセスの tty 出力
 .TE
 
-.\"O The signals
-.\"O .B SIGKILL
-.\"O and
-.\"O .B SIGSTOP
-.\"O cannot be caught, blocked, or ignored.
-シグナル
-.B SIGKILL
-と
-.B SIGSTOP
-はキャッチ、ブロック、無視できない。
+シグナル \fBSIGKILL\fP と \fBSIGSTOP\fP はキャッチ、ブロック、無視できない。
 
-.\"O Next the signals not in the POSIX.1-1990 standard but described in
-.\"O SUSv2 and POSIX.1-2001.
-次に、 POSIX.1-1990 標準にはないが、 SUSv2 と
-POSIX.1-2001 に記述されているシグナルを示す。
+次に、 POSIX.1\-1990 標準にはないが、 SUSv2 と POSIX.1\-2001 に記述されているシグナルを示す。
 .TS
 l c c l
 ____
 lB c c l.
-.\"O Signal    Value   Action  Comment
 シグナル   値     動作  コメント
-.\"O SIGBUS    10,7,10 Core    Bus error (bad memory access)
-.\"O SIGPOLL           Term    Pollable event (Sys V).
-.\"O                   Synonym for \fBSIGIO\fP
-.\"O SIGPROF   27,27,29        Term    Profiling timer expired
 SIGBUS 10,7,10 Core    バスエラー (不正なメモリアクセス)
 SIGPOLL                Term    ポーリング可能なイベント (Sys V)。
                        \fBSIGIO\fP と同義
 SIGPROF        27,27,29        Term    profiling タイマの時間切れ
-.\"O SIGSYS    12,31,12        Core    Bad argument to routine (SVr4)
-.\"O SIGTRAP   5       Core    Trace/breakpoint trap
-.\"O SIGURG    16,23,21        Ign     Urgent condition on socket (4.2BSD)
 SIGSYS 12,31,12        Core    ルーチンへの引き数が不正 (SVr4)
 SIGTRAP        5       Core    トレース/ブレークポイント トラップ
-SIGURG 16,23,21        Ign     T{
-ソケットの緊急事態 (urgent condition) (4.2BSD)
-T}
-.\"O SIGVTALRM 26,26,28        Term    Virtual alarm clock (4.2BSD)
-.\"O SIGXCPU   24,24,30        Core    CPU time limit exceeded (4.2BSD)
-.\"O SIGXFSZ   25,25,31        Core    File size limit exceeded (4.2BSD)
+SIGURG 16,23,21        Ign     ソケットの緊急事態 (urgent condition) (4.2BSD)
 SIGVTALRM      26,26,28        Term    仮想アラームクロック (4.2BSD)
 SIGXCPU        24,24,30        Core    CPU時間制限超過 (4.2BSD)
 SIGXFSZ        25,25,31        Core    ファイルサイズ制限の超過 (4.2BSD)
 .TE
 
-.\"O Up to and including Linux 2.2, the default behavior for
-.\"O .BR SIGSYS ", " SIGXCPU ", " SIGXFSZ ", "
-.\"O and (on architectures other than SPARC and MIPS)
-.\"O .B SIGBUS
-.\"O was to terminate the process (without a core dump).
-.\"O (On some other UNIX systems the default action for
-.\"O .BR SIGXCPU " and " SIGXFSZ
-.\"O is to terminate the process without a core dump.)
-.\"O Linux 2.4 conforms to the POSIX.1-2001 requirements for these signals,
-.\"O terminating the process with a core dump.
-Linux 2.2 以前では、
-.BR SIGSYS ", " SIGXCPU ", " SIGXFSZ
-および SPARC と MIPS 以外のアーキテクチャでの
-.B SIGBUS
-のデフォルトの振る舞いは (コアダンプ出力なしの) プロセス終了であった。
-(他の UNIX システムにも
-.BR SIGXCPU " と " SIGXFSZ
-のデフォルトの動作がコアダンプなしのプロセス終了のものがある。)
-Linux 2.4 では、POSIX.1-2001 での要求仕様に準拠して、
-これらのシグナルで、プロセスを終了させ、コアダンプを出力する
-ようになっている。
+Linux 2.2 以前では、 \fBSIGSYS\fP, \fBSIGXCPU\fP, \fBSIGXFSZ\fP および SPARC と MIPS
+以外のアーキテクチャでの \fBSIGBUS\fP のデフォルトの振る舞いは (コアダンプ出力なしの) プロセス終了であった。 (他の UNIX システムにも
+\fBSIGXCPU\fP と \fBSIGXFSZ\fP のデフォルトの動作がコアダンプなしのプロセス終了のものがある。)  Linux 2.4
+では、POSIX.1\-2001 での要求仕様に準拠して、 これらのシグナルで、プロセスを終了させ、コアダンプを出力する ようになっている。
 
-.\"O Next various other signals.
 次にその他の各種シグナルを示す。
 .TS
 l c c l
 ____
 lB c c l.
-.\"O Signal    Value   Action  Comment
 シグナル   値     動作  コメント
-.\"O SIGIOT    6       Core    IOT trap. A synonym for \fBSIGABRT\fP
-.\"O SIGEMT    7,\-,7  Term
-.\"O SIGSTKFLT \-,16,\-        Term    Stack fault on coprocessor (unused)
-.\"O SIGIO     23,29,22        Term    I/O now possible (4.2BSD)
-.\"O SIGCLD    \-,\-,18        Ign     A synonym for \fBSIGCHLD\fP
 SIGIOT 6       Core    IOT トラップ。\fBSIGABRT\fP と同義
 SIGEMT 7,\-,7  Term
-SIGSTKFLT      \-,16,\-        A       T{
-数値演算プロセッサにおけるスタックフォルト (未使用)
-T}
+SIGSTKFLT      \-,16,\-        A       数値演算プロセッサにおけるスタックフォルト (未使用)
 SIGIO  23,29,22        Term    入出力が可能になった (4.2BSD)
 SIGCLD \-,\-,18        Ign     \fBSIGCHLD\fP と同義
-.\"O SIGPWR    29,30,19        Term    Power failure (System V)
-.\"O SIGINFO   29,\-,\-                A synonym for \fBSIGPWR\fP
-.\"O SIGLOST   \-,\-,\-        Term    File lock lost
-.\"O SIGWINCH  28,28,20        Ign     Window resize signal (4.3BSD, Sun)
-.\"O SIGUNUSED \-,31,\-        Core    Synonymous with \fBSIGSYS\fP
 SIGPWR 29,30,19        Term    電源喪失 (Power failure) (System V)
 SIGINFO        29,\-,\-                \fBSIGPWR\fP と同義
 SIGLOST        \-,\-,\-        Term    ファイルロックが失われた
-SIGWINCH       28,28,20        Ign     T{
-ウィンドウ リサイズ シグナル (4.3BSD, Sun)
-T}
+SIGWINCH       28,28,20        Ign     ウィンドウ リサイズ シグナル (4.3BSD, Sun)
 SIGUNUSED      \-,31,\-        Core    \fBSIGSYS\fP と同義
 .TE
 
-.\"O (Signal 29 is
-.\"O .B SIGINFO
-.\"O /
-.\"O .B SIGPWR
-.\"O on an alpha but
-.\"O .B SIGLOST
-.\"O on a sparc.)
-(シグナル 29 は alpha では
-.B SIGINFO
-/
-.B SIGPWR
-だが、sparc では
-.B SIGLOST
-である。)
+(シグナル 29 は alpha では \fBSIGINFO\fP / \fBSIGPWR\fP だが、sparc では \fBSIGLOST\fP である。)
 
-.\"O .B SIGEMT
-.\"O is not specified in POSIX.1-2001, but nevertheless appears
-.\"O on most other UNIX systems,
-.\"O where its default action is typically to terminate
-.\"O the process with a core dump.
-.B SIGEMT
-は POSIX.1-2001 に規定されていないが、
-その他の多くの UNIX システムに存在する。
+\fBSIGEMT\fP は POSIX.1\-2001 に規定されていないが、 その他の多くの UNIX システムに存在する。
 デフォルトの動作は多くの場合、コアダンプ出力を伴うプロセスの終了である。
 
-.\"O .B SIGPWR
-.\"O (which is not specified in POSIX.1-2001) is typically ignored
-.\"O by default on those other UNIX systems where it appears.
-.B SIGPWR
-は (POSIX.1-2001 に規定されていないが) このシグナルが存在する
-他の UNIX システムでは多くの場合、デフォルト動作は無視である。
+\fBSIGPWR\fP は (POSIX.1\-2001 に規定されていないが) このシグナルが存在する 他の UNIX
+システムでは多くの場合、デフォルト動作は無視である。
 
-.\"O .B SIGIO
-.\"O (which is not specified in POSIX.1-2001) is ignored by default
-.\"O on several other UNIX systems.
-.B SIGIO
-は (POSIX.1-2001 に規定されていないが) いくつかの他の UNIX システムでは
-デフォルト動作は無視である。
+\fBSIGIO\fP は (POSIX.1\-2001 に規定されていないが) いくつかの他の UNIX システムでは デフォルト動作は無視である。
 
-.\"O Where defined,
-.\"O .B SIGUNUSED
-.\"O is synonymous with
-.\"O .\" parisc is the only exception: SIGSYS is 12, SIGUNUSED is 31
-.\"O .B SIGSYS
-.\"O on most architectures.
-.B SIGUNUSED
-が定義されている場合には、ほとんどのアーキテクチャで
-.B SIGSYS
-の同義語となっている。
 .\" parisc is the only exception: SIGSYS is 12, SIGUNUSED is 31
-.\"O .SS "Real-time Signals"
+\fBSIGUNUSED\fP が定義されている場合には、ほとんどのアーキテクチャで \fBSIGSYS\fP の同義語となっている。
 .SS リアルタイムシグナル
-.\"O Linux supports real-time signals as originally defined in the POSIX.1b
-.\"O real-time extensions (and now included in POSIX.1-2001).
-Linux はリアルタイムシグナルをサポートしている。
-リアルタイムシグナルは元々 POSIX.1b のリアルタイム拡張で定義されて
-いるものであり、現在では POSIX.1-2001 に含まれている。
-.\"O The range of supported real-time signals is defined by the macros
-.\"O .B SIGRTMIN
-.\"O and
-.\"O .BR SIGRTMAX .
-.\"O POSIX.1-2001 requires that an implementation support at least
-.\"O .B _POSIX_RTSIG_MAX
-.\"O (8) real-time signals.
-対応しているリアルタイムシグナルの範囲は、マクロ
-.B SIGRTMIN
-と
-.B SIGRTMAX
-で定義される。
-POSIX.1-2001 では、少なくとも
-.B _POSIX_RTSIG_MAX
-(8) 個のリアルタイムシグナルに対応した実装が要求されている。
+Linux はリアルタイムシグナルをサポートしている。 リアルタイムシグナルは元々 POSIX.1b のリアルタイム拡張で定義されて
+いるものであり、現在では POSIX.1\-2001 に含まれている。 対応しているリアルタイムシグナルの範囲は、マクロ \fBSIGRTMIN\fP と
+\fBSIGRTMAX\fP で定義される。 POSIX.1\-2001 では、少なくとも \fB_POSIX_RTSIG_MAX\fP (8)
+個のリアルタイムシグナルに対応した実装が要求されている。
 .PP
-.\"O The Linux kernel supports a range of 32 different real-time
-.\"O signals, numbered 33 to 64.
-.\"O However, the glibc POSIX threads implementation internally uses
-.\"O two (for NPTL) or three (for LinuxThreads) real-time signals
-.\"O (see
-.\"O .BR pthreads (7)),
-.\"O and adjusts the value of
-.\"O .B SIGRTMIN
-.\"O suitably (to 34 or 35).
-Linux は、32 個の異なるリアルタイムシグナルに対応しており、
-その番号は 33 から 64 である。
-しかしながら、glibc の POSIX スレッド実装は、
-内部で 2個 (NPTL の場合) か 3個 (LinuxThreads の場合) の
-リアルタイムシグナルを使用しており
-.RB ( pthreads (7)
-参照)、
-.B SIGRTMIN
-の値を適切に (34 か 35 に) 調整する。
-.\"O Because the range of available real-time signals varies according
-.\"O to the glibc threading implementation (and this variation can occur
-.\"O at run time according to the available kernel and glibc),
-.\"O and indeed the range of real-time signals varies across UNIX systems,
-.\"O programs should
-.\"O .IR "never refer to real-time signals using hard-coded numbers" ,
-.\"O but instead should always refer to real-time signals using the notation
-.\"O .BR SIGRTMIN +n,
-.\"O and include suitable (run-time) checks that
-.\"O .BR SIGRTMIN +n
-.\"O does not exceed
-.\"O .BR SIGRTMAX .
-利用可能なリアルタイムシグナルの範囲は glibc のスレッド実装により
-異なるし (使用するカーネルと glibc により実行時にも変化する)、
-UNIX システムの種類によっても異なる。したがって、
-プログラムでは「ハードコーディングした数字を使ってのリアルタイムシグナルの
-参照は決してすべきではなく」、代わりに
-.BR SIGRTMIN +n
-の形で参照すべきである。また、
-.BR SIGRTMIN +n
-が
-.B SIGRTMAX
-を超えていないかのチェックを (実行時に) 適切に行うべきである。
+Linux は、32 個の異なるリアルタイムシグナルに対応しており、 その番号は 33 から 64 である。 しかしながら、glibc の POSIX
+スレッド実装は、 内部で 2個 (NPTL の場合) か 3個 (LinuxThreads の場合) の リアルタイムシグナルを使用しており
+(\fBpthreads\fP(7)  参照)、 \fBSIGRTMIN\fP の値を適切に (34 か 35 に) 調整する。
+利用可能なリアルタイムシグナルの範囲は glibc のスレッド実装により 異なるし (使用するカーネルと glibc により実行時にも変化する)、
+UNIX システムの種類によっても異なる。したがって、 プログラムでは「ハードコーディングした数字を使ってのリアルタイムシグナルの
+参照は決してすべきではなく」、代わりに \fBSIGRTMIN\fP+n の形で参照すべきである。また、 \fBSIGRTMIN\fP+n が
+\fBSIGRTMAX\fP を超えていないかのチェックを (実行時に) 適切に行うべきである。
 .PP
-.\"O Unlike standard signals, real-time signals have no predefined meanings:
-.\"O the entire set of real-time signals can be used for application-defined
-.\"O purposes.
-標準シグナルと異なり、リアルタイムシグナルには
-事前に定義された意味はない。
-リアルタイムシグナルの全部をアプリケーションで定義した用途に使える。
+標準シグナルと異なり、リアルタイムシグナルには 事前に定義された意味はない。 リアルタイムシグナルの全部をアプリケーションで定義した用途に使える。
 .PP
-.\"O The default action for an unhandled real-time signal is to terminate the
-.\"O receiving process.
-ハンドリングしないリアルタイムシグナルのデフォルトの動作は
-受信したプロセスの終了である。
+ハンドリングしないリアルタイムシグナルのデフォルトの動作は 受信したプロセスの終了である。
 .PP
-.\"O Real-time signals are distinguished by the following:
 リアルタイムシグナルは以下の特徴がある:
 .IP 1. 4
-.\"O Multiple instances of real-time signals can be queued.
-.\"O By contrast, if multiple instances of a standard signal are delivered
-.\"O while that signal is currently blocked, then only one instance is queued.
-リアルタイムシグナルは複数の実体をキューに入れることができる。
-一方、標準シグナルの場合、そのシグナルがブロックされている間に
-同じシグナルの複数のインスタンスが配送されても、
-1 つだけがキューに入れられる。
+リアルタイムシグナルは複数の実体をキューに入れることができる。 一方、標準シグナルの場合、そのシグナルがブロックされている間に
+同じシグナルの複数のインスタンスが配送されても、 1 つだけがキューに入れられる。
 .IP 2. 4
-.\"O If the signal is sent using
-.\"O .BR sigqueue (3),
-.\"O an accompanying value (either an integer or a pointer) can be sent
-.\"O with the signal.
-シグナルが
-.BR sigqueue (3)
-を用いて送信された場合、
-付属データ (整数かポインタ) をシグナルと共に送信できる。
-.\"O If the receiving process establishes a handler for this signal using the
-.\"O .B SA_SIGINFO
-.\"O flag to
-.\"O .BR sigaction (2)
-.\"O then it can obtain this data via the
-.\"O .I si_value
-.\"O field of the
-.\"O .I siginfo_t
-.\"O structure passed as the second argument to the handler.
-受信側プロセスが
-.BR sigaction (2)
-に
-.B SA_SIGINFO
-フラグを指定してシグナルハンドラを設定した場合、
-このデータは
-.I siginfo_t
-構造体の
-.I si_value
-フィールド経由でハンドラの第 2 引き数として渡され、
-利用することができる。
-.\"O Furthermore, the
-.\"O .I si_pid
-.\"O and
-.\"O .I si_uid
-.\"O fields of this structure can be used to obtain the PID
-.\"O and real user ID of the process sending the signal.
-さらに、この構造体の
-.I si_pid
-と
-.I si_uid
-フィールドでシグナルを送信したプロセスの PID と実ユーザ ID を
+シグナルが \fBsigqueue\fP(3)  を用いて送信された場合、 付属データ (整数かポインタ) をシグナルと共に送信できる。 受信側プロセスが
+\fBsigaction\fP(2)  に \fBSA_SIGINFO\fP フラグを指定してシグナルハンドラを設定した場合、 このデータは
+\fIsiginfo_t\fP 構造体の \fIsi_value\fP フィールド経由でハンドラの第 2 引き数として渡され、 利用することができる。
+さらに、この構造体の \fIsi_pid\fP と \fIsi_uid\fP フィールドでシグナルを送信したプロセスの PID と実ユーザ ID を
 得ることができる。
 .IP 3. 4
-.\"O Real-time signals are delivered in a guaranteed order.
-.\"O Multiple real-time signals of the same type are delivered in the order
-.\"O they were sent.
-.\"O If different real-time signals are sent to a process, they are delivered
-.\"O starting with the lowest-numbered signal.
-.\"O (I.e., low-numbered signals have highest priority.)
-.\"O By contrast, if multiple standard signals are pending for a process,
-.\"O the order in which they are delivered is unspecified.
-リアルタイムシグナルでは配送される順序が保証される。
-同じタイプのリアルタイムシグナルは送信された順番に到着する。
-異なるリアルタイムシグナルが一つのプロセスに送信された場合、
-番号の小さいシグナルから先に到着する。
-(つまり小さい番号のシグナルが高い優先順位を持つ。)
-対照的に、一つのプロセスに対して複数の標準シグナルが処理待ちとなった場合、
+リアルタイムシグナルでは配送される順序が保証される。 同じタイプのリアルタイムシグナルは送信された順番に到着する。
+異なるリアルタイムシグナルが一つのプロセスに送信された場合、 番号の小さいシグナルから先に到着する。
+(つまり小さい番号のシグナルが高い優先順位を持つ。)  対照的に、一つのプロセスに対して複数の標準シグナルが処理待ちとなった場合、
 これらのシグナルが配送される順序は不定である。
 .PP
-.\"O If both standard and real-time signals are pending for a process,
-.\"O POSIX leaves it unspecified which is delivered first.
-.\"O Linux, like many other implementations, gives priority
-.\"O to standard signals in this case.
-一つのプロセスに対して標準シグナルとリアルタイムシグナルの両方が
-処理待ちの場合、POSIX はどちらが先に配送されるかを規定していない。
-Linux では、他の多くの実装と同様、このような場合には
-標準シグナルが優先される。
+一つのプロセスに対して標準シグナルとリアルタイムシグナルの両方が 処理待ちの場合、POSIX はどちらが先に配送されるかを規定していない。 Linux
+では、他の多くの実装と同様、このような場合には 標準シグナルが優先される。
 .PP
-.\"O According to POSIX, an implementation should permit at least
-.\"O .B _POSIX_SIGQUEUE_MAX
-.\"O (32) real-time signals to be queued to
-.\"O a process.
-POSIX によれば、1 プロセス毎に最低
-.B _POSIX_SIGQUEUE_MAX
-(32) 個のリアルタイムシグナルをキューに入れられるべきとしている。
-.\"O However, Linux does things differently.
-.\"O In kernels up to and including 2.6.7, Linux imposes
-.\"O a system-wide limit on the number of queued real-time signals
-.\"O for all processes.
-しかし、 Linux では違った実装になっている。カーネル 2.6.7 までは
-(2.6.7 を含む)、全プロセスでキューに入っているリアルタイムシグナル
-の数の合計についてシステム全体での制限がある。
-.\"O This limit can be viewed and (with privilege) changed via the
-.\"O .I /proc/sys/kernel/rtsig-max
-.\"O file.
-.\"O A related file,
-.\"O .IR /proc/sys/kernel/rtsig-nr ,
-.\"O can be used to find out how many real-time signals are currently queued.
-この制限は
-.I /proc/sys/kernel/rtsig-max
-ファイルで見ることができ、 (権限があれば) 変更もできる。
-関係するファイルとして、
-.I /proc/sys/kernel/rtsig-nr
-を見ることで、いくつのリアルタイムシグナルが現在キューに入っているかを
-知ることができる。
-.\"O In Linux 2.6.8, these
-.\"O .I /proc
-.\"O interfaces were replaced by the
-.\"O .B RLIMIT_SIGPENDING
-.\"O resource limit, which specifies a per-user limit for queued
-.\"O signals; see
-.\"O .BR setrlimit (2)
-.\"O for further details.
-Linux 2.6.8 で、これらの
-.I /proc
-経由のインターフェースは、
-.B RLIMIT_SIGPENDING
-リソース制限に置き換えられた。
-これは、キューに入るシグナル数に関してユーザ単位に
-上限を指定するものである。
-詳しくは
-.BR setrlimit (2)
+POSIX によれば、1 プロセス毎に最低 \fB_POSIX_SIGQUEUE_MAX\fP (32)
+個のリアルタイムシグナルをキューに入れられるべきとしている。 しかし、 Linux では違った実装になっている。カーネル 2.6.7 までは
+(2.6.7 を含む)、全プロセスでキューに入っているリアルタイムシグナル の数の合計についてシステム全体での制限がある。 この制限は
+\fI/proc/sys/kernel/rtsig\-max\fP ファイルで見ることができ、 (権限があれば) 変更もできる。 関係するファイルとして、
+\fI/proc/sys/kernel/rtsig\-nr\fP を見ることで、いくつのリアルタイムシグナルが現在キューに入っているかを 知ることができる。
+Linux 2.6.8 で、これらの \fI/proc\fP 経由のインターフェースは、 \fBRLIMIT_SIGPENDING\fP
+リソース制限に置き換えられた。 これは、キューに入るシグナル数に関してユーザ単位に 上限を指定するものである。 詳しくは \fBsetrlimit\fP(2)
 を参照。
-.\"O .SS "Async-signal-safe functions"
-.SS "非同期シグナルで安全な関数 (async-signal-safe functions)"
+.SS "非同期シグナルで安全な関数 (async\-signal\-safe functions)"
 .PP
-.\"O A signal handler function must be very careful,
-.\"O since processing elsewhere may be interrupted
-.\"O at some arbitrary point in the execution of the program.
-.\"O POSIX has the concept of "safe function".
-.\"O If a signal interrupts the execution of an unsafe function, and
-.\"O .I handler
-.\"O calls an unsafe function, then the behavior of the program is undefined.
-シグナルハンドラ関数には非常に注意しなければならない。
-他の場所の処理はプログラム実行の任意の箇所で中断される可能性があるためである。
-POSIX には「安全な関数 (safe function)」という概念がある。
-シグナルが安全でない関数の実行を中断し、かつ
-.I handler
+シグナルハンドラ関数には非常に注意しなければならない。 他の場所の処理はプログラム実行の任意の箇所で中断される可能性があるためである。 POSIX
+には「安全な関数 (safe function)」という概念がある。 シグナルが安全でない関数の実行を中断し、かつ \fIhandler\fP
 が安全でない関数を呼び出した場合、プログラムの挙動は未定義である。
 
-.\"O POSIX.1-2004 (also known as POSIX.1-2001 Technical Corrigendum 2)
-.\"O requires an implementation to guarantee that the following
-.\"O functions can be safely called inside a signal handler:
-POSIX.1-2004 (POSIX.1-2001 Technical Corrigendum (正誤表) 2 とも言う) では、
-シグナルハンドラ内での安全な呼び出しを保証することが必須の関数として
-以下が規定されている。
+POSIX.1\-2004 (POSIX.1\-2001 Technical Corrigendum (正誤表) 2 とも言う) では、
+シグナルハンドラ内での安全な呼び出しを保証することが必須の関数として 以下が規定されている。
 
 .in +4
 .nf
@@ -948,9 +413,7 @@ write()
 .fi
 .in
 .PP
-.\"O POSIX.1-2008 removes fpathconf(), pathconf(), and sysconf()
-.\"O from the above list, and adds the following functions:
-POSIX.1-2008 では、上記のリストのうち fpathconf(), pathconf(), sysconf()
+POSIX.1\-2008 では、上記のリストのうち fpathconf(), pathconf(), sysconf()
 が削除され、以下の関数が追加された。
 .PP
 .in +4n
@@ -977,425 +440,121 @@ utimensat()
 utimes()
 .fi
 .in
-.\"O .SS Interruption of System Calls and Library Functions by Signal Handlers
 .SS シグナルハンドラによるシステムコールやライブラリ関数への割り込み
-.\"O If a signal handler is invoked while a system call or library
-.\"O function call is blocked, then either:
-システムコールやライブラリが停止 (block) している間にシグナルハンドラが
-起動されると、以下のどちらかとなる。
+システムコールやライブラリが停止 (block) している間にシグナルハンドラが 起動されると、以下のどちらかとなる。
 .IP * 2
-.\"O the call is automatically restarted after the signal handler returns; or
 シグナルが返った後、呼び出しは自動的に再スタートされる。
 .IP *
-.\"O the call fails with the error
-.\"O .BR EINTR .
-呼び出しはエラー
-.B EINTR
-で失敗する。
+呼び出しはエラー \fBEINTR\fP で失敗する。
 .PP
-.\"O Which of these two behaviors occurs depends on the interface and
-.\"O whether or not the signal handler was established using the
-.\"O .BR SA_RESTART
-.\"O flag (see
-.\"O .BR sigaction (2)).
-.\"O The details vary across UNIX systems;
-.\"O below, the details for Linux.
-これらの二つの挙動のうちどちらが起こるかは、インターフェイスにより依存し、
-シグナルハンドラが
-.B SA_RESTART
-フラグ
-.RB ( sigaction (2)
-参照) を使って設定されていたかにも依存する。
-詳細は UNIX システムによって異なる。
-Linux における詳細を以下で説明する。
+これらの二つの挙動のうちどちらが起こるかは、インターフェイスにより依存し、 シグナルハンドラが \fBSA_RESTART\fP フラグ
+(\fBsigaction\fP(2)  参照) を使って設定されていたかにも依存する。 詳細は UNIX システムによって異なる。 Linux
+における詳細を以下で説明する。
 
-.\"O If a blocked call to one of the following interfaces is interrupted
-.\"O by a signal handler, then the call will be automatically restarted
-.\"O after the signal handler returns if the
-.\"O .BR SA_RESTART
-.\"O flag was used; otherwise the call will fail with the error
-.\"O .BR EINTR :
-.\"O .\" The following system calls use ERESTARTSYS,
-.\"O .\" so that they are restartable
-以下のインターフェイスのいずれかの呼び出しが停止している間に
-シグナルハンドラにより割り込まれた場合、
-.B SA_RESTART
-フラグが使用されていれば、シグナルハンドラが返った後に
-その呼び出しは自動的に再スタートされることになる。
-それ以外の場合は、その呼び出しはエラー
-.B EINTR
-で失敗することになる。
-.\" 以下のシステムコールは ERESTARTSYS を使っている。
-.\" そのため、これらは再スタートが可能である。
+.\" The following system calls use ERESTARTSYS,
+.\" so that they are restartable
+以下のインターフェイスのいずれかの呼び出しが停止している間に シグナルハンドラにより割り込まれた場合、 \fBSA_RESTART\fP
+フラグが使用されていれば、シグナルハンドラが返った後に その呼び出しは自動的に再スタートされることになる。 それ以外の場合は、その呼び出しはエラー
+\fBEINTR\fP で失敗することになる。
 .RS 4
 .IP * 2
-.\"O .BR read (2),
-.\"O .BR readv (2),
-.\"O .BR write (2),
-.\"O .BR writev (2),
-.\"O and
-.\"O .BR ioctl (2)
-.\"O calls on "slow" devices.
-.\"O A "slow" device is one where the I/O call may block for an
-.\"O indefinite time, for example, a terminal, pipe, or socket.
-.\"O (A disk is not a slow device according to this definition.)
-.\"O If an I/O call on a slow device has already transferred some
-.\"O data by the time it is interrupted by a signal handler,
-.\"O then the call will return a success status
-.\"O (normally, the number of bytes transferred).
-.BR read (2),
-.BR readv (2),
-.BR write (2),
-.BR writev (2),
-.BR ioctl (2)
-の「遅い (slow)」デバイスに対する呼び出し。
-ここでいう「遅い」デバイスとは、I/O 呼び出しが無期限に停止 (block) する
-可能性のあるデバイスのことで、例としては端末、パイプ、ソケットがある
-(この定義では、ディスクは遅いデバイスではない)。
-遅いデバイスに対する I/O 呼び出しが、
-シグナルハンドラにより割り込まれた時点までに何らかのデータを
-すでに転送していれば、呼び出しは成功ステータス
+\fBread\fP(2), \fBreadv\fP(2), \fBwrite\fP(2), \fBwritev\fP(2), \fBioctl\fP(2)  の「遅い
+(slow)」デバイスに対する呼び出し。 ここでいう「遅い」デバイスとは、I/O 呼び出しが無期限に停止 (block) する
+可能性のあるデバイスのことで、例としては端末、パイプ、ソケットがある (この定義では、ディスクは遅いデバイスではない)。 遅いデバイスに対する I/O
+呼び出しが、 シグナルハンドラにより割り込まれた時点までに何らかのデータを すでに転送していれば、呼び出しは成功ステータス
 (通常は、転送されたバイト数) を返すことだろう。
 .IP *
-.\"O .BR open (2),
-.\"O if it can block (e.g., when opening a FIFO; see
-.\"O .BR fifo (7)).
-停止 (block) する可能性のある
-.BR open (2)
-(例えば、FIFO のオープン時;
-.BR fifo (7)
-参照)。
+停止 (block) する可能性のある \fBopen\fP(2)  (例えば、FIFO のオープン時; \fBfifo\fP(7)  参照)。
 .IP *
-.\"O .BR wait (2),
-.\"O .BR wait3 (2),
-.\"O .BR wait4 (2),
-.\"O .BR waitid (2),
-.\"O and
-.\"O .BR waitpid (2).
-.BR wait (2),
-.BR wait3 (2),
-.BR wait4 (2),
-.BR waitid (2),
-.BR waitpid (2).
+\fBwait\fP(2), \fBwait3\fP(2), \fBwait4\fP(2), \fBwaitid\fP(2), \fBwaitpid\fP(2).
 .IP *
-.\"O Socket interfaces:
-ソケットインターフェイス:
 .\" If a timeout (setsockopt()) is in effect on the socket, then these
 .\" system calls switch to using EINTR.  Consequently, they and are not
 .\" automatically restarted, and they show the stop/cont behavior
 .\" described below.  (Verified from 2.6.26 source, and by experiment; mtk)
-.\"O .BR accept (2),
-.\"O .BR connect (2),
-.\"O .BR recv (2),
-.\"O .BR recvfrom (2),
-.\"O .BR recvmsg (2),
-.\"O .BR send (2),
-.\"O .BR sendto (2),
-.\"O and
-.\"O .BR sendmsg (2),
-.\"O unless a timeout has been set on the socket (see below).
-.BR accept (2),
-.BR connect (2),
-.BR recv (2),
-.BR recvfrom (2),
-.BR recvmsg (2),
-.BR send (2),
-.BR sendto (2),
-.BR sendmsg (2).
+ソケットインターフェイス: \fBaccept\fP(2), \fBconnect\fP(2), \fBrecv\fP(2), \fBrecvfrom\fP(2),
+\fBrecvmsg\fP(2), \fBsend\fP(2), \fBsendto\fP(2), \fBsendmsg\fP(2).
 但し、ソケットにタイムアウトが設定されていない場合 (下記参照)。
 .IP *
-.\"O File locking interfaces:
-ファイルロック用インターフェイス:
-.\"O .BR flock (2)
-.\"O and
-.\"O .BR fcntl (2)
-.\"O .BR F_SETLKW .
-.BR flock (2),
-.BR fcntl (2)
-.BR F_SETLKW .
+ファイルロック用インターフェイス: \fBflock\fP(2), \fBfcntl\fP(2)  \fBF_SETLKW\fP.
 .IP *
-.\"O POSIX message queue interfaces:
-POSIX メッセージキューインターフェイス:
-.BR mq_receive (3),
-.BR mq_timedreceive (3),
-.BR mq_send (3),
-.\"O and
-.BR mq_timedsend (3).
+POSIX メッセージキューインターフェイス: \fBmq_receive\fP(3), \fBmq_timedreceive\fP(3),
+\fBmq_send\fP(3), \fBmq_timedsend\fP(3).
 .IP *
-.BR futex (2)
-.B FUTEX_WAIT
-.\"O (since Linux 2.6.22; beforehand, always failed with
-.\"O .BR EINTR ).
-(Linux 2.6.22 以降; それ以前は常に
-.B EINTR
-で失敗していた)。
+\fBfutex\fP(2)  \fBFUTEX_WAIT\fP (Linux 2.6.22 以降; それ以前は常に \fBEINTR\fP で失敗していた)。
 .IP *
-.\"O POSIX semaphore interfaces:
-POSIX セマフォインターフェイス:
-.\"O .BR sem_wait (3)
-.\"O and
-.\"O .BR sem_timedwait (3)
-.\"O (since Linux 2.6.22; beforehand, always failed with
-.\"O .BR EINTR ).
-.BR sem_wait (3),
-.BR sem_timedwait (3)
-(Linux 2.6.22 以降; それ以前は常に
-.B EINTR
-で失敗していた)。
+POSIX セマフォインターフェイス: \fBsem_wait\fP(3), \fBsem_timedwait\fP(3)  (Linux 2.6.22 以降;
+それ以前は常に \fBEINTR\fP で失敗していた)。
 .RE
 .PP
-.\"O The following interfaces are never restarted after
-.\"O being interrupted by a signal handler,
-.\"O regardless of the use of
-.\"O .BR SA_RESTART ;
-.\"O they always fail with the error
-.\"O .B EINTR
-.\"O when interrupted by a signal handler:
-.\"O .\" These are the system calls that give EINTR or ERESTARTNOHAND
-.\"O .\" on interruption by a signal handler.
-以下のインターフェイスは、
-.B SA_RESTART
-を使っているどうかに関わらず、シグナルハンドラにより割り込まれた後、
-再スタートすることは決してない。
-これらは、シグナルハンドラにより割り込まれると、常にエラー
-.B EINTR
-で失敗する。
-.\" これらは、シグナルハンドラによる割り込みの際に
-.\" EINTR か ERESTARTNOHAND を返すシステムコールである。
+.\" These are the system calls that give EINTR or ERESTARTNOHAND
+.\" on interruption by a signal handler.
+以下のインターフェイスは、 \fBSA_RESTART\fP を使っているどうかに関わらず、シグナルハンドラにより割り込まれた後、
+再スタートすることは決してない。 これらは、シグナルハンドラにより割り込まれると、常にエラー \fBEINTR\fP で失敗する。
 .RS 4
 .IP * 2
-.\"O Socket interfaces, when a timeout has been set on the socket using
-.\"O .BR setsockopt (2):
-.\"O .BR accept (2),
-.\"O .BR recv (2),
-.\"O .BR recvfrom (2),
-.\"O and
-.\"O .BR recvmsg (2),
-.\"O if a receive timeout
-.\"O .RB ( SO_RCVTIMEO )
-.\"O has been set;
-.\"O .BR connect (2),
-.\"O .BR send (2),
-.\"O .BR sendto (2),
-.\"O and
-.\"O .BR sendmsg (2),
-.\"O if a send timeout
-.\"O .RB ( SO_SNDTIMEO )
-.\"O has been set.
-.BR setsockopt (2)
-を使ってタイムアウトが設定されているソケットインターフェース:
-.BR accept (2),
-.BR recv (2),
-.BR recvfrom (2),
-.BR recvmsg (2)
-で受信タイムアウト
-.RB ( SO_RCVTIMEO )
-が設定されている場合と、
-.BR connect (2),
-.BR send (2),
-.BR sendto (2),
-.BR sendmsg (2)
-で送信タイムアウト
-.RB ( SO_SNDTIMEO )
-が設定されている場合。
+\fBsetsockopt\fP(2)  を使ってタイムアウトが設定されているソケットインターフェース: \fBaccept\fP(2), \fBrecv\fP(2),
+\fBrecvfrom\fP(2), \fBrecvmsg\fP(2)  で受信タイムアウト (\fBSO_RCVTIMEO\fP)  が設定されている場合と、
+\fBconnect\fP(2), \fBsend\fP(2), \fBsendto\fP(2), \fBsendmsg\fP(2)  で送信タイムアウト
+(\fBSO_SNDTIMEO\fP)  が設定されている場合。
 .IP *
-.\"O Interfaces used to wait for signals:
-シグナル待ちに使われるインターフェイス:
-.BR pause (2),
-.BR sigsuspend (2),
-.BR sigtimedwait (2),
-.\"O and
-.BR sigwaitinfo (2).
+シグナル待ちに使われるインターフェイス: \fBpause\fP(2), \fBsigsuspend\fP(2), \fBsigtimedwait\fP(2),
+\fBsigwaitinfo\fP(2).
 .IP *
-.\"O File descriptor multiplexing interfaces:
-ファイルディスクリプタ多重インターフェイス:
-.BR epoll_wait (2),
-.BR epoll_pwait (2),
-.BR poll (2),
-.BR ppoll (2),
-.BR select (2),
-.\"O and
-.BR pselect (2).
+ファイルディスクリプタ多重インターフェイス: \fBepoll_wait\fP(2), \fBepoll_pwait\fP(2), \fBpoll\fP(2),
+\fBppoll\fP(2), \fBselect\fP(2), \fBpselect\fP(2).
 .IP *
-.\"O System V IPC interfaces:
-System V IPC インターフェイス:
 .\" On some other systems, SA_RESTART does restart these system calls
-.BR msgrcv (2),
-.BR msgsnd (2),
-.BR semop (2),
-.\"O and
-.BR semtimedop (2).
+System V IPC インターフェイス: \fBmsgrcv\fP(2), \fBmsgsnd\fP(2), \fBsemop\fP(2),
+\fBsemtimedop\fP(2).
 .IP *
-.\"O Sleep interfaces:
-スリープ用のインターフェイス:
-.BR clock_nanosleep (2),
-.BR nanosleep (2),
-.\"O and
-.BR usleep (3).
+スリープ用のインターフェイス: \fBclock_nanosleep\fP(2), \fBnanosleep\fP(2), \fBusleep\fP(3).
 .IP *
-.\"O .BR read (2)
-.\"O from an
-.\"O .BR inotify (7)
-.\"O file descriptor.
-.BR inotify (7)
-ファイルディスクリプタからの
-.BR read (2).
+\fBinotify\fP(7)  ファイルディスクリプタからの \fBread\fP(2).
 .IP *
-.BR io_getevents (2).
+\fBio_getevents\fP(2).
 .RE
 .PP
-.\"O The
-.\"O .BR sleep (3)
-.\"O function is also never restarted if interrupted by a handler,
-.\"O but gives a success return: the number of seconds remaining to sleep.
-.BR sleep (3)
-関数も、ハンドラにより割り込まれた場合、決して再スタートされることはない。
-しかし、成功となり、残っている停止時間を返す。
-.\"O .SS Interruption of System Calls and Library Functions by Stop Signals
+\fBsleep\fP(3)  関数も、ハンドラにより割り込まれた場合、決して再スタートされることはない。 しかし、成功となり、残っている停止時間を返す。
 .SS 一時停止シグナルによるシステムコールやライブラリ関数への割り込み
-.\"O On Linux, even in the absence of signal handlers,
-.\"O certain blocking interfaces can fail with the error
-.\"O .BR EINTR
-.\"O after the process is stopped by one of the stop signals
-.\"O and then resumed via
-.\"O .BR SIGCONT .
-.\"O This behavior is not sanctioned by POSIX.1, and doesn't occur
-.\"O on other systems.
-Linux では、シグナルハンドラが設定されていない場合でも、
-いくつかのブロッキング型のインターフェイスは、
-プロセスが一時停止 (stop) シグナルの一つにより停止され、
-.B SIGCONT
-により再開された後に、エラー
-.B EINTR
-で失敗する可能性がある。
-この挙動は POSIX.1 で認められておらず、他のシステムでは起こらない。
+Linux では、シグナルハンドラが設定されていない場合でも、 いくつかのブロッキング型のインターフェイスは、 プロセスが一時停止 (stop)
+シグナルの一つにより停止され、 \fBSIGCONT\fP により再開された後に、エラー \fBEINTR\fP で失敗する可能性がある。 この挙動は
+POSIX.1 で認められておらず、他のシステムでは起こらない。
 
-.\"O The Linux interfaces that display this behavior are:
 この挙動を示す Linux のインターフェイスは以下の通りである。
 .RS 4
 .IP * 2
-.\"O Socket interfaces, when a timeout has been set on the socket using
-.\"O .BR setsockopt (2):
-.\"O .BR accept (2),
-.\"O .BR recv (2),
-.\"O .BR recvfrom (2),
-.\"O and
-.\"O .BR recvmsg (2),
-.\"O if a receive timeout
-.\"O .RB ( SO_RCVTIMEO )
-.\"O has been set;
-.\"O .BR connect (2),
-.\"O .BR send (2),
-.\"O .BR sendto (2),
-.\"O and
-.\"O .BR sendmsg (2),
-.\"O if a send timeout
-.\"O .RB ( SO_SNDTIMEO )
-.\"O has been set.
-.BR setsockopt (2)
-を使ってタイムアウトが設定されているソケットインターフェース:
-.BR accept (2),
-.BR recv (2),
-.BR recvfrom (2),
-.BR recvmsg (2)
-で受信タイムアウト
-.RB ( SO_RCVTIMEO )
-が設定されている場合と、
-.BR connect (2),
-.BR send (2),
-.BR sendto (2),
-.BR sendmsg (2)
-で送信タイムアウト
-.RB ( SO_SNDTIMEO )
-が設定されている場合。
+\fBsetsockopt\fP(2)  を使ってタイムアウトが設定されているソケットインターフェース: \fBaccept\fP(2), \fBrecv\fP(2),
+\fBrecvfrom\fP(2), \fBrecvmsg\fP(2)  で受信タイムアウト (\fBSO_RCVTIMEO\fP)  が設定されている場合と、
+\fBconnect\fP(2), \fBsend\fP(2), \fBsendto\fP(2), \fBsendmsg\fP(2)  で送信タイムアウト
+(\fBSO_SNDTIMEO\fP)  が設定されている場合。
 .IP * 2
-.BR epoll_wait (2),
-.BR epoll_pwait (2).
+\fBepoll_wait\fP(2), \fBepoll_pwait\fP(2).
 .IP *
-.BR semop (2),
-.BR semtimedop (2).
+\fBsemop\fP(2), \fBsemtimedop\fP(2).
 .IP *
-.BR sigtimedwait (2),
-.BR sigwaitinfo (2).
+\fBsigtimedwait\fP(2), \fBsigwaitinfo\fP(2).
 .IP *
-.\"O .BR read (2)
-.\"O from an
-.\"O .BR inotify (7)
-.\"O file descriptor.
-.BR inotify (7)
-ファイルディスクリプタからの
-.BR read (2).
+\fBinotify\fP(7)  ファイルディスクリプタからの \fBread\fP(2).
 .IP *
-.\"O Linux 2.6.21 and earlier:
-Linux 2.6.21 以前:
-.BR futex (2)
-.BR FUTEX_WAIT ,
-.BR sem_timedwait (3),
-.BR sem_wait (3).
+Linux 2.6.21 以前: \fBfutex\fP(2)  \fBFUTEX_WAIT\fP, \fBsem_timedwait\fP(3),
+\fBsem_wait\fP(3).
 .IP *
-.\"O Linux 2.6.8 and earlier:
-Linux 2.6.8 以前:
-.BR msgrcv (2),
-.BR msgsnd (2).
+Linux 2.6.8 以前: \fBmsgrcv\fP(2), \fBmsgsnd\fP(2).
 .IP *
-.\"O Linux 2.4 and earlier:
-Linux 2.4 以前:
-.BR nanosleep (2).
+Linux 2.4 以前: \fBnanosleep\fP(2).
 .RE
-.\"O .SH "CONFORMING TO"
 .SH 準拠
-.\"O POSIX.1, except as noted.
 POSIX.1 (注記した内容以外)。
-.\"O .SH BUGS
 .SH バグ
-.\"O .B SIGIO
-.\"O and
-.\"O .B SIGLOST
-.\"O have the same value.
-.\"O The latter is commented out in the kernel source, but
-.\"O the build process of some software still thinks that
-.\"O signal 29 is
-.\"O .BR SIGLOST .
-.B SIGIO
-と
-.B SIGLOST
-は同じ値を持っている。
-.B SIGLOST
-はカーネルのソースではコメントアウトされている。
-しかし、ソフトウェアによってはビルドの過程でシグナル 29 を
-.B SIGLOST
-とみなしてしまうものがある。
-.\"O .SH "SEE ALSO"
+\fBSIGIO\fP と \fBSIGLOST\fP は同じ値を持っている。 \fBSIGLOST\fP はカーネルのソースではコメントアウトされている。
+しかし、ソフトウェアによってはビルドの過程でシグナル 29 を \fBSIGLOST\fP とみなしてしまうものがある。
 .SH 関連項目
-.BR kill (1),
-.BR getrlimit (2),
-.BR kill (2),
-.BR killpg (2),
-.BR rt_sigqueueinfo (2),
-.BR setitimer (2),
-.BR setrlimit (2),
-.BR sgetmask (2),
-.BR sigaction (2),
-.BR sigaltstack (2),
-.BR signal (2),
-.BR signalfd (2),
-.BR sigpending (2),
-.BR sigprocmask (2),
-.BR sigsuspend (2),
-.BR sigwaitinfo (2),
-.BR abort (3),
-.BR bsd_signal (3),
-.BR longjmp (3),
-.BR raise (3),
-.BR pthread_sigqueue (3),
-.BR sigqueue (3),
-.BR sigset (3),
-.BR sigsetops (3),
-.BR sigvec (3),
-.BR sigwait (3),
-.BR strsignal (3),
-.BR sysv_signal (3),
-.BR core (5),
-.BR proc (5),
-.BR pthreads (7),
-.BR sigevent (7)
+\fBkill\fP(1), \fBgetrlimit\fP(2), \fBkill\fP(2), \fBkillpg\fP(2),
+\fBrt_sigqueueinfo\fP(2), \fBsetitimer\fP(2), \fBsetrlimit\fP(2), \fBsgetmask\fP(2),
+\fBsigaction\fP(2), \fBsigaltstack\fP(2), \fBsignal\fP(2), \fBsignalfd\fP(2),
+\fBsigpending\fP(2), \fBsigprocmask\fP(2), \fBsigsuspend\fP(2), \fBsigwaitinfo\fP(2),
+\fBabort\fP(3), \fBbsd_signal\fP(3), \fBlongjmp\fP(3), \fBraise\fP(3),
+\fBpthread_sigqueue\fP(3), \fBsigqueue\fP(3), \fBsigset\fP(3), \fBsigsetops\fP(3),
+\fBsigvec\fP(3), \fBsigwait\fP(3), \fBstrsignal\fP(3), \fBsysv_signal\fP(3), \fBcore\fP(5),
+\fBproc\fP(5), \fBpthreads\fP(7), \fBsigevent\fP(7)
index c3570bd..868cf39 100644 (file)
@@ -1,4 +1,4 @@
-'\" t
+.\" t
 .\" Don't change the first line, it tells man that we need tbl.
 .\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
 .\" and copyright (c) 1999 Matthew Wilcox.
 .\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
 .\"     Added notes on capability requirements
 .\"    A few small grammar fixes
+.\" 2010-06-13 Jan Engelhardt <jengelh@medozas.de>
+.\"    Documented SO_DOMAIN and SO_PROTOCOL.
 .\" FIXME
 .\" The following are not yet documented:
 .\"    SO_PEERNAME
 .\"    SO_TIMESTAMPNS
-.\"    SO_MARK
-.\"    SO_TIMESTAMPING
-.\"    SO_PROTOCOL (2.6.32)
-.\"    SO_DOMAIN (2.6.32)
+.\"    SO_MARK (see https://bugzilla.kernel.org/show_bug.cgi?id=16461)
+.\"    SO_TIMESTAMPING (2.6.30)
 .\"    SO_RXQ_OVFL (2.6.33)
 .\"
-.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
-.\" Translated 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated 2003-01-20, Akihiro Motoki <amotoki@dd.iij4u.or.jp>
-.\" Updated 2005-02-23, Akihiro MOTOKI
-.\" Updated 2005-10-05, Akihiro MOTOKI
-.\" Updated 2005-12-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.16
-.\" Updated 2005-12-26, Akihiro MOTOKI, Catch up to LDP man-pages 2.18
-.\" Updated 2006-04-15, Akihiro MOTOKI, Catch up to LDP man-pages 2.29
-.\" Updated 2007-01-05, Akihiro MOTOKI, Catch up to LDP man-pages 2.43
+.\"*******************************************************************
 .\"
-.\"WORD         protocol family         プロトコルファミリー
-.\"WORD         socket type             ソケットタイプ
-.\"WORD         file descriptor         ファイルディスクリプタ
-.\"WORD         anonymous socket        名前無しソケット
-.\"WORD         asynchronous            非同期 (的)
-.\"WORD         credential              信任状
-.\"WORD         capability              権限
-.\"WORD         ancillary data          補助データ
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH SOCKET 7 2008-12-03 Linux "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.TH SOCKET 7 2010\-06\-13 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O socket \- Linux socket interface
 socket \- Linux のソケットインターフェース
-.\"O .SH SYNOPSIS
 .SH 書式
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .sp
-.IB sockfd " = socket(int " socket_family ", int " socket_type ", int " protocol );
-.\"O .SH DESCRIPTION
+\fIsockfd\fP\fB = socket(int \fP\fIsocket_family\fP\fB, int \fP\fIsocket_type\fP\fB, int
+\fP\fIprotocol\fP\fB);\fP
 .SH 説明
-.\"O This manual page describes the Linux networking socket layer user
-.\"O interface.
-.\"O The BSD compatible sockets
-.\"O are the uniform interface
-.\"O between the user process and the network protocol stacks in the kernel.
-.\"O The protocol modules are grouped into
-.\"O .I protocol families
-.\"O like
-.\"O .BR AF_INET ", " AF_IPX ", " AF_PACKET
-.\"O and
-.\"O .I socket types
-.\"O like
-.\"O .B SOCK_STREAM
-.\"O or
-.\"O .BR SOCK_DGRAM .
-.\"O See
-.\"O .BR socket (2)
-.\"O for more information on families and types.
-このマニュアルページは Linux ネットワークのソケット層に対する
-ユーザインターフェースを記述するものである。
-BSD 互換ソケットは、ユーザプロセスとカーネル内部の
-ネットワークプロトコルスタック群との間に、
-統一的なインターフェースを提供するものである。
-プロトコルモジュールは
-.I "プロトコルファミリー (protocol familiy)"
-(例:
-.BR AF_INET ", " AF_IPX ", " AF_PACKET )
-と
-.I "ソケットタイプ (socket types)"
-(例:
-.BR SOCK_STREAM ", " SOCK_DGRAM )
-に分類できる。
-これらに関するより詳しい情報は
-.BR socket (2)
-を参照のこと。
-.\"O .SS Socket Layer Functions
+このマニュアルページは Linux ネットワークのソケット層に対する ユーザインターフェースを記述するものである。 BSD
+互換ソケットは、ユーザプロセスとカーネル内部の ネットワークプロトコルスタック群との間に、 統一的なインターフェースを提供するものである。
+プロトコルモジュールは \fIプロトコルファミリー (protocol familiy)\fP (例: \fBAF_INET\fP, \fBAF_IPX\fP,
+\fBAF_PACKET\fP)  と \fIソケットタイプ (socket types)\fP (例: \fBSOCK_STREAM\fP,
+\fBSOCK_DGRAM\fP)  に分類できる。 これらに関するより詳しい情報は \fBsocket\fP(2)  を参照のこと。
 .SS ソケット層の関数群
-.\"O These functions are used by the user process to send or receive packets
-.\"O and to do other socket operations.
-.\"O For more information see their respective manual pages.
-これらの関数はユーザプロセスがパケットを送受信したり、その他のソケット操作を
-行ったりするために用いられる。詳細はそれぞれのマニュアルページを
+これらの関数はユーザプロセスがパケットを送受信したり、その他のソケット操作を 行ったりするために用いられる。詳細はそれぞれのマニュアルページを
 見てほしい。
 
-.\"O .BR socket (2)
-.\"O creates a socket,
-.\"O .BR connect (2)
-.\"O connects a socket to a remote socket address,
-.\"O the
-.\"O .BR bind (2)
-.\"O function binds a socket to a local socket address,
-.\"O .BR listen (2)
-.\"O tells the socket that new connections shall be accepted, and
-.\"O .BR accept (2)
-.\"O is used to get a new socket with a new incoming connection.
-.\"O .BR socketpair (2)
-.\"O returns two connected anonymous sockets (only implemented for a few
-.\"O local families like
-.\"O .BR AF_UNIX )
-.BR socket (2)
-はソケットを生成する。
-.BR connect (2)
-はソケットをリモートのソケットアドレスに接続する。
-.BR bind (2)
-はソケットをローカルのソケットアドレスにバインドする。
-.BR listen (2)
-はソケットに新しい接続が来たら受信するように伝え、
-.BR accept (2)
-は外部からやってきた接続に対して新しいソケットを得るために用いられる。
-.BR socketpair (2)
-は互いに接続された二つの名前無しソケット (anonymous socket) を返す
-.RB ( AF_UNIX
+\fBsocket\fP(2)  はソケットを生成する。 \fBconnect\fP(2)  はソケットをリモートのソケットアドレスに接続する。
+\fBbind\fP(2)  はソケットをローカルのソケットアドレスにバインドする。 \fBlisten\fP(2)
+はソケットに新しい接続が来たら受信するように伝え、 \fBaccept\fP(2)  は外部からやってきた接続に対して新しいソケットを得るために用いられる。
+\fBsocketpair\fP(2)  は互いに接続された二つの名前無しソケット (anonymous socket) を返す (\fBAF_UNIX\fP
 のような、いくつかのローカルなファミリーでしか実装されていない)。
 .PP
-.\"O .BR send (2),
-.\"O .BR sendto (2),
-.\"O and
-.\"O .BR sendmsg (2)
-.\"O send data over a socket, and
-.\"O .BR recv (2),
-.\"O .BR recvfrom (2),
-.\"O .BR recvmsg (2)
-.\"O receive data from a socket.
-.\"O .BR poll (2)
-.\"O and
-.\"O .BR select (2)
-.\"O wait for arriving data or a readiness to send data.
-.\"O In addition, the standard I/O operations like
-.\"O .BR write (2),
-.\"O .BR writev (2),
-.\"O .BR sendfile (2),
-.\"O .BR read (2),
-.\"O and
-.\"O .BR readv (2)
-.\"O can be used to read and write data.
-.BR send (2),
-.BR sendto (2),
-.BR sendmsg (2)
-はソケットを通してデータを送信し、
-.BR recv (2)
-.BR recvfrom (2),
-.BR recvmsg (2)
-はソケットからデータを受信する。
-.BR poll (2)
-と
-.BR select (2)
-はデータの到着を待ったり、データ送信の準備ができるまで待ったりする。
-さらに、
-.BR write (2),
-.BR writev (2),
-.BR sendfile (2),
-.BR read (2),
-.BR readv (2)
-のような標準的な I/O 操作もデータの読み書きに用いることができる。
+\fBsend\fP(2), \fBsendto\fP(2), \fBsendmsg\fP(2)  はソケットを通してデータを送信し、 \fBrecv\fP(2)
+\fBrecvfrom\fP(2), \fBrecvmsg\fP(2)  はソケットからデータを受信する。 \fBpoll\fP(2)  と \fBselect\fP(2)
+はデータの到着を待ったり、データ送信の準備ができるまで待ったりする。 さらに、 \fBwrite\fP(2), \fBwritev\fP(2),
+\fBsendfile\fP(2), \fBread\fP(2), \fBreadv\fP(2)  のような標準的な I/O 操作もデータの読み書きに用いることができる。
 .PP
-.\"O .BR getsockname (2)
-.\"O returns the local socket address and
-.\"O .BR getpeername (2)
-.\"O returns the remote socket address.
-.\"O .BR getsockopt (2)
-.\"O and
-.\"O .BR setsockopt (2)
-.\"O are used to set or get socket layer or protocol options.
-.\"O .BR ioctl (2)
-.\"O can be used to set or read some other options.
-.BR getsockbyname (2)
-はローカルのソケットアドレスを返し、
-.BR getpeername (2)
-はリモートのソケットアドレスを返す。
-.BR getsockopt (2)
-と
-.BR setsockopt (2)
-はソケット層のオプションやプロトコルオプションの取得・設定に用いられる。
-他のいくつかのオプションの取得・設定には
-.BR ioctl (2)
+\fBgetsockbyname\fP(2)  はローカルのソケットアドレスを返し、 \fBgetpeername\fP(2)
+はリモートのソケットアドレスを返す。 \fBgetsockopt\fP(2)  と \fBsetsockopt\fP(2)
+はソケット層のオプションやプロトコルオプションの取得・設定に用いられる。 他のいくつかのオプションの取得・設定には \fBioctl\fP(2)
 を使うことができる。
 .PP
-.\"O .BR close (2)
-.\"O is used to close a socket.
-.\"O .BR shutdown (2)
-.\"O closes parts of a full-duplex socket connection.
-.BR close (2)
-はソケットをクローズする。
-.BR shutdown (2)
-は全二重なソケット接続を部分的にクローズする。
+\fBclose\fP(2)  はソケットをクローズする。 \fBshutdown\fP(2)  は全二重なソケット接続を部分的にクローズする。
 .PP
-.\"O Seeking, or calling
-.\"O .BR pread (2)
-.\"O or
-.\"O .BR pwrite (2)
-.\"O with a nonzero position is not supported on sockets.
-シーク動作や、 0 以外の位置に対する
-.BR pread (2)
-や
-.BR pwrite (2)
-はソケットではサポートされていない。
+シーク動作や、 0 以外の位置に対する \fBpread\fP(2)  や \fBpwrite\fP(2)  はソケットではサポートされていない。
 .PP
-.\"O It is possible to do nonblocking I/O on sockets by setting the
-.\"O .B O_NONBLOCK
-.\"O flag on a socket file descriptor using
-.\"O .BR fcntl (2).
-.\"O Then all operations that would block will (usually)
-.\"O return with
-.\"O .B EAGAIN
-.\"O (operation should be retried later);
-非ブロッキングな I/O をソケットで行うことは可能で、
-.BR fcntl (2)
-を使ってソケットのファイルディスクリプタに
-.B O_NONBLOCK
-フラグをセットすれば良い。
-こうするとブロックされる操作は、 (通常)
-.B EAGAIN
-エラーで戻ることになる
-(後で処理が再試行されることが期待されている)。
-.\"O .BR connect (2)
-.\"O will return
-.\"O .B EINPROGRESS
-.\"O error.
-.BR connect (2)
-では
-.B EINPROGRESS
-エラーが返される。
-.\"O The user can then wait for various events via
-.\"O .BR poll (2)
-.\"O or
-.\"O .BR select (2).
-この場合、ユーザはさまざまなイベントを
-.BR poll (2)
-や
-.BR select (2)
-を使って待つことができる。
+非ブロッキングな I/O をソケットで行うことは可能で、 \fBfcntl\fP(2)  を使ってソケットのファイルディスクリプタに
+\fBO_NONBLOCK\fP フラグをセットすれば良い。 こうするとブロックされる操作は、 (通常)  \fBEAGAIN\fP エラーで戻ることになる
+(後で処理が再試行されることが期待されている)。 \fBconnect\fP(2)  では \fBEINPROGRESS\fP エラーが返される。
+この場合、ユーザはさまざまなイベントを \fBpoll\fP(2)  や \fBselect\fP(2)  を使って待つことができる。
 .TS
 tab(:) allbox;
 c s s
 l l l.
-.\"O I/O events
 I/O イベント
-.\"O Event:Poll flag:Occurrence
 イベント:poll フラグ:内容
-.\"O Read:POLLIN:T{
-.\"O New data arrived.
-.\"O T}
 Read:POLLIN:T{
 新しいデータが到着した。
 T}
-.\"O Read:POLLIN:T{
-.\"O A connection setup has been completed
-.\"O (for connection-oriented sockets)
-.\"O T}
 Read:POLLIN:T{
 (接続志向のソケットで)
 接続の設定が終了した。
 T}
-.\"O Read:POLLHUP:T{
-.\"O A disconnection request has been initiated by the other end.
-.\"O T}
 Read:POLLHUP:T{
 接続先で切断要求が生成された。
 T}
-.\"O Read:POLLHUP:T{
-.\"O A connection is broken (only for connection-oriented protocols).
-.\"O When the socket is written
-.\"O .B SIGPIPE
-.\"O is also sent.
-.\"O T}
 Read:POLLHUP:T{
 接続が壊れた (接続志向のプロトコルのみ)。
 この場合、ソケットに書き込みが行われると
-.B SIGPIPE
+\fBSIGPIPE\fP
 も送信される。
 T}
-.\"O Write:POLLOUT:T{
-.\"O Socket has enough send buffer space for writing new data.
-.\"O T}
 Write:POLLOUT:T{
-ソケットには新しいデータを書き込むのに
-充分なバッファ領域がある。
+ソケットには新しいデータを書き込むのに充分なバッファ領域がある。
 T}
-.\"O Read/Write:T{
-.\"O POLLIN|
-.\"O .br
-.\"O POLLOUT
-.\"O T}:T{
-.\"O An outgoing
-.\"O .BR connect (2)
-.\"O finished.
-.\"O T}
 Read/Write:T{
 POLLIN|
 .br
 POLLOUT
 T}:T{
 外部向けの
-.BR connect (2)
+\fBconnect\fP(2)
 が終了した。
 T}
-.\"O Read/Write:POLLERR:An asynchronous error occurred.
-Read/Write:POLLERR:T{
-非同期的 (asynchronous) なエラーが起こった。
-T}
-.\"O Read/Write:POLLHUP:The other end has shut down one direction.
+Read/Write:POLLERR:非同期的 (asynchronous) なエラーが起こった。
 Read/Write:POLLHUP:接続先が片方向を切断した。
-.\"O Exception:POLLPRI:T{
-.\"O Urgent data arrived.
-.\"O .B SIGURG
-.\"O is sent then.
-.\"O T}
 Exception:POLLPRI:T{
-緊急データ (urgent data) が到着した。
-この場合は
-.B SIGURG
+緊急データ (urgent data) が到着した。この場合は
+\fBSIGURG\fP
 が送信される。
 T}
 .\" FIXME . The following is not true currently:
@@ -336,208 +120,69 @@ T}
 .TE
 
 .PP
-.\"O An alternative to
-.\"O .BR poll (2)
-.\"O and
-.\"O .BR select (2)
-.\"O is to let the kernel inform the application about events
-.\"O via a
-.\"O .B SIGIO
-.\"O signal.
-.\"O For that the
-.\"O .B O_ASYNC
-.\"O flag must be set on a socket file descriptor via
-.\"O .BR fcntl (2)
-.\"O and a valid signal handler for
-.\"O .B SIGIO
-.\"O must be installed via
-.\"O .BR sigaction (2).
-.\"O See the
-.\"O .I Signals
-.\"O discussion below.
-.BR poll (2)
-や
-.BR select (2)
-を使う代わりに、カーネルからアプリケーションに
-イベントを通知させるのに
-.B SIGIO
-シグナルを使う方法もある。
-この方法を使うには、
-.BR fcntl (2)
-を用いてソケットのファイルディスクリプタに
-.B O_ASYNC
-フラグをセットし、
-.B SIGIO
-に対する有効なシグナルハンドラを
-.BR sigaction (2)
-によって設定しておく必要がある。
-後述の
-.I シグナル
-に関する議論も参考にすること。
-.\"O .SS Socket Options
+\fBpoll\fP(2)  や \fBselect\fP(2)  を使う代わりに、カーネルからアプリケーションに イベントを通知させるのに \fBSIGIO\fP
+シグナルを使う方法もある。 この方法を使うには、 \fBfcntl\fP(2)  を用いてソケットのファイルディスクリプタに \fBO_ASYNC\fP
+フラグをセットし、 \fBSIGIO\fP に対する有効なシグナルハンドラを \fBsigaction\fP(2)  によって設定しておく必要がある。 後述の
+\fIシグナル\fP に関する議論も参考にすること。
 .SS ソケットオプション
-.\"O These socket options can be set by using
-.\"O .BR setsockopt (2)
-.\"O and read with
-.\"O .BR getsockopt (2)
-.\"O with the socket level set to
-.\"O .B SOL_SOCKET
-.\"O for all sockets:
-これらのソケットオプションは、
-.BR setsockopt (2)
-を用いれば設定でき、
-.BR getsockopt (2)
-を用いれば取得できる。
-但し、どのソケットの場合も
-ソケットレベルには
-.B SOL_SOCKET
-を指定すること。
-.\"O .\" SO_ACCEPTCONN is in POSIX.1-2001, and its origin is explained in
-.\"O .\" W R Stevens, UNPv1
-.\" SO_ACCEPTCONN は POSIX.1-2001 で定義されており、元は
-.\" W R Stevens の UNPv1 に書かれていた。
-.TP
-.B SO_ACCEPTCONN
-.\"O Returns a value indicating whether or not this socket has been marked
-.\"O to accept connections with
-.\"O .BR listen (2).
-.\"O The value 0 indicates that this is not a listening socket,
-.\"O the value 1 indicates that this is a listening socket.
-.\"O Can only be read
-.\"O with
-.\"O .BR getsockopt (2).
-このソケットが
-.BR listen (2)
-によって接続待ち受け状態に設定されているかどうかを示す値を返す。
-値 0 は listen 状態のソケットでないことを、
-値 1 は listen 状態のソケットであることを示す。
-.BR getsockopt (2)
-からのみ読み出し可能である。
-.TP
-.B SO_BINDTODEVICE
-.\"O Bind this socket to a particular device like \(lqeth0\(rq,
-.\"O as specified in the passed interface name.
-.\"O If the
-.\"O name is an empty string or the option length is zero, the socket device
-.\"O binding is removed.
-.\"O The passed option is a variable-length null-terminated
-.\"O interface name string with the maximum size of
-.\"O .BR IFNAMSIZ .
+.\" FIXME
+.\" In the list below, the text used to describe argument types
+.\" for each socket option should be more consistent
+.\"
+.\" SO_ACCEPTCONN is in POSIX.1-2001, and its origin is explained in
+.\" W R Stevens, UNPv1
+これらのソケットオプションは、 \fBsetsockopt\fP(2)  を用いれば設定でき、 \fBgetsockopt\fP(2)  を用いれば取得できる。
+但し、どのソケットの場合も ソケットレベルには \fBSOL_SOCKET\fP を指定すること。
+.TP 
+\fBSO_ACCEPTCONN\fP
+このソケットが \fBlisten\fP(2)  によって接続待ち受け状態に設定されているかどうかを示す値を返す。 値 0 は listen
+状態のソケットでないことを、 値 1 は listen 状態のソケットであることを示す。このソケットオプションは読み込み専用である。
+.TP 
+\fBSO_BINDTODEVICE\fP
 このソケットを、引き数で渡したインターフェース名で指定される
 (\(lqeth0\(rq のような) 特定のデバイスにバインドする。
 名前が空文字列だったり、オプションの長さ (optlen) が 0 の場合には、
 ソケットのバインドが削除される。渡すオプションは、インターフェース名が
 入ったヌル文字で終端された可変長の文字列である。
-文字列の最大のサイズは
-.B IFNAMSIX
-である。
-.\"O If a socket is bound to an interface,
-.\"O only packets received from that particular interface are processed by the
-.\"O socket.
-.\"O Note that this only works for some socket types, particularly
-.\"O .B AF_INET
-.\"O sockets.
-.\"O It is not supported for packet sockets (use normal
-.\"O .BR bind (8)
-.\"O there).
-ソケットがインターフェースにバインドされると、
-その特定のインターフェースから受信されたパケットだけを処理する。
-このオプションはいくつかのソケットタイプ、特に
-.B AF_INET
-に対してのみ動作する点に注意すること。
-パケットソケットではサポートされていない (通常の
-.BR bind (8)
-を使うこと)。
-.TP
-.B SO_BROADCAST
-.\"O Set or get the broadcast flag.
-.\"O When enabled, datagram sockets
-.\"O receive packets sent to a broadcast address and they are allowed to send
-.\"O packets to a broadcast address.
-.\"O This option has no effect on stream-oriented sockets.
-ブロードキャストフラグを設定・取得する。有効になっていると、
-データグラムソケットはブロードキャストアドレスに送られたパケットを受信したり、
-ブロードキャストアドレスにパケットを送信したりできるようになる。
-ストリーム指向のソケットには何の効果もない。
-.TP
-.B SO_BSDCOMPAT
-.\"O Enable BSD bug-to-bug compatibility.
-.\"O This is used by the UDP protocol module in Linux 2.0 and 2.2.
-.\"O If enabled ICMP errors received for a UDP socket will not be passed
-.\"O to the user program.
-.\"O In later kernel versions, support for this option has been phased out:
-.\"O Linux 2.4 silently ignores it, and Linux 2.6 generates a kernel warning
-.\"O (printk()) if a program uses this option.
-.\"O Linux 2.0 also enabled BSD bug-to-bug compatibility
-.\"O options (random header changing, skipping of the broadcast flag) for raw
-.\"O sockets with this option, but that was removed in Linux 2.2.
-BSD のバグに対して互換性を取るための機能を有効にする。
-この機能は Linux 2.0 と 2.2 の UDP プロトコルモジュールで使用されている。
-有効になっていると、 UDP ソケットで受信された ICMP エラーは
-ユーザプログラムに渡されない。
-これ以降のバージョンのカーネルでは、このオプションのサポートは
-段階的に廃止されてきた。
-Linux 2.4 ではこのオプションは黙って無視され、
-Linux 2.6 ではプログラムがこのオプションを使用すると (printk() を使って)
-カーネルの警告メッセージが出力される。
-Linux 2.0 では、このオプションを指定すると、
-raw ソケットにおいても BSD のバグ (ランダムヘッダ変更、
-ブロードキャストフラグのスキップ)
-に対する互換機能が有効になっていた。
-しかし、こちらは Linux 2.2 で削除された。
-.TP
-.B SO_DEBUG
-.\"O Enable socket debugging.
-.\"O Only allowed for processes with the
-.\"O .B CAP_NET_ADMIN
-.\"O capability or an effective user ID of 0.
-ソケットのデバッグ機能を有効にする。
-.B CAP_NET_ADMIN
-権限を持つプロセスか、実効ユーザ ID が 0 のプロセスでしか
-利用できない。
-.TP
-.B SO_ERROR
-.\"O Get and clear the pending socket error.
-.\"O Only valid as a
-.\"O .BR getsockopt (2).
-.\"O Expects an integer.
+文字列の最大のサイズは \fBIFNAMSIX\fP である。
+ソケットがインターフェースにバインドされると、その特定のインターフェース
+から受信されたパケットだけを処理する。
+このオプションはいくつかのソケットタイプ、
+特に \fBAF_INET\fP に対してのみ動作する点に注意すること。
+パケットソケットではサポートされていない (通常の \fBbind\fP(2) を使うこと)。
+.TP 
+\fBSO_BROADCAST\fP
+ブロードキャストフラグを設定・取得する。有効になっていると、 データグラムソケットはブロードキャストアドレスに送られたパケットを受信したり、
+ブロードキャストアドレスにパケットを送信したりできるようになる。 ストリーム指向のソケットには何の効果もない。
+.TP 
+\fBSO_BSDCOMPAT\fP
+BSD のバグに対して互換性を取るための機能を有効にする。 この機能は Linux 2.0 と 2.2 の UDP
+プロトコルモジュールで使用されている。 有効になっていると、 UDP ソケットで受信された ICMP エラーは ユーザプログラムに渡されない。
+これ以降のバージョンのカーネルでは、このオプションのサポートは 段階的に廃止されてきた。 Linux 2.4 ではこのオプションは黙って無視され、
+Linux 2.6 ではプログラムがこのオプションを使用すると (printk() を使って)  カーネルの警告メッセージが出力される。 Linux
+2.0 では、このオプションを指定すると、 raw ソケットにおいても BSD のバグ (ランダムヘッダ変更、 ブロードキャストフラグのスキップ)
+に対する互換機能が有効になっていた。 しかし、こちらは Linux 2.2 で削除された。
+.TP 
+\fBSO_DEBUG\fP
+ソケットのデバッグ機能を有効にする。 \fBCAP_NET_ADMIN\fP 権限を持つプロセスか、実効ユーザ ID が 0 のプロセスでしか 利用できない。
+.TP 
+\fBSO_DOMAIN\fP (Linux 2.6.32 以降)
+ソケットドメインを整数で取得する。 \fBAF_INET6\fP のような値が返される。
+詳細は \fBsocket\fP(2) を参照。このソケットオプションは読み込み専用である。
+.TP 
+\fBSO_ERROR\fP
 保留になっていたソケットエラーを取得してクリアする。
-.BR getsockopt (2)
-でのみ用いることができる。
-整数値をとる。
-.TP
-.B SO_DONTROUTE
-.\"O Don't send via a gateway, only send to directly connected hosts.
-.\"O The same effect can be achieved by setting the
-.\"O .B MSG_DONTROUTE
-.\"O flag on a socket
-.\"O .BR send (2)
-.\"O operation.
-.\"O Expects an integer boolean flag.
-ゲートウェイを経由せず、直接接続されているホストに送信する。
-.BR send (2)
-操作で
-.B MSG_DONTROUTE
-フラグをセットした場合も同じ効果が得られる。
-ブール整数のフラグを取る。
-.TP
-.B SO_KEEPALIVE
-.\"O Enable sending of keep-alive messages on connection-oriented sockets.
-.\"O Expects an integer boolean flag.
-接続志向のソケットに対する keep-alive メッセージの送信を有効にする。
-ブール値の整数フラグをとる。
-.TP
-.B SO_LINGER
-.\"O Sets or gets the
-.\"O .B SO_LINGER
-.\"O option.
-.\"O The argument is a
-.\"O .I linger
-.\"O structure.
-.B SO_LINGER
-オプションを取得・設定する。引き数には
-.I linger
-構造体を取る。
+このソケットオプションは読み込み専用である。整数値をとる。
+.TP 
+\fBSO_DONTROUTE\fP
+ゲートウェイを経由せず、直接接続されているホストに送信する。 \fBsend\fP(2)  操作で \fBMSG_DONTROUTE\fP
+フラグをセットした場合も同じ効果が得られる。 ブール整数のフラグを取る。
+.TP 
+\fBSO_KEEPALIVE\fP
+接続志向のソケットに対する keep\-alive メッセージの送信を有効にする。 ブール値の整数フラグをとる。
+.TP 
+\fBSO_LINGER\fP
+\fBSO_LINGER\fP オプションを取得・設定する。引き数には \fIlinger\fP 構造体を取る。
 .sp
 .in +4n
 .nf
@@ -548,801 +193,201 @@ struct linger {
 .fi
 .in
 .IP
-.\"O When enabled, a
-.\"O .BR close (2)
-.\"O or
-.\"O .BR shutdown (2)
-.\"O will not return until all queued messages for the socket have been
-.\"O successfully sent or the linger timeout has been reached.
-.\"O Otherwise,
-.\"O the call returns immediately and the closing is done in the background.
-.\"O When the socket is closed as part of
-.\"O .BR exit (2),
-.\"O it always lingers in the background.
-有効になっていると、
-.BR close (2)
-や
-.BR shutdown (2)
-は、そのソケットにキューイングされたメッセージがすべて送信完了するか、
-linger (居残り) タイムアウトになるまで返らない。無効になっていると、
-これらのコールはただちに戻り、クローズ動作はバックグラウンドで行われる。
-ソケットのクローズを
-.BR exit (2)
-の一部として行った場合には、残っているソケットの
-クローズ動作は必ずバックグラウンドに送られる。
-.TP
-.B SO_OOBINLINE
-.\"O If this option is enabled,
-.\"O out-of-band data is directly placed into the receive data stream.
-.\"O Otherwise out-of-band data is only passed when the
-.\"O .B MSG_OOB
-.\"O flag is set during receiving.
-このオプションを有効にすると、帯域外データ (out-of-band data) は
-受信データストリーム中に置かれる。有効にしなければ、
-帯域外データは受信時に
-.B MSG_OOB
-フラグがセットされている場合に限って渡される。
-.\"O .\" don't document it because it can do too much harm.
-.\"O .\".B SO_NO_CHECK
-.\" あまりに危険なことができるので、このオプションについては記載しないこと。
+有効になっていると、 \fBclose\fP(2)  や \fBshutdown\fP(2)
+は、そのソケットにキューイングされたメッセージがすべて送信完了するか、 linger (居残り) タイムアウトになるまで返らない。無効になっていると、
+これらのコールはただちに戻り、クローズ動作はバックグラウンドで行われる。 ソケットのクローズを \fBexit\fP(2)
+の一部として行った場合には、残っているソケットの クローズ動作は必ずバックグラウンドに送られる。
+.TP 
+\fBSO_OOBINLINE\fP
+.\" don't document it because it can do too much harm.
 .\".B SO_NO_CHECK
-.TP
-.B SO_PASSCRED
-.\"O Enable or disable the receiving of the
-.\"O .B SCM_CREDENTIALS
-.\"O control message.
-.\"O For more information see
-.\"O .BR unix (7).
-.B SCM_CREDENTIALS
-制御メッセージの受信を有効/無効にする。詳細は
-.BR unix (7)
-を参照のこと。
+このオプションを有効にすると、帯域外データ (out\-of\-band data) は 受信データストリーム中に置かれる。有効にしなければ、
+帯域外データは受信時に \fBMSG_OOB\fP フラグがセットされている場合に限って渡される。
+.TP 
+\fBSO_PASSCRED\fP
 .\" FIXME Document SO_PASSSEC, added in 2.6.18; there is some info
 .\" in the 2.6.18 ChangeLog
-.TP
-.B SO_PEERCRED
-.\"O Return the credentials of the foreign process connected to this socket.
-.\"O This is only possible for connected
-.\"O .B AF_UNIX
-.\"O stream sockets and
-.\"O .B AF_UNIX
-.\"O stream and datagram socket pairs created using
-.\"O .BR socketpair (2);
-.\"O see
-.\"O .BR unix (7).
+\fBSCM_CREDENTIALS\fP 制御メッセージの受信を有効/無効にする。詳細は \fBunix\fP(7)  を参照のこと。
+.TP 
+\fBSO_PEERCRED\fP
 このソケットに接続してきた外部プロセスの信任状 (credential) を返す。
-このソケットオプションが利用できるのは、
-接続された
-.B AF_UNIX
-ストリームソケット間、および
-.BR socketpair (2)
-を使って作成された
-.B AF_UNIX
-のストリームソケットとデータグラムソケットのペアだけである。
-.BR unix (7)
-を参照のこと。
-.\"O The returned credentials are those that were in effect at the time
-.\"O of the call to
-.\"O .BR connect (2)
-.\"O or
-.\"O .BR socketpair (2).
-.\"O Argument is a
-.\"O .I ucred
-.\"O structure.
-.\"O Only valid as a
-.\"O .BR getsockopt (2).
-.BR connect (2)
-や
-.BR socketpair (2)
-が呼ばれた時に有効であった信任状が返される。
-引き数は
-.I ucred
-構造体である。
-.BR getsockopt (2)
-でのみ用いることができる。
-.TP
-.B SO_PRIORITY
-.\"O Set the protocol-defined priority for all packets to be sent on
-.\"O this socket.
-.\"O Linux uses this value to order the networking queues:
-.\"O packets with a higher priority may be processed first depending
-.\"O on the selected device queueing discipline.
-.\"O For
-.\"O .BR ip (7),
-.\"O this also sets the IP type-of-service (TOS) field for outgoing packets.
-.\"O Setting a priority outside the range 0 to 6 requires the
-.\"O .B CAP_NET_ADMIN
-.\"O capability.
-プロトコルで定義された優先度を、このソケットから
-送信される全てのパケットにセットする。 Linux はネットワークキュー内部の
-整列にこの値を用いる。高い優先度を持っているパケットは先に処理される。
-ただしそのデバイスのキュー処理のやり方に依存する。
-.BR ip (7)
-では、外向けパケットの IP type-of-service (TOS) フィールドにもこの値が設定される。
-0 から 6 以外の優先度をセットするには
-.B CAP_NET_ADMIN
-ケーパビリティが必要である。
-.TP
-.B SO_RCVBUF
-.\"O Sets or gets the maximum socket receive buffer in bytes.
-.\"O The kernel doubles this value (to allow space for bookkeeping overhead)
-.\"O when it is set using
-.\"O .\" Most (all?) other implementations do not do this -- MTK, Dec 05
-.\"O .BR setsockopt (2),
-.\"O and this doubled value is returned by
-.\"O .BR getsockopt (2).
-.\"O The default value is set by the
-.\"O .I /proc/sys/net/core/rmem_default
-.\"O file, and the maximum allowed value is set by the
-.\"O .I /proc/sys/net/core/rmem_max
-.\"O file.
-.\"O The minimum (doubled) value for this option is 256.
-ソケットの受信バッファの最大サイズを設定・取得する (バイト単位)。
-.BR setsockopt (2)
-を使って値が設定されたときに (管理オーバヘッド用の領域を確保するために)
-カーネルはこの値を 2倍し、
-.\" 他のほとんどの (全ての?) 実装ではこんなことは行っていない -- MTK, Dec 05
-.BR getsockopt (2)
-はこの 2倍された値を返す。
-デフォルトの値は
-.I /proc/sys/net/core/rmem_default
-ファイルで設定され、許容される最大の値は
-.I /proc/sys/net/core/rmem_max
-ファイルで設定される。
-このオプションの最小値は (2倍した値で) 256 である。
-.TP
-.\"O .BR SO_RCVBUFFORCE " (since Linux 2.6.14)"
-.BR SO_RCVBUFFORCE " (Linux 2.6.14 以降)"
-.\"O Using this socket option, a privileged
-.\"O .RB ( CAP_NET_ADMIN )
-.\"O process can perform the same task as
-.\"O .BR SO_RCVBUF ,
-.\"O but the
-.\"O .I rmem_max
-.\"O limit can be overridden.
-このソケットオプションを使うと、特権プロセス
-.RB ( CAP_NET_ADMIN
-を持つプロセス) は
-.B SO_RCVBUF
-と同じことを実行できる。
-ただし、上限
-.I rmem_max
-を上書きすることができる。
-.TP
-.\"O .BR SO_RCVLOWAT " and " SO_SNDLOWAT
-.BR SO_RCVLOWAT " と " SO_SNDLOWAT
-.\"O Specify the minimum number of bytes in the buffer until the socket layer
-.\"O will pass the data to the protocol
-.\"O .RB ( SO_SNDLOWAT )
-.\"O or the user on receiving
-.\"O .RB ( SO_RCVLOWAT ).
-.\"O These two values are initialized to 1.
-.\"O .B SO_SNDLOWAT
-.\"O is not changeable on Linux
-.\"O .RB ( setsockopt (2)
-.\"O fails with the error
-.\"O .BR ENOPROTOOPT ).
-.\"O .B SO_RCVLOWAT
-.\"O is changeable
-.\"O only since Linux 2.4.
-バッファ中に溜めることのできるデータの最小値を指定する。
-このサイズを越えると、ソケット層はそのデータをプロトコルに渡し
-.RB ( SO_SNDLOWAT )、
-受信時にはユーザに渡す
-.RB ( SO_RCVLOWAT )。
-これら二つの値は 1 に初期化される。
-.B SO_SNDLOWAT
-は Linux では変更できない
-.RB ( setsockopt (2)
-は
-.B ENOPROTOOPT
-エラーで失敗する)。
-.B SO_RCVLOWAT
-は Linux 2.4 以降でのみ変更可能である。
-.\"O The
-.\"O .BR select (2)
-.\"O and
-.\"O .BR poll (2)
-.\"O system calls currently do not respect the
-.\"O .B SO_RCVLOWAT
-.\"O setting on Linux,
-.\"O and mark a socket readable when even a single byte of data is available.
-.\"O A subsequent read from the socket will block until
-.\"O .B SO_RCVLOWAT
-.\"O bytes are available.
-.\"O .\" See http://marc.theaimsgroup.com/?l=linux-kernel&m=111049368106984&w=2
-.\"O .\" Tested on kernel 2.6.14 -- mtk, 30 Nov 05
-現状、Linux ではシステムコール
-.BR select (2)
-と
-.BR poll (2)
-は
-.B SO_RCVLOWAT
-の設定を考慮に入れずに動作し、
-データが1バイト利用可能になっただけでも、
-ソケットは読み出し可能とのマークをつける。
-一方、それに続けて行うソケットからの read は
-.B SO_RCVLOWAT
-バイトのデータが利用可能になるまで停止してしまう。
+このソケットオプションが利用できるのは、接続された \fBAF_UNIX\fP ストリームソケット間、
+および \fBsocketpair\fP(2) を使って作成された \fBAF_UNIX\fP のストリームソケットと
+データグラムソケットのペアだけである。
+\fBunix\fP(7)  を参照のこと。
+\fBconnect\fP(2) や \fBsocketpair\fP(2) が呼ばれた時に有効であった信任状が返される。
+引き数は \fIucred\fP 構造体である。
+このソケットオプションは読み込み専用である。
+.TP 
+\fBSO_PRIORITY\fP
+プロトコルで定義された優先度を、このソケットから 送信される全てのパケットにセットする。 Linux はネットワークキュー内部の
+整列にこの値を用いる。高い優先度を持っているパケットは先に処理される。 ただしそのデバイスのキュー処理のやり方に依存する。 \fBip\fP(7)
+では、外向けパケットの IP type\-of\-service (TOS) フィールドにもこの値が設定される。 0 から 6 以外の優先度をセットするには
+\fBCAP_NET_ADMIN\fP ケーパビリティが必要である。
+.TP 
+\fBSO_PROTOCOL\fP (Linux 2.6.32 以降)
+ソケットのプロトコルを整数で取得する。 \fBIPPROTO_SCTP\fP のような値が返される。
+詳細は \fBsocket\fP(2) を参照。このソケットオプションは読み込み専用である。
+.TP 
+\fBSO_RCVBUF\fP
+.\" Most (all?) other implementations do not do this -- MTK, Dec 05
+ソケットの受信バッファの最大サイズを設定・取得する (バイト単位)。 \fBsetsockopt\fP(2)  を使って値が設定されたときに
+(管理オーバヘッド用の領域を確保するために)  カーネルはこの値を 2倍し、 \fBgetsockopt\fP(2)  はこの 2倍された値を返す。
+デフォルトの値は \fI/proc/sys/net/core/rmem_default\fP ファイルで設定され、許容される最大の値は
+\fI/proc/sys/net/core/rmem_max\fP ファイルで設定される。 このオプションの最小値は (2倍した値で) 256 である。
+.TP 
+\fBSO_RCVBUFFORCE\fP (Linux 2.6.14 以降)
+このソケットオプションを使うと、特権プロセス (\fBCAP_NET_ADMIN\fP を持つプロセス) は \fBSO_RCVBUF\fP
+と同じことを実行できる。 ただし、上限 \fIrmem_max\fP を上書きすることができる。
+.TP 
+\fBSO_RCVLOWAT\fP と \fBSO_SNDLOWAT\fP
 .\" See http://marc.theaimsgroup.com/?l=linux-kernel&m=111049368106984&w=2
 .\" Tested on kernel 2.6.14 -- mtk, 30 Nov 05
-.TP
-.\"O .BR SO_RCVTIMEO " and " SO_SNDTIMEO
-.BR SO_RCVTIMEO " と " SO_SNDTIMEO
-.\"O .\" Not implemented in 2.0.
-.\"O .\" Implemented in 2.1.11 for getsockopt: always return a zero struct.
-.\"O .\" Implemented in 2.3.41 for setsockopt, and actually used.
-.\" 2.0 では実装されていない。
-.\" getsockopt については 2.1.11 で実装された。常に 0 の構造体を返す。
-.\" setsockopt については 2.3.41 で実装され、実際に使われている。
-.\"O Specify the receiving or sending timeouts until reporting an error.
-.\"O The argument is a
-.\"O .IR "struct timeval" .
-.\"O If an input or output function blocks for this period of time, and
-.\"O data has been sent or received, the return value of that function
-.\"O will be the amount of data transferred; if no data has been transferred
-.\"O and the timeout has been reached then \-1 is returned with
-.\"O .I errno
-.\"O set to
-.\"O .B EAGAIN
-.\"O or
-.\"O .B EWOULDBLOCK
-.\"O .\" in fact to EAGAIN
-.\"O just as if the socket was specified to be nonblocking.
-.\"O If the timeout is set to zero (the default)
-.\"O then the operation will never timeout.
-送信・受信のタイムアウトを指定する。これを越えるとエラーを報告する。
-引き数は
-.I "struct timeval"
-である。
-入出力関数がタイムアウト時間の間ブロックされ、かつデータの送信または
-受信が行われていた場合は、転送されたデータ量が関数の返り値となる。
-何もデータが転送されずにタイムアウトに達した場合は、
-\-1 を返し、
-.I errno
-に
-.B EAGAIN
-か
-.B EWOULDBLOCK
-を設定され、
-.\" 実際には EAGAIN が設定される
-あたかもソケットに非ブロッキングが指定されたように見える。
-タイムアウト値に (デフォルト値である) 0 に設定すると、
-操作は決してタイムアウトしなくなる。
-.\"O Timeouts only have effect for system calls that perform socket I/O (e.g.,
-.\"O .BR read (2),
-.\"O .BR recvmsg (2),
-.\"O .BR send (2),
-.\"O .BR sendmsg (2));
-.\"O timeouts have no effect for
-.\"O .BR select (2),
-.\"O .BR poll (2),
-.\"O .BR epoll_wait (2),
-.\"O etc.
-タイムアウトが影響を及ぼすのは、
-ソケット I/O を実行するシステムコールだけ
-(例えば
-.BR read (2),
-.BR recvmsg (2),
-.BR send (2),
-.BR sendmsg (2))
-である。
-.BR select (2),
-.BR poll (2),
-.BR epoll_wait (2)
-などにはタイムアウトは影響を及ぼさない。
-.TP
-.B SO_REUSEADDR
-.\"O Indicates that the rules used in validating addresses supplied in a
-.\"O .BR bind (2)
-.\"O call should allow reuse of local addresses.
-.\"O For
-.\"O .B AF_INET
-.\"O sockets this
-.\"O means that a socket may bind, except when there
-.\"O is an active listening socket bound to the address.
-.\"O When the listening socket is bound to
-.\"O .B INADDR_ANY
-.\"O with a specific port then it is not possible
-.\"O to bind to this port for any local address.
-.\"O Argument is an integer boolean flag.
-.BR bind (2)
-コールに与えられたアドレスが正しいかを判断するルールで、
-ローカルアドレスの再利用を可能にする。
-つまり
-.B AF_INET
-ソケットなら、そのアドレスにバインドされたアクティブな listen
-状態のソケットが存在しない限り、バインドが行える。
-listen 状態のソケットがアドレス
-.B INADDR_ANY
-で特定のポートにバインドされている場合には、
-このポートに対しては、どんなローカルアドレスでもバインドできない。
-引き数はブール整数のフラグである。
-.TP
-.B SO_SNDBUF
-.\"O Sets or gets the maximum socket send buffer in bytes.
-.\"O The kernel doubles this value (to allow space for bookkeeping overhead)
-.\"O when it is set using
-.\"O .\" Most (all?) other implementations do not do this -- MTK, Dec 05
-.\"O .BR setsockopt (2),
-.\"O and this doubled value is returned by
-.\"O .BR getsockopt (2).
-.\"O The default value is set by the
-.\"O .I /proc/sys/net/core/wmem_default
-.\"O file and the maximum allowed value is set by the
-.\"O .I /proc/sys/net/core/wmem_max
-.\"O file.
-.\"O The minimum (doubled) value for this option is 2048.
-ソケットの送信バッファの最大サイズを設定・取得する (バイト単位)。
-.BR setsockopt (2)
-を使って値が設定されたときに (管理オーバヘッド用の領域を確保するために)
-カーネルはこの値を 2倍し、
-.\" 他のほとんどの (全ての?) 実装ではこんなことは行っていない -- MTK, Dec 05
-.BR getsockopt (2)
-はこの 2倍された値を返す。
-デフォルトの値は
-.I /proc/sys/net/core/wmem_default
-ファイルで設定され、許容される最大の値は
-.I /proc/sys/net/core/wmem_max
-ファイルで設定される。
-このオプションの最小値は (2倍した値で) 2048 である。
-.TP
-.\"O .BR SO_SNDBUFFORCE " (since Linux 2.6.14)"
-.BR SO_SNDBUFFORCE " (Linux 2.6.14 以降)"
-.\"O Using this socket option, a privileged
-.\"O .RB ( CAP_NET_ADMIN )
-.\"O process can perform the same task as
-.\"O .BR SO_SNDBUF ,
-.\"O but the
-.\"O .I wmem_max
-.\"O limit can be overridden.
-このソケットオプションを使うと、特権プロセス
-.RB ( CAP_NET_ADMIN
-を持つプロセス) は
-.B SO_SNDBUF
-と同じことを実行できる。
-ただし、上限
-.I wmem_max
-を上書きすることができる。
-.TP
-.B SO_TIMESTAMP
-.\"O Enable or disable the receiving of the
-.\"O .B SO_TIMESTAMP
-.\"O control message.
-.\"O The timestamp control message is sent with level
-.\"O .B SOL_SOCKET
-.\"O and the
-.\"O .I cmsg_data
-.\"O field is a
-.\"O .I "struct timeval"
-.\"O indicating the
-.\"O reception time of the last packet passed to the user in this call.
-.\"O See
-.\"O .BR cmsg (3)
-.\"O for details on control messages.
-.B SO_TIMESTAMP
-制御メッセージの受信を有効/無効にする。
-タイムスタンプ制御メッセージはレベル
-.B SOL_SOCKET
-で送信され、
-.I cmsg_data
-フィールドはこのシステムコールでユーザに渡した
-最後のパケットの受信時刻を示す
-.I "struct timeval"
-である。
-制御メッセージの詳細については
-.BR cmsg (3)
-を参照。
-.TP
-.B SO_TYPE
-.\"O Gets the socket type as an integer (like
-.\"O .BR SOCK_STREAM ).
-.\"O Can only be read
-.\"O with
-.\"O .BR getsockopt (2).
-ソケットのタイプを整数で取得する (例:
-.BR SOCK_STREAM )。
-.BR getsockopt (2)
-からのみ読み出し可能である。
-.\"O .SS Signals
+バッファ中に溜めることのできるデータの最小値を指定する。 このサイズを越えると、ソケット層はそのデータをプロトコルに渡し
+(\fBSO_SNDLOWAT\fP)、 受信時にはユーザに渡す (\fBSO_RCVLOWAT\fP)。 これら二つの値は 1 に初期化される。
+\fBSO_SNDLOWAT\fP は Linux では変更できない (\fBsetsockopt\fP(2)  は \fBENOPROTOOPT\fP
+エラーで失敗する)。 \fBSO_RCVLOWAT\fP は Linux 2.4 以降でのみ変更可能である。 現状、Linux ではシステムコール
+\fBselect\fP(2)  と \fBpoll\fP(2)  は \fBSO_RCVLOWAT\fP の設定を考慮に入れずに動作し、
+データが1バイト利用可能になっただけでも、 ソケットは読み出し可能とのマークをつける。 一方、それに続けて行うソケットからの read は
+\fBSO_RCVLOWAT\fP バイトのデータが利用可能になるまで停止してしまう。
+.TP 
+\fBSO_RCVTIMEO\fP と \fBSO_SNDTIMEO\fP
+.\" Not implemented in 2.0.
+.\" Implemented in 2.1.11 for getsockopt: always return a zero struct.
+.\" Implemented in 2.3.41 for setsockopt, and actually used.
+.\" in fact to EAGAIN
+送信・受信のタイムアウトを指定する。これを越えるとエラーを報告する。 引き数は \fIstruct timeval\fP である。
+入出力関数がタイムアウト時間の間ブロックされ、かつデータの送信または 受信が行われていた場合は、転送されたデータ量が関数の返り値となる。
+何もデータが転送されずにタイムアウトに達した場合は、 \-1 を返し、 \fIerrno\fP に \fBEAGAIN\fP か \fBEWOULDBLOCK\fP
+を設定され、 あたかもソケットに非ブロッキングが指定されたように見える。 タイムアウト値に (デフォルト値である) 0 に設定すると、
+操作は決してタイムアウトしなくなる。 タイムアウトが影響を及ぼすのは、 ソケット I/O を実行するシステムコールだけ (例えば \fBread\fP(2),
+\fBrecvmsg\fP(2), \fBsend\fP(2), \fBsendmsg\fP(2))  である。 \fBselect\fP(2), \fBpoll\fP(2),
+\fBepoll_wait\fP(2)  などにはタイムアウトは影響を及ぼさない。
+.TP 
+\fBSO_REUSEADDR\fP
+\fBbind\fP(2)  コールに与えられたアドレスが正しいかを判断するルールで、 ローカルアドレスの再利用を可能にする。 つまり \fBAF_INET\fP
+ソケットなら、そのアドレスにバインドされたアクティブな listen 状態のソケットが存在しない限り、バインドが行える。 listen
+状態のソケットがアドレス \fBINADDR_ANY\fP で特定のポートにバインドされている場合には、
+このポートに対しては、どんなローカルアドレスでもバインドできない。 引き数はブール整数のフラグである。
+.TP 
+\fBSO_SNDBUF\fP
+.\" Most (all?) other implementations do not do this -- MTK, Dec 05
+ソケットの送信バッファの最大サイズを設定・取得する (バイト単位)。 \fBsetsockopt\fP(2)  を使って値が設定されたときに
+(管理オーバヘッド用の領域を確保するために)  カーネルはこの値を 2倍し、 \fBgetsockopt\fP(2)  はこの 2倍された値を返す。
+デフォルトの値は \fI/proc/sys/net/core/wmem_default\fP ファイルで設定され、許容される最大の値は
+\fI/proc/sys/net/core/wmem_max\fP ファイルで設定される。 このオプションの最小値は (2倍した値で) 2048 である。
+.TP 
+\fBSO_SNDBUFFORCE\fP (Linux 2.6.14 以降)
+このソケットオプションを使うと、特権プロセス (\fBCAP_NET_ADMIN\fP を持つプロセス) は \fBSO_SNDBUF\fP
+と同じことを実行できる。 ただし、上限 \fIwmem_max\fP を上書きすることができる。
+.TP 
+\fBSO_TIMESTAMP\fP
+\fBSO_TIMESTAMP\fP 制御メッセージの受信を有効/無効にする。 タイムスタンプ制御メッセージはレベル \fBSOL_SOCKET\fP で送信され、
+\fIcmsg_data\fP フィールドはこのシステムコールでユーザに渡した 最後のパケットの受信時刻を示す \fIstruct timeval\fP である。
+制御メッセージの詳細については \fBcmsg\fP(3)  を参照。
+.TP 
+\fBSO_TYPE\fP
+ソケットのタイプを整数で取得する (例: \fBSOCK_STREAM\fP)。
+このソケットオプションは読み出し専用である。
 .SS シグナル
-.\"O When writing onto a connection-oriented socket that has been shut down
-.\"O (by the local or the remote end)
-.\"O .B SIGPIPE
-.\"O is sent to the writing process and
-.\"O .B EPIPE
-.\"O is returned.
-.\"O The signal is not sent when the write call
-.\"O specified the
-.\"O .B MSG_NOSIGNAL
-.\"O flag.
-(ローカルもしくはリモート側で) 切断された
-接続指向 (connection-oriented) のソケットに対して
-書き込みを行うと、その書き込みを行ったプロセスに
-.B SIGPIPE
-が送られ、
-.B EPIPE
-が返される。 write 呼び出しに
-.B MSG_NOSIGNAL
-フラグを指定していた場合はシグナルは送られない。
+(ローカルもしくはリモート側で) 切断された 接続指向 (connection\-oriented) のソケットに対して
+書き込みを行うと、その書き込みを行ったプロセスに \fBSIGPIPE\fP が送られ、 \fBEPIPE\fP が返される。 write 呼び出しに
+\fBMSG_NOSIGNAL\fP フラグを指定していた場合はシグナルは送られない。
 .PP
-.\"O When requested with the
-.\"O .B FIOSETOWN
-.\"O .BR fcntl (2)
-.\"O or
-.\"O .B SIOCSPGRP
-.\"O .BR ioctl (2),
-.\"O .B SIGIO
-.\"O is sent when an I/O event occurs.
-.\"O It is possible to use
-.\"O .BR poll (2)
-.\"O or
-.\"O .BR select (2)
-.\"O in the signal handler to find out which socket the event occurred on.
-.B FIOSETOWN
-.BR fcntl (2)
-や
-.B SIOCSPGRP
-.BR ioctl (2)
-をプロセスまたはプロセスグループに指定しておくと、
-I/O イベントが起きたときに
-.B SIGIO
-が送られる。
-.BR poll (2)
-や
-.BR select (2)
-をシグナルハンドラ内で用いれば、どのソケットでイベントが起こったかを
-知ることができる。
-.\"O An alternative (in Linux 2.2) is to set a real-time signal using the
-.\"O .B F_SETSIG
-.\"O .BR fcntl (2);
-.\"O the handler of the real time signal will be called with
-.\"O the file descriptor in the
-.\"O .I si_fd
-.\"O field of its
-.\"O .IR siginfo_t .
-.\"O See
-.\"O .BR fcntl (2)
-.\"O for more information.
-(Linux 2.2 における) 別の方法としては、
-.B F_SETSIG
-.BR fcntl (2)
-を用いてリアルタイムシグナルを設定するやり方もある。
-リアルタイムシグナルのハンドラは、
-.I siginfo_t
-の
-.I si_fd
-フィールドにファイルディスクリプタが入った状態で呼び出される。
-詳細は
-.BR fcntl (2)
-を参照のこと。
+\fBFIOSETOWN\fP \fBfcntl\fP(2)  や \fBSIOCSPGRP\fP \fBioctl\fP(2)
+をプロセスまたはプロセスグループに指定しておくと、 I/O イベントが起きたときに \fBSIGIO\fP が送られる。 \fBpoll\fP(2)  や
+\fBselect\fP(2)  をシグナルハンドラ内で用いれば、どのソケットでイベントが起こったかを 知ることができる。 (Linux 2.2 における)
+別の方法としては、 \fBF_SETSIG\fP \fBfcntl\fP(2)  を用いてリアルタイムシグナルを設定するやり方もある。
+リアルタイムシグナルのハンドラは、 \fIsiginfo_t\fP の \fIsi_fd\fP フィールドにファイルディスクリプタが入った状態で呼び出される。
+詳細は \fBfcntl\fP(2)  を参照のこと。
 .PP
-.\"O Under some circumstances (e.g., multiple processes accessing a
-.\"O single socket), the condition that caused the
-.\"O .B SIGIO
-.\"O may have already disappeared when the process reacts to the signal.
-.\"O If this happens, the process should wait again because Linux
-.\"O will resend the signal later.
-状況によっては (例えば複数のプロセスが一つのソケットにアクセスしているなど)、
-.B SIGIO
-の原因となった状態は、プロセスがそのシグナルへの対応を行ったときには
-消えてしまっているかもしれない。
-この場合は、プロセスは再び待つようにすべきである。
-Linux は同じシグナルを後で再送するからである。
 .\" .SS Ancillary Messages
-.\"O .SS /proc interfaces
-.SS /proc インタフェース
-.\"O The core socket networking parameters can be accessed
-.\"O via files in the directory
-.\"O .IR /proc/sys/net/core/ .
-core のソケットのネットワーキングパラメータには、
-.I /proc/sys/net/core/
-ディレクトリ内のファイルを通してアクセスできる。
-.TP
-.I rmem_default
-.\"O contains the default setting in bytes of the socket receive buffer.
+状況によっては (例えば複数のプロセスが一つのソケットにアクセスしているなど)、 \fBSIGIO\fP
+の原因となった状態は、プロセスがそのシグナルへの対応を行ったときには 消えてしまっているかもしれない。
+この場合は、プロセスは再び待つようにすべきである。 Linux は同じシグナルを後で再送するからである。
+.SS "/proc インタフェース"
+core のソケットのネットワーキングパラメータには、 \fI/proc/sys/net/core/\fP ディレクトリ内のファイルを通してアクセスできる。
+.TP 
+\fIrmem_default\fP
 ソケットの受信バッファサイズのデフォルト値 (バイト単位)。
-.TP
-.I rmem_max
-.\"O contains the maximum socket receive buffer size in bytes which a user may
-.\"O set by using the
-.\"O .B SO_RCVBUF
-.\"O socket option.
-.B SO_RCVBUF
-ソケットオプションを用いてユーザが設定できる
-ソケットの受信バッファサイズの最大値 (バイト単位)。
-.TP
-.I wmem_default
-.\"O contains the default setting in bytes of the socket send buffer.
+.TP 
+\fIrmem_max\fP
+\fBSO_RCVBUF\fP ソケットオプションを用いてユーザが設定できる ソケットの受信バッファサイズの最大値 (バイト単位)。
+.TP 
+\fIwmem_default\fP
 ソケットの送信バッファサイズのデフォルト値 (バイト単位)。
-.TP
-.I wmem_max
-.\"O contains the maximum socket send buffer size in bytes which a user may
-.\"O set by using the
-.\"O .B SO_SNDBUF
-.\"O socket option.
-.B SO_SNDBUF
-ソケットオプションを用いてユーザが設定できる
-ソケットの送信バッファサイズの最大値 (バイト単位)。
-.TP
-.\"O .IR message_cost " and " message_burst
-.IR message_cost " と " message_burst
-.\"O configure the token bucket filter used to load limit warning messages
-.\"O caused by external network events.
-トークン・バケット・フィルターを設定する。
-これは外部のネットワークイベントによって引き起こされた
-負荷限界の警告メッセージに用いられる。
-.\"NAKANO "load limit" だと思うんだけど...
-.TP
-.I netdev_max_backlog
-.\"O Maximum number of packets in the global input queue.
+.TP 
+\fIwmem_max\fP
+\fBSO_SNDBUF\fP ソケットオプションを用いてユーザが設定できる ソケットの送信バッファサイズの最大値 (バイト単位)。
+.TP 
+\fImessage_cost\fP と \fImessage_burst\fP
+トークン・バケット・フィルターを設定する。 これは外部のネットワークイベントによって引き起こされた 負荷限界の警告メッセージに用いられる。
+.TP 
+\fInetdev_max_backlog\fP
 グローバルな入力キューにおける最大のパケット数。
-.TP
-.I optmem_max
-.\"O Maximum length of ancillary data and user control data like the iovecs
-.\"O per socket.
-ソケットあたりの、補助データ (ancillary data) とユーザ制御データ
-(iovecs のようなもの) との和の最大長。
+.TP 
+\fIoptmem_max\fP
 .\" netdev_fastroute is not documented because it is experimental
-.\"O .SS Ioctls
+ソケットあたりの、補助データ (ancillary data) とユーザ制御データ (iovecs のようなもの) との和の最大長。
 .SS ioctl
-.\"O These operations can be accessed using
-.\"O .BR ioctl (2):
-以下に示す操作には
-.BR ioctl (2)
-を用いてアクセスできる。
+以下に示す操作には \fBioctl\fP(2)  を用いてアクセスできる。
 
 .in +4n
 .nf
-.IB error " = ioctl(" ip_socket ", " ioctl_type ", " &value_result ");"
+\fIerror\fP\fB = ioctl(\fP\fIip_socket\fP\fB, \fP\fIioctl_type\fP\fB, \fP\fI&value_result\fP\fB);\fP
 .fi
 .in
-.TP
-.B SIOCGSTAMP
-.\"O Return a
-.\"O .I struct timeval
-.\"O with the receive timestamp of the last packet passed to the user.
-.\"O This is useful for accurate round trip time measurements.
-.\"O See
-.\"O .BR setitimer (2)
-.\"O for a description of
-.\"O .IR "struct timeval" .
-最後にユーザに渡されたパケットの受信タイムスタンプを
-.I struct timeval
-に入れて返す。
-これは round trip 時間を正確に測りたいときに便利である。
-.I struct timeval
-の説明は
-.BR setitimer (2)
-を見てほしい。
+.TP 
+\fBSIOCGSTAMP\fP
 .\"
-.\"O This ioctl should only be used if the socket option
-.\"O .B SO_TIMESTAMP
-.\"O is not set on the socket.
-.\"O Otherwise, it returns the timestamp of the
-.\"O last packet that was received while
-.\"O .B SO_TIMESTAMP
-.\"O was not set, or it fails if no such packet has been received,
-.\"O (i.e.,
-.\"O .BR ioctl (2)
-.\"O returns \-1 with
-.\"O .I errno
-.\"O set to
-.\"O .BR ENOENT ).
-この ioctl は、ソケットオプション
-.B SO_TIMESTAMP
-がソケットにセットされていない場合にのみ使用すべきである。
-さもなければ、この ioctl は
-.B SO_TIMESTAMP
-がセットされていなかった間に受信した最後のパケットの時刻を返すか、
-そのようなパケットを受信していない場合には失敗する
-(つまり、
-.BR ioctl (2)
-は \-1 を返し、
-.I errno
-に
-.B ENOENT
-をセットする)。
-.TP
-.B SIOCSPGRP
-.\"O Set the process or process group to send
-.\"O .B SIGIO
-.\"O or
-.\"O .B SIGURG
-.\"O signals
-.\"O to when an
-.\"O asynchronous I/O operation has finished or urgent data is available.
-.\"O The argument is a pointer to a
-.\"O .IR pid_t .
-.\"O If the argument is positive, send the signals to that process.
-.\"O If the
-.\"O argument is negative, send the signals to the process group with the ID
-.\"O of the absolute value of the argument.
-.\"O The process may only choose itself or its own process group to receive
-.\"O signals unless it has the
-.\"O .B CAP_KILL
-.\"O capability or an effective UID of 0.
-非同期 I/O 操作の終了時や緊急データの受信時に
-.B SIGIO
-や
-.B SIGURG
-シグナル群を送るプロセスやプロセスグループを設定する。
-引き数は
-.I pid_t
-へのポインタである。
-引き数が正だと、そのプロセスにシグナルが送られる。負だと、
-引き数の絶対値を ID に持つプロセスグループにシグナルが送られる。
-シグナル受信先には、自分自身のプロセス / 自分の所属するプロセスグループ
-しか指定できない。但し、
-.B CAP_KILL
-ケーパビリティを持っている場合、及び実効ユーザ ID が 0 のプロセスの場合は
-この限りではない。
-.TP
-.B FIOASYNC
-.\"O Change the
-.\"O .B O_ASYNC
-.\"O flag to enable or disable asynchronous I/O mode of the socket.
-.\"O Asynchronous I/O mode means that the
-.\"O .B SIGIO
-.\"O signal or the signal set with
-.\"O .B F_SETSIG
-.\"O is raised when a new I/O event occurs.
-.B O_ASYNC
-フラグを変更し、ソケットの非同期 (asynchronous) I/O モードを
-有効/無効にする。非同期 I/O モードでは、
-新しい I/O イベントが起きたときに、
-.B SIGIO
-シグナルや
-.B F_SETSIG
-で設定されたシグナル・セットが発行される。
+最後にユーザに渡されたパケットの受信タイムスタンプを \fIstruct timeval\fP に入れて返す。 これは round trip
+時間を正確に測りたいときに便利である。 \fIstruct timeval\fP の説明は \fBsetitimer\fP(2)  を見てほしい。 この ioctl
+は、ソケットオプション \fBSO_TIMESTAMP\fP がソケットにセットされていない場合にのみ使用すべきである。 さもなければ、この ioctl は
+\fBSO_TIMESTAMP\fP がセットされていなかった間に受信した最後のパケットの時刻を返すか、 そのようなパケットを受信していない場合には失敗する
+(つまり、 \fBioctl\fP(2)  は \-1 を返し、 \fIerrno\fP に \fBENOENT\fP をセットする)。
+.TP 
+\fBSIOCSPGRP\fP
+非同期 I/O 操作の終了時や緊急データの受信時に \fBSIGIO\fP や \fBSIGURG\fP シグナル群を送るプロセスやプロセスグループを設定する。
+引き数は \fIpid_t\fP へのポインタである。 引き数が正だと、そのプロセスにシグナルが送られる。負だと、 引き数の絶対値を ID
+に持つプロセスグループにシグナルが送られる。 シグナル受信先には、自分自身のプロセス / 自分の所属するプロセスグループ しか指定できない。但し、
+\fBCAP_KILL\fP ケーパビリティを持っている場合、及び実効ユーザ ID が 0 のプロセスの場合は この限りではない。
+.TP 
+\fBFIOASYNC\fP
+\fBO_ASYNC\fP フラグを変更し、ソケットの非同期 (asynchronous) I/O モードを 有効/無効にする。非同期 I/O モードでは、
+新しい I/O イベントが起きたときに、 \fBSIGIO\fP シグナルや \fBF_SETSIG\fP で設定されたシグナル・セットが発行される。
 .IP
-.\"O Argument is an integer boolean flag.
-引き数はブール整数のフラグである。
-.\"O (This operation is synonymous with the use of
-.\"O .BR fcntl (2)
-.\"O to set the
-.\"O .B O_ASYNC
-.\"O flag.)
-(この操作は
-.BR fcntl (2)
-を使って
-.B O_ASYNC
-フラグをセットするのと同じ意味である。)
 .\"
-.TP
-.B SIOCGPGRP
-.\"O Get the current process or process group that receives
-.\"O .B SIGIO
-.\"O or
-.\"O .B SIGURG
-.\"O signals,
-.\"O or 0
-.\"O when none is set.
-.B SIGIO
-や
-.B SIGURG
-を受信したカレントプロセス・プロセスグループを取得する。
-ない場合は 0 が返る。
+引き数はブール整数のフラグである。 (この操作は \fBfcntl\fP(2)  を使って \fBO_ASYNC\fP フラグをセットするのと同じ意味である。)
+.TP 
+\fBSIOCGPGRP\fP
+\fBSIGIO\fP や \fBSIGURG\fP を受信したカレントプロセス・プロセスグループを取得する。 ない場合は 0 が返る。
 .PP
-.\"O Valid
-.\"O .BR fcntl (2)
-.\"O operations:
-有効な
-.BR fcntl (2)
-操作:
-.TP
-.B FIOGETOWN
-.\"O The same as the
-.\"O .B SIOCGPGRP
-.\"O .BR ioctl (2).
-.B SIOCGPGRP
-.BR ioctl (2)
-と同じ。
-.TP
-.B FIOSETOWN
-.\"O The same as the
-.\"O .B SIOCSPGRP
-.\"O .BR ioctl (2).
-.B SIOCSPGRP
-.BR ioctl (2)
-と同じ。
-.\"O .SH VERSIONS
+有効な \fBfcntl\fP(2)  操作:
+.TP 
+\fBFIOGETOWN\fP
+\fBSIOCGPGRP\fP \fBioctl\fP(2)  と同じ。
+.TP 
+\fBFIOSETOWN\fP
+\fBSIOCSPGRP\fP \fBioctl\fP(2)  と同じ。
 .SH バージョン
-.\"O .B SO_BINDTODEVICE
-.\"O was introduced in Linux 2.0.30.
-.\"O .B SO_PASSCRED
-.\"O is new in Linux 2.2.
-.\"O The
-.\"O .I /proc
-.\"O interfaces was introduced in Linux 2.2.
-.B SO_BINDTODEVICE
-は Linux 2.0.30 で導入された。
-.B SO_PASSCRED
-は Linux 2.2 で登場した。
-.I /proc
-インタフェースは Linux 2.2 で導入された。
-.\"O .B SO_RCVTIMEO
-.\"O and
-.\"O .B SO_SNDTIMEO
-.\"O are supported since Linux 2.3.41.
-.\"O Earlier, timeouts were fixed to
-.\"O a protocol-specific setting, and could not be read or written.
-.B SO_RCVTIMEO
-と
-.B SO_SNDTIMEO
-は Linux 2.3.41 以降でサポートされている。
-それ以前は、タイムアウトはプロトコル固有の固定の設定値で、
-読み書きをすることはできなかった。
-.\"O .SH NOTES
+\fBSO_BINDTODEVICE\fP は Linux 2.0.30 で導入された。 \fBSO_PASSCRED\fP は Linux 2.2 で登場した。
+\fI/proc\fP インタフェースは Linux 2.2 で導入された。 \fBSO_RCVTIMEO\fP と \fBSO_SNDTIMEO\fP は Linux
+2.3.41 以降でサポートされている。 それ以前は、タイムアウトはプロトコル固有の固定の設定値で、 読み書きをすることはできなかった。
 .SH 注意
-.\"O Linux assumes that half of the send/receive buffer is used for internal
-.\"O kernel structures; thus the values in the corresponding
-.\"O .I /proc
-.\"O files are twice what can be observed on the wire.
-Linux は、送受信バッファの半分を内部のカーネル構造体で用いると仮定している。
-したがって、対応する
-.I /proc
+Linux は、送受信バッファの半分を内部のカーネル構造体で用いると仮定している。 したがって、対応する \fI/proc\fP
 ファイルはネットワーク回線上での大きさの 2 倍になる。
 
-.\"O Linux will only allow port reuse with the
-.\"O .B SO_REUSEADDR
-.\"O option
-.\"O when this option was set both in the previous program that performed a
-.\"O .BR bind (2)
-.\"O to the port and in the program that wants to reuse the port.
-.\"O This differs from some implementations (e.g., FreeBSD)
-.\"O where only the later program needs to set the
-.\"O .B SO_REUSEADDR
-.\"O option.
-.\"O Typically this difference is invisible, since, for example, a server
-.\"O program is designed to always set this option.
-Linux では、
-.B SO_REUSEADDR
-オプションでポートの再利用が許可されるのは、
-そのポートに対して
-.BR bind (2)
-を前に実行したプログラムとそのポートを再利用
-しようとするプログラムの両方で
-.B SO_REUSEADDR
-がセットされた場合のみである。
-この動作は (FreeBSD などの) いくつかの実装とは異なる。これらでは、
-後でポートを再利用しようとするプログラムで
-.B SO_REUSEADDR
-オプションをセットするだけでよい。
-たいていはこの違いは見えない。なぜなら、例えばサーバプログラムは
+Linux では、 \fBSO_REUSEADDR\fP オプションでポートの再利用が許可されるのは、 そのポートに対して \fBbind\fP(2)
+を前に実行したプログラムとそのポートを再利用 しようとするプログラムの両方で \fBSO_REUSEADDR\fP がセットされた場合のみである。 この動作は
+(FreeBSD などの) いくつかの実装とは異なる。これらでは、 後でポートを再利用しようとするプログラムで \fBSO_REUSEADDR\fP
+オプションをセットするだけでよい。 たいていはこの違いは見えない。なぜなら、例えばサーバプログラムは
 常にこのオプションをセットするように設計されるからである。
-.\"O .SH BUGS
 .SH バグ
-.\"O The
-.\"O .B CONFIG_FILTER
-.\"O socket options
-.\"O .B SO_ATTACH_FILTER
-.\"O and
-.\"O .B SO_DETACH_FILTER
 .\" FIXME Document SO_ATTACH_FILTER and SO_DETACH_FILTER
-.\"O are not documented.
-.\"O The suggested interface to use them is via the libpcap
-.\"O library.
-.B CONFIG_FILTER
-ソケットオプションである
-.B SO_ATTACH_FILTER
-と
-.B SO_DETACH_FILTER
-について記載されていない。これらは libpcap ライブラリを通して
-用いる方が良い。
-.\"O .\" .SH AUTHORS
-.\" .SH 著者
-.\"O .\" This man page was written by Andi Kleen.
-.\" この man ページは Andi Kleen が書いた。
-.\"O .SH SEE ALSO
+.\" .SH AUTHORS
+.\" This man page was written by Andi Kleen.
+\fBCONFIG_FILTER\fP ソケットオプションである \fBSO_ATTACH_FILTER\fP と \fBSO_DETACH_FILTER\fP
+について記載されていない。これらは libpcap ライブラリを通して 用いる方が良い。
 .SH 関連項目
-.BR getsockopt (2),
-.BR setsockopt (2),
-.BR socket (2),
-.BR capabilities (7),
-.BR ddp (7),
-.BR ip (7),
-.BR packet (7),
-.BR tcp (7),
-.BR udp (7),
-.BR unix (7)
+\fBgetsockopt\fP(2), \fBsetsockopt\fP(2), \fBsocket\fP(2), \fBcapabilities\fP(7),
+\fBddp\fP(7), \fBip\fP(7), \fBpacket\fP(7), \fBtcp\fP(7), \fBudp\fP(7), \fBunix\fP(7)
diff --git a/draft/man7/suffixes.7 b/draft/man7/suffixes.7
new file mode 100644 (file)
index 0000000..48578af
--- /dev/null
@@ -0,0 +1,280 @@
+.\" t
+.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\" Modified Sat Jul 24 17:35:15 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified Sun Feb 19 22:02:32 1995 by Rik Faith <faith@cs.unc.edu>
+.\" Modified Tue Oct 22 23:28:12 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Sun Jan 26 21:56:56 1997 by Ralph Schleicher
+.\"    <rs@purple.UL.BaWue.DE>
+.\" Modified Mon Jun 16 20:24:58 1997 by Nicolás Lichtmaier <nick@debian.org>
+.\" Modified Sun Oct 18 22:11:28 1998 by Joseph S. Myers <jsm28@cam.ac.uk>
+.\" Modified Mon Nov 16 17:24:47 1998 by Andries Brouwer <aeb@cwi.nl>
+.\" Modified Thu Nov 16 23:28:25 2000 by David A. Wheeler
+.\"    <dwheeler@dwheeler.com>
+.\"
+.\" FIXME, mtk, May 2007: rendering this page yields the error:
+.\" grotty:suffixes.7:1725: character above first line discarded
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SUFFIXES 7 2000\-11\-16 Linux "Linux Programmer's Manual"
+.SH 名前
+suffixes \- ファイルの接尾辞 (suffix) のリスト
+.SH 説明
+習慣的にファイルの接尾 (suffix) はファイルの内容を示している。 この接尾はピリオド (.) とそれに続く一つ以上の文字からなっている。
+コンパイラーのような、多くの標準的なユーティリティは、 この接尾を使用して取り扱うファイルの型を理解する。 \fBmake\fP(1)
+ユーティリティはファイルの接尾に基づいたルールに従って動作する。
+.PP
+以下は Linux システムでよく見られる接尾のリストである。
+.PP
+.TS
+l | l
+_ | _
+lI |  l .
+Suffix File type
+ ,v    RCS (リビジョン・コントロール) のためのファイル
+ \-    バックアップ・ファイル
+ .C    C++ のソース・コード、\fI.cc\fP と等価
+ .F    \fBcpp\fP(1)命令をもったフォートランのソース
+       または freeze(1) で圧縮されたファイル
+ .S    \fBcpp\fP(1)命令をもったアセンブラ・ソース
+ .Y    yabba(1) で圧縮されたファイル
+ .Z    \fBcompress\fP(1)で圧縮されたファイル
+ .[0\-9]+gf    TeX の一般フォント
+ .[0\-9]+pk    TeX の圧縮フォント
+ .[1\-9]       対応する章のマニュアル・ページ
+ .[1\-9][a\-z] サブセクション付きマニュアル・ページ
+ .a    オブジェクト・コードの静的ライブラリ
+ .ad   X のアプリケーション・デフォルト・ファイル
+ .ada  Ada のソース(本体か枝葉か組み合わせ)
+ .adb  Ada のソース本体
+ .ads  Ada のソース仕様
+ .afm  PostScript のフォント・メトリクス
+ .al   Perl のオートロード・ファイル
+ .am   \fBautomake\fP(1) の入力ファイル
+ .arc  \fBarc\fP(1)のアーカイブ
+ .arj  \fBarj\fP(1)のアーカイブ
+ .asc  PGP の ASCII 化されたデータ
+ .asm  (GNU) アセンブラのソース
+ .au   オーディオ・サウンド・ファイル
+ .aux  LaTeX の補助ファイル
+.avi   (Microsoft ビデオ) ムービー
+ .awk  AWK 言語のプログラム
+ .b    LILO のブートローダ・イメージ
+ .bak  バックアップ・ファイル
+ .bash \fBbash\fP(1) シェル・スクリプト
+ .bb   ベーシック・ブロック・リスト
+       (gcc \-ftest\-coverage が生成する)
+ .bbg  ベーシック・ブロック・グラフ
+       (gcc \-ftest\-coverage が生成する)
+ .bbl  BibTeX の出力
+ .bdf  X のフォントファイル
+ .bib  TeX 文献データベース, BibTeX の入力
+ .bm   ビットマップのソース
+ .bmp  ビットマップ
+ .bz2  \fBbzip2\fP(1) を使用して圧縮されたファイル
+ .c    C のソース・コード
+ .cat  メッセージ・カタログ・ファイル
+ .cc   C++ のソース・コード
+ .cf   設定ファイル
+ .cfg  設定ファイル
+ .cgi  WWW のコンテンツを作成するプログラム
+ .cls  LaTeX のクラス定義ファイル
+ .class        Java のコンパイルされたバイトコード
+ .conf 設定ファイル
+ .config       設定ファイル
+ .cpp  \fI.cc\fP と同じ
+ .csh  \fBcsh\fP(1) シェル・スクリプト
+ .cxx  \fI.cc\fP と同じ
+ .dat  データ・ファイル
+ .deb  Debian のソフトウェア・パッケージ
+ .def  Modula\-2 ソースのモジュール定義ファイル
+ .def  その他の定義ファイル
+ .desc \fBmunpack\fP(1) でアンパックされた
+       メールの最初の部分
+ .diff ファイル差分 (\fBdiff\fP(1) コマンドの出力)
+ .dir  dbm データベースのディレクトリ・ファイル
+ .doc  ドキュメント・ファイル
+ .dsc  Debian のソース制御ファイル (ソース・パッケージ)
+ .dtx  LaTeX パッケージのソース
+ .dvi  TeX のデバイス独立出力ファイル
+ .el   Emacs\-Lisp のソース
+ .elc  コンパイルされた Emacs\-Lispのコード
+ .eps  カプセル化されたPostScript
+ .exp  Expect のソースコード
+ .f    Fortran のソース・コード
+ .f77  Fortran 77 のソース・コード
+ .f90  Fortran 90 のソース・コード
+ .fas  プリコンパイルされた Common\-Lispのコード
+ .fi   フォートランのインクルード・ファイル
+ .fig  FIG イメージ・ファイル (\fBxfig\fP(1) で使用される)
+ .fmt  TeX フォーマット・ファイル
+ .gif  グラフィック・イメージ (Compuserve Graphics Image File)
+ .gmo  GNU フォーマット・メッセージ・カタログ
+ .gsf  ghostscript のフォント
+ .gz   \fBgzip\fP(1) を使用して圧縮されたファイル
+ .h    C または C++ のヘッダー・ファイル
+ .help ヘルプ・ファイル
+ .hf   \fI.help\fP に同じ
+ .hlp  \fI.help\fP に同じ
+ .htm  貧乏人の \fI.html\fP
+ .html World Wide Web で使用する HTML の文書
+ .hqx  7 ビットエンコードされた Macintosh ファイル
+ .i    プリプロセスを行なった C のソース・コード
+ .icon ビットマップのソース
+ .idx  ハイパーテキストやデータベースの
+       インデックス・ファイル
+ .image        ビットマップのソース
+ .in   コンフィギュレーションのテンプレート (特に GNU Autoconf)
+ .info Emacs info ファイル
+ .info\-[0\-9]+        分割された info ファイル
+ .ins  docstrip の LaTeX パッケージ・インストール・ファイル
+ .itcl itcl のソース・コード
+       itcl (incr tcl) は tcl の OO 拡張
+ .java Java のソース・コード
+ .jpeg グラフィックイメージ (Joint Photographic Experts Group)
+ .jpg  貧乏人の \fI.jpeg\fP
+ .kmap \fBlyx\fP(1) のキーマップ
+ .l    \fI.lex\fP または \fI.lisp\fP に同じ
+ .lex  \fBlex\fP(1) または \fBflex\fP(1) ファイル
+ .lha  lharc アーカイブ
+ .lib  Common\-Lisp のライブラリ
+ .lisp Lisp のソース・コード
+ .ln   \fBlint\fP(1) で使用するためのファイル
+ .log  ログ・ファイル, 特に TeX によって生成される
+ .lsm  Linux ソフトウェア・マップの見出し
+ .lsp  Common\-Lisp のソース・コード
+ .lzh  lharc アーカイブ
+ .m    Objective\-C ソース・コード
+ .m4   \fBm4\fP(1) のソース・コード
+ .mac  いろいろなプログラムでのマクロ・ファイル
+ .man  マニュアル・ページ (大抵はフォーマットされていない)
+ .map  各種プログラムのマップ・ファイル
+ .me   me マクロ・パッケージを使用した Nroff のソース
+ .mf   メタフォント (TeX のフォント作成ツール) のソース
+ .mgp  MagicPoint ファイル
+ .mm   mm マクロを使用した \fBgroff\fP(1) のソース
+ .mo   メッセージ・カタログのバイナリ
+ .mod  Modula\-2 のモジュール実装のためのソース・コード
+ .mov  (quicktime) ムービー
+ .mp   Metapost のソース
+ .mp2  MPEG レイヤー 2 (オーディオ) ファイル
+ .mp3  MPEG レイヤー 3 (オーディオ) ファイル
+ .mpeg ムービー・ファイル
+ .o    オブジェクト・ファイル
+ .old  古いファイル、またはバックアップ・ファイル
+ .orig \fBpatch\fP(1) による (オリジナルの) バックアップ・ファイル
+ .out  出力ファイル、大抵は実行プログラムである (a.out)
+ .p    pascal のソース・コード
+ .pag  dbm データベースのデータ・ファイル
+ .patch        \fBpatch\fP(1) で使用するための差分ファイル
+ .pbm  グラフィック・イメージ (portable bitmap format)
+ .pcf  X11 のフォント・ファイル
+ .pdf  Adobe Portable Data Format
+       (Acrobat/\fBacroread\fP や \fBxpdf\fP で使用する)
+ .perl Perl のソース・コード (.ph, .pl, .pm を参照)
+ .pfa  PostScriptのフォント定義 (ASCII フォーマット)
+ .pfb  PostScriptのフォント定義 (バイナリ・フォーマット)
+ .pgm  グラフィック・イメージ (portable greymap format)
+ .pgp  PGP のバイナリ・データ
+ .ph   Perl のヘッダー・ファイル
+ .php  PHP のプログラム・ファイル
+ .php3 PHP3 のプログラム・ファイル
+ .pid  デーモンの PID を格納したファイル (crond.pid など)
+ .pl   TeX のプロパティ・リストまたは Perl のライブラリ
+ .pm   Perl のモジュール
+ .png  グラフィック・イメージ (Portable Network Graphics)
+ .po   メッセージ・カタログのソース
+ .pod  \fBperldoc\fP(1) ファイル
+ .ppm  グラフィック・イメージ (portable pixmap format)
+ .pr   ビットマップのソース
+ .ps   PostScript ファイル
+ .py   python のソース
+ .pyc  コンパイルされた python
+ .qt   quicktime ムービー
+ .r    RATFOR のソース (廃語)
+ .rej  \fBpatch\fP(1) に失敗した pacth ファイル
+ .rpm  RPM のソフトウェア・パッケージ
+ .rtf  リッチ・テキスト・フォーマット
+ .rules        何かのためのルール
+ .s    アセンブラのソース
+ .sa   a.out 共有ライブラリのためのスタブ・ライブラリ
+ .sc   \fBsc\fP(1) のスプレッドシート命令
+ .scm  Scheme のソース・コード
+ .sed  sed のソース・ファイル
+ .sgml SGML ソース
+ .sh   \fBsh\fP(1) のスクリプト
+ .shar \fBshar\fP(1) ユーティリティで作成されたアーカイブ
+ .so   共有ライブラリまたは動的ロード・オブジェクト
+ .sql  SQL のソース
+ .sqml SQML の schema または query program
+ .sty  LaTeX のスタイル・ファイル
+ .sym  Modula\-2 のコンパイルされた定義モジュール
+ .tar  \fBtar\fP(1) ユーティリティで作成されたアーカイブ
+ .tar.Z        \fBcompress\fP(1) で圧縮された \fBtar\fP(1) アーカイブ
+ .tar.bz2      \fBbzip2\fP(1) で圧縮された \fBtar\fP(1) アーカイブ
+ .tar.gz       \fBgzip\fP(1) で圧縮された \fBtar\fP(1) アーカイブ
+ .taz  \fBcompress\fP(1) で圧縮された \fBtar\fP(1) アーカイブ
+ .tcl  tcl のソース・コード
+ .tex  TeX または LaTeX のソース
+ .texi \fI.texinfo\fP に同じ
+ .texinfo      texinfo 文書のソース
+ .text テキスト・ファイル
+ .tfm  TeX のフォント・メトリック
+ .tgz  gzip(1)で圧縮された tar(1) アーカイブ
+ .tif  貧乏人の \fI.tiff\fP
+ .tiff グラフィック・イメージ (Tagged Image File Format)
+ .tk   tcl/tk スクリプト
+ .tmp  一時ファイル
+ .tmpl テンプレート・ファイル
+ .txt  \fI.text\fP に同じ
+ .uu   \fI.uue\fP に同じ
+ .uue  \fBuuencode\fP(1) で符号化されたバイナリ・ファイル
+ .vf   TeX の仮想フォント・ファイル
+ .vpl  TeX の仮想プロパティ・リスト・ファイル
+ .w    Silvio Levi の CWEB
+ .wav  ウェーブ・サウンド・ファイル
+ .web  Donald Knuth の WEB
+ .wml  Web Meta Language のソース・ファイル
+ .xbm  X11 ビットマップのソース
+ .xcf  GIMP グラフィック・ファイル
+ .xml  XML (拡張記述言語)ファイル
+ .xpm  X11 ピクスマップのソース
+ .xs   h2xs で生成される Perl xsub ファイル
+ .xsl  XSL スタイルシート
+ .y    \fByacc\fP(1) または \fBbison\fP(1) のファイル
+ .z    \fBpack\fP(1) (または古い \fBgzip\fP(1)) で圧縮されたファイル
+ .zip  \fBzip\fP(1) アーカイブ
+ .zoo  \fBzoo\fP(1) アーカイブ
+ ~     Emacs または \fBpatch\fP(1) のバックアップ・ファイル
+ rc    起動ファイル (`run control') (例 \fI.newsrc\fP)
+.TE
+.SH 準拠
+一般的な UNIX の作法。
+.SH バグ
+このリストは完全ではない。
+.SH 関連項目
+\fBfile\fP(1), \fBmake\fP(1)
index 2044931..6a3f3bb 100644 (file)
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
 .\"
-.\" Japanese Version Copyright (c) 1998 HANATAKA Shinya
-.\"         all rights reserved.
-.\" Translated Wed Feb 11 21:29:14 JST 1998
-.\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
-.\"
-.\"WORD:       semaphore set           セマフォー集合
-.\"WORD:       shared memory segment   共有メモリ・セグメント
-.\"WORD:       message queue           メッセージ・キュー
-.\"
 .\" FIXME There is now duplication of some of the information
 .\" below in semctl.2, msgctl.2, and shmctl.2 -- MTK, Nov 04
-.TH SVIPC 7 2009-01-26 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SVIPC 7 2009\-01\-26 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O svipc \- System V interprocess communication mechanisms
 svipc \- System V プロセス間通信機構
-.\"O .SH SYNOPSIS
 .SH 書式
 .nf
-.B #include <sys/types.h>
-.B #include <sys/ipc.h>
-.B #include <sys/msg.h>
-.B #include <sys/sem.h>
-.B #include <sys/shm.h>
+\fB#include <sys/types.h>\fP
+\fB#include <sys/ipc.h>\fP
+\fB#include <sys/msg.h>\fP
+\fB#include <sys/sem.h>\fP
+\fB#include <sys/shm.h>\fP
 .fi
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O This manual page refers to the Linux implementation of the System V
-.\"O interprocess communication (IPC) mechanisms:
-.\"O message queues, semaphore sets, and shared memory segments.
-.\"O In the following, the word
-.\"O .I resource
-.\"O means an instantiation of one among such mechanisms.
-このマニュアル・ページは System V プロセス間通信
-(interprocess communication; IPC) 機構の Linux に
-おける実装を説明する。
-このプロセス間通信機構には、
-メッセージ・キュー (message queue)、セマフォー集合 (semaphore set)、
-共有メモリ・セグメント (shared memory segment) などがある。以下で
-.I "資源 (resource)"
+このマニュアルページは System V プロセス間通信 (interprocess communication; IPC) 機構の Linux に
+おける実装を説明する。 このプロセス間通信機構には、 メッセージキュー (message queue)、セマフォー集合 (semaphore set)、
+共有メモリセグメント (shared memory segment) などがある。以下で \fI資源 (resource)\fP
 という用語を使用した場合にはこれらの機構のどれかを意味する。
-.\"O .SS Resource Access Permissions
 .SS 資源へのアクセス許可
-.\"O For each resource, the system uses a common structure of type
-.\"O .I "struct ipc_perm"
-.\"O to store information needed in determining permissions to perform an
-.\"O IPC operation.
-システムのそれぞれの資源は、IPC への操作を許可するかどうかを決定する
-ための情報を共通の構造体
-.I "struct ipc_perm"
-に格納して使用する。
-.\"O The
-.\"O .I ipc_perm
-.\"O structure, defined by the
-.\"O .I <sys/ipc.h>
-.\"O system header file, includes the following members:
-.I ipc_perm
-構造体は、ヘッダーファイルの
-.I <sys/ipc.h>
+システムのそれぞれの資源は、IPC への操作を許可するかどうかを決定する ための情報を共通の構造体 \fIstruct ipc_perm\fP
+に格納して使用する。 \fIipc_perm\fP 構造体は、ヘッダーファイルの \fI<sys/ipc.h>\fP
 に定義されており、以下のメンバーが含まれている:
 .in +4n
 .nf
 
 struct ipc_perm {
-.\"O     uid_t          cuid;   /* creator user ID */
-.\"O     gid_t          cgid;   /* creator group ID */
-.\"O     uid_t          uid;    /* owner user ID */
-.\"O     gid_t          gid;    /* owner group ID */
-.\"O     unsigned short mode;   /* r/w permissions */
     uid_t          cuid;   /* 作成者のユーザーID */
     gid_t          cgid;   /* 作成者のグループID */
     uid_t          uid;    /* 所有者のユーザーID */
@@ -98,125 +60,56 @@ struct ipc_perm {
 .fi
 .in
 .PP
-.\"O The
-.\"O .I mode
-.\"O member of the
-.\"O .I ipc_perm
-.\"O structure defines, with its lower 9 bits, the access permissions to the
-.\"O resource for a process executing an IPC system call.
-.\"O The permissions are interpreted as follows:
-.I ipc_perm
-構造体の
-.I mode
-メンバーは以下の 9 ビットで、プロセスの IPC システム・コール
-による資源へのアクセス許可を定義する。
-許可は以下のように解釈される:
+\fIipc_perm\fP 構造体の \fImode\fP メンバーは以下の 9 ビットで、プロセスの IPC システムコール
+による資源へのアクセス許可を定義する。 許可は以下のように解釈される:
 .sp
 .nf
-.\"O     0400    Read by user.
-.\"O     0200    Write by user.
     0400    ユーザーによる読み込み。
     0200    ユーザーによる書き込み。
 .sp .5
-.\"O     0040    Read by group.
-.\"O     0020    Write by group.
     0040    グループによる読み込み。
     0020    グループによる書き込み。
 .sp .5
-.\"O     0004    Read by others.
-.\"O     0002    Write by others.
     0004    他人による読み込み。
     0002    他人による書き込み。
 .fi
 .PP
-.\"O Bits 0100, 0010, and 0001 (the execute bits) are unused by the system.
-.\"O Furthermore,
-.\"O "write"
-.\"O effectively means
-.\"O "alter"
-.\"O for a semaphore set.
-システムはビット 0100, 0010, 0001 (実行ビット) は使用しない。
-さらに、セマフォーの場合には
-"書き込み(write)"
-は実際には
-"変更(alter)"
-を意味する。
+システムはビット 0100, 0010, 0001 (実行ビット) は使用しない。 さらに、セマフォーの場合には "書き込み(write)" は実際には
+"変更(alter)" を意味する。
 .PP
-.\"O The same system header file also defines the following symbolic
-.\"O constants:
 同じヘッダーファイルには以下のシンボルの定義が含まれている:
-.TP 14
-.B IPC_CREAT
-.\"O Create entry if key doesn't exist.
+.TP  14
+\fBIPC_CREAT\fP
 キー(key)が存在しない場合には新たなエントリを作成する。
-.TP
-.B IPC_EXCL
-.\"O Fail if key exists.
+.TP 
+\fBIPC_EXCL\fP
 キー(key)が存在する場合には失敗する。
-.TP
-.B IPC_NOWAIT
-.\"O Error if request must wait.
+.TP 
+\fBIPC_NOWAIT\fP
 要求が待たされる場合にはエラーになる。
-.TP
-.B IPC_PRIVATE
-.\"O Private key.
-プライベート・キー。
-.TP
-.B IPC_RMID
-.\"O Remove resource.
+.TP 
+\fBIPC_PRIVATE\fP
+プライベートキー。
+.TP 
+\fBIPC_RMID\fP
 資源を削除する。
-.TP
-.B IPC_SET
-.\"O Set resource options.
+.TP 
+\fBIPC_SET\fP
 資源にオプションを設定する。
-.TP
-.B IPC_STAT
-.\"O Get resource options.
+.TP 
+\fBIPC_STAT\fP
 資源のオプションを取得する。
 .PP
-.\"O Note that
-.\"O .B IPC_PRIVATE
-.\"O is a
-.\"O .I key_t
-.\"O type, while all the other symbolic constants are flag fields and can
-.\"O be OR'ed into an
-.\"O .I int
-.\"O type variable.
-.B IPC_PRIVATE
-は
-.I key_t
-型である。その他の全てのシンボルはフラグ・フィールドとして
-.I int
-変数に OR 演算で格納することができる。
-.\"O .SS Message Queues
-.SS メッセージ・キュー
-.\"O A message queue is uniquely identified by a positive integer
-.\"O .RI "(its " msqid )
-.\"O and has an associated data structure of type
-.\"O .IR "struct msqid_ds" ,
-.\"O defined in
-.\"O .IR <sys/msg.h> ,
-.\"O containing the following members:
-メッセージ・キューは正の整数
-.RI "(" msqid )
-によって識別され、
-.I <sys/msg.h>
-に定義されている構造体
-.IR "struct msqid_ds"
-に結びつけられている。
-この構造体は以下のメンバーを含んでいる:
+\fBIPC_PRIVATE\fP は \fIkey_t\fP 型である。その他の全てのシンボルはフラグフィールドとして \fIint\fP 変数に OR
+演算で格納することができる。
+.SS メッセージキュー
+メッセージキューは正の整数 (\fImsqid\fP)  によって識別され、 \fI<sys/msg.h>\fP に定義されている構造体
+\fIstruct msqid_ds\fP に結びつけられている。 この構造体は以下のメンバーを含んでいる:
 .in +4n
 .nf
 
 struct msqid_ds {
     struct ipc_perm msg_perm;
-.\"O     msgqnum_t       msg_qnum;    /* no of messages on queue */
-.\"O     msglen_t        msg_qbytes;  /* bytes max on a queue */
-.\"O     pid_t           msg_lspid;   /* PID of last msgsnd(2) call */
-.\"O     pid_t           msg_lrpid;   /* PID of last msgrcv(2) call */
-.\"O     time_t          msg_stime;   /* last msgsnd(2) time */
-.\"O     time_t          msg_rtime;   /* last msgrcv(2) time */
-.\"O     time_t          msg_ctime;   /* last change time */
     msgqnum_t       msg_qnum;    /* キューにあるメッセージの数 */
     msglen_t        msg_qbytes;  /* キューの最大バイト数 */
     pid_t           msg_lspid;   /* 最後に msgsnd(2) をした PID */
@@ -227,208 +120,94 @@ struct msqid_ds {
 };
 .fi
 .in
-.TP 11
-.I msg_perm
-.\"O .I ipc_perm
-.\"O structure that specifies the access permissions on the message
-.\"O queue.
-メッセージ・キューへのアクセス許可を指定する
-.I ipc_perm
-構造体。
-.TP
-.I msg_qnum
-.\"O Number of messages currently on the message queue.
-現在、このメッセージ・キューにあるメッセージの数。
-.TP
-.I msg_qbytes
-.\"O Maximum number of bytes of message text allowed on the message
-.\"O queue.
-メッセージ・キューに入れることができるメッセージの最大バイト数。
-.TP
-.I msg_lspid
-.\"O ID of the process that performed the last
-.\"O .BR msgsnd (2)
-.\"O system call.
-最後に
-.BR msgsnd (2)
-システム・コールを行なったプロセスの ID。
-.TP
-.I msg_lrpid
-.\"O ID of the process that performed the last
-.\"O .BR msgrcv (2)
-.\"O system call.
-最後に
-.BR msgrcv (2)
-システム・コールを行なったプロセスの ID。
-.TP
-.I msg_stime
-.\"O Time of the last
-.\"O .BR msgsnd (2)
-.\"O system call.
-最後に
-.BR msgsnd (2)
-システム・コールを行なった時間。
-.I msg_rtime
-.\"O Time of the last
-.\"O .BR msgrcv (2)
-.\"O system call.
-最後に
-.BR msgrcv (2)
-を行なった時間。
-.TP
-.I msg_ctime
-.\"O Time of the last
-.\"O system call that changed a member of the
-.\"O .I msqid_ds
-.\"O structure.
-最後に
-.I msqid_ds
-構造体のメンバーが変更された時間。
-.\"O .SS Semaphore Sets
+.TP  11
+\fImsg_perm\fP
+メッセージキューへのアクセス許可を指定する \fIipc_perm\fP 構造体。
+.TP 
+\fImsg_qnum\fP
+現在、このメッセージキューにあるメッセージの数。
+.TP 
+\fImsg_qbytes\fP
+メッセージキューに入れることができるメッセージの最大バイト数。
+.TP 
+\fImsg_lspid\fP
+最後に \fBmsgsnd\fP(2)  システムコールを行なったプロセスの ID。
+.TP 
+\fImsg_lrpid\fP
+最後に \fBmsgrcv\fP(2)  システムコールを行なったプロセスの ID。
+.TP 
+\fImsg_stime\fP
+最後に \fBmsgsnd\fP(2)  システムコールを行なった時間。
+.TP 
+\fImsg_rtime\fP
+最後に \fBmsgrcv\fP(2)  を行なった時間。
+.TP 
+\fImsg_ctime\fP
+最後に \fImsqid_ds\fP 構造体のメンバーが変更された時間。
 .SS セマフォー集合
-.\"O A semaphore set is uniquely identified by a positive integer
-.\"O .RI "(its " semid )
-.\"O and has an associated data structure of type
-.\"O .IR "struct semid_ds" ,
-.\"O defined in
-.\"O .IR <sys/sem.h> ,
-.\"O containing the following members:
-セマフォー集合は正の整数
-.RI "(" semid )
-によって識別され、
-.I <sys/sem.h>
-に定義されている構造体
-.IR "struct semid_ds"
-に結びつけられている。
-この構造体は以下のメンバーを含んでいる:
+セマフォー集合は正の整数 (\fIsemid\fP)  によって識別され、 \fI<sys/sem.h>\fP に定義されている構造体
+\fIstruct semid_ds\fP に結びつけられている。 この構造体は以下のメンバーを含んでいる:
 .in +4n
 .nf
 
 struct semid_ds {
     struct ipc_perm sem_perm;
-.\"O     time_t          sem_otime;   /* last operation time */
-.\"O     time_t          sem_ctime;   /* last change time */
-.\"O     unsigned long   sem_nsems;   /* count of sems in set */
     time_t          sem_otime;   /* 最後に操作した時間 */
     time_t          sem_ctime;   /* 最後に変更した時間 */
     unsigned long   sem_nsems;   /* 集合の中にあるセマフォー数 */
 };
 .fi
 .in
-.TP 11
-.I sem_perm
-.\"O .I ipc_perm
-.\"O structure that specifies the access permissions on the semaphore
-.\"O set.
-セマフォー集合へのアクセス許可を指定する
-.I ipc_perm
-構造体。
-.TP
-.I sem_otime
-.\"O Time of last
-.\"O .BR semop (2)
-.\"O system call.
-最後に
-.BR semop (2)
-システム・コールを行なった時間。
-.TP
-.I sem_ctime
-.\"O Time of last
-.\"O .BR semctl (2)
-.\"O system call that changed a member of the above structure or of one
-.\"O semaphore belonging to the set.
-最後に
-.BR semctl (2)
-を行なって上記の構造体のメンバーを変更するか、セマフォー集合に属する
-セマフォーを変更した時間。
-.TP
-.I sem_nsems
-.\"O Number of semaphores in the set.
-.\"O Each semaphore of the set is referenced by a nonnegative integer
-.\"O ranging from
-.\"O .B 0
-.\"O to
-.\"O .IR sem_nsems\-1 .
-セマフォー集合の中にあるセマフォーの数。
-集合の中にあるそれぞれのセマフォーは負でない整数によって参照され、
-.B 0
-から
-.I sem_nsems\-1
-までの番号を持つ。
+.TP  11
+\fIsem_perm\fP
+セマフォー集合へのアクセス許可を指定する \fIipc_perm\fP 構造体。
+.TP 
+\fIsem_otime\fP
+最後に \fBsemop\fP(2)  システムコールを行なった時間。
+.TP 
+\fIsem_ctime\fP
+最後に \fBsemctl\fP(2)  を行なって上記の構造体のメンバーを変更するか、セマフォー集合に属する セマフォーを変更した時間。
+.TP 
+\fIsem_nsems\fP
+セマフォー集合の中にあるセマフォーの数。 集合の中にあるそれぞれのセマフォーは負でない整数によって参照され、 \fB0\fP から
+\fIsem_nsems\-1\fP までの番号を持つ。
 .PP
-.\"O A semaphore is a data structure of type
-.\"O .I "struct sem"
-.\"O containing the following members:
-セマフォーは
-.I "struct sem"
-型のデータ構造体であり、以下のメンバーを含んでいる:
+セマフォーは \fIstruct sem\fP 型のデータ構造体であり、以下のメンバーを含んでいる:
 .in +4n
 .nf
 
+.\"    unsigned short semncnt; /* nr awaiting semval to increase */
+.\"    unsigned short semzcnt; /* nr awaiting semval = 0 */
 struct sem {
-.\"O     int semval;  /* semaphore value */
-.\"O     int sempid;  /* PID for last operation */
-.\"O .\"    unsigned short semncnt; /* nr awaiting semval to increase */
-.\"O .\"    unsigned short semzcnt; /* nr awaiting semval = 0 */
     int semval;  /* セマフォーの値 */
     int sempid;  /* 最後に操作したプロセス ID */
-.\"    unsigned short semncnt; /* semval の増加を待つ数 */
-.\"    unsigned short semzcnt; /* semval = 0 を待つ数 */
 };
 .fi
 .in
-.TP 11
-.I semval
-.\"O Semaphore value: a nonnegative integer.
+.TP  11
+\fIsemval\fP
 セマフォー値: 負でない整数。
-.TP
-.I sempid
-.\"O ID of the last process that performed a semaphore operation
-.\"O on this semaphore.
-このセマフォーを最後に操作したプロセスの ID。
+.TP 
+\fIsempid\fP
 .\".TP
 .\".I semncnt
-.\"O .\"Number of processes suspended awaiting for
-.\"O .\".I semval
-.\"O .\"to increase.
+.\"Number of processes suspended awaiting for
 .\".I semval
-.\"の値が増加するを待って停止しているプロセスの数。
+.\"to increase.
 .\".TP
 .\".I semznt
-.\"O .\"Number of processes suspended awaiting for
-.\"O .\".I semval
-.\"O .\"to become zero.
+.\"Number of processes suspended awaiting for
 .\".I semval
-.\"が 0 になるのを待って停止しているプロセスの数。
-.\"O .SS Shared Memory Segments
-.SS 共有メモリ・セグメント
-.\"O A shared memory segment is uniquely identified by a positive integer
-.\"O .RI "(its " shmid )
-.\"O and has an associated data structure of type
-.\"O .IR "struct shmid_ds" ,
-.\"O defined in
-.\"O .IR <sys/shm.h> ,
-.\"O containing the following members:
-共有メモリ・セグメトは正の整数
-.RI "(" shmid )
-によって識別され、
-.I <sys/shm.h>
-に定義されている
-.IR "struct shmid_ds"
-構造体に結びつけられている。
-この構造体は以下のメンバーを含んでいる:
+.\"to become zero.
+このセマフォーを最後に操作したプロセスの ID。
+.SS 共有メモリセグメント
+共有メモリセグメントは正の整数 (\fIshmid\fP)  によって識別され、 \fI<sys/shm.h>\fP に定義されている
+\fIstruct shmid_ds\fP 構造体に結びつけられている。 この構造体は以下のメンバーを含んでいる:
 .in +4n
 .nf
 
 struct shmid_ds {
     struct ipc_perm shm_perm;
-.\"O     size_t          shm_segsz;   /* size of segment */
-.\"O     pid_t           shm_cpid;    /* PID of creator */
-.\"O     pid_t           shm_lpid;    /* PID, last operation */
-.\"O     shmatt_t        shm_nattch;  /* no. of current attaches */
-.\"O     time_t          shm_atime;   /* time of last attach */
-.\"O     time_t          shm_dtime;   /* time of last detach */
-.\"O     time_t          shm_ctime;   /* time of last change */
     size_t          shm_segsz;   /* セグメントのサイズ */
     pid_t           shm_cpid;    /* 作成者のプロセス ID */
     pid_t           shm_lpid;    /* 最後に操作したプロセス ID */
@@ -439,78 +218,31 @@ struct shmid_ds {
 };
 .fi
 .in
-.TP 11
-.I shm_perm
-.\"O .I ipc_perm
-.\"O structure that specifies the access permissions on the shared memory
-.\"O segment.
-共有メモリ・セグメントへのアクセス許可を指定した
-.I ipc_perm
-構造体。
-.TP
-.I shm_segsz
-.\"O .I shm_segsz
-.\"O Size in bytes of the shared memory segment.
-共有メモリ・セグメントのバイト数。
-.TP
-.I shm_cpid
-.\"O ID of the process that created the shared memory segment.
-共有メモリ・セグメントを作成したプロセスの ID。
-.TP
-.I shm_lpid
-.\"O ID of the last process that executed a
-.\"O .BR shmat (2)
-.\"O or
-.\"O .BR shmdt (2)
-.\"O system call.
-最後に
-.BR shmat (2)
-または
-.BR shmdt (2)
-システム・コールを実行したプロセスの ID。
-.TP
-.I shm_nattch
-.\"O Number of current alive attaches for this shared memory segment.
-この共有メモリ・セグメントをメモリに付加 (attach) しているプロセスの数。
-.TP
-.I shm_atime
-.\"O Time of the last
-.\"O .BR shmat (2)
-.\"O system call.
-最後に
-.BR shmat (2)
-システム・コールを行なった時間。
-.TP
-.I shm_dtime
-.\"O Time of the last
-.\"O .BR shmdt (2)
-.\"O system call.
-最後に
-.BR shmdt (2)
-システム・コールを行なった時間。
-.TP
-.I shm_ctime
-.\"O Time of the last
-.\"O .BR shmctl (2)
-.\"O system call that changed
-.\"O .IR shmid_ds .
-最後に
-.BR shmctl (2)
-システム・コールを行なって、
-.I shmid_ds
-構造体を変更した時間。
-.\"O .SH "SEE ALSO"
+.TP  11
+\fIshm_perm\fP
+共有メモリセグメントへのアクセス許可を指定した \fIipc_perm\fP 構造体。
+.TP 
+\fIshm_segsz\fP
+共有メモリセグメントのバイト数。
+.TP 
+\fIshm_cpid\fP
+共有メモリセグメントを作成したプロセスの ID。
+.TP 
+\fIshm_lpid\fP
+最後に \fBshmat\fP(2)  または \fBshmdt\fP(2)  システムコールを実行したプロセスの ID。
+.TP 
+\fIshm_nattch\fP
+この共有メモリセグメントをメモリに付加 (attach) しているプロセスの数。
+.TP 
+\fIshm_atime\fP
+最後に \fBshmat\fP(2)  システムコールを行なった時間。
+.TP 
+\fIshm_dtime\fP
+最後に \fBshmdt\fP(2)  システムコールを行なった時間。
+.TP 
+\fIshm_ctime\fP
+最後に \fBshmctl\fP(2)  システムコールを行なって、 \fIshmid_ds\fP 構造体を変更した時間。
 .SH 関連項目
-.BR ipc (2),
-.BR msgctl (2),
-.BR msgget (2),
-.BR msgrcv (2),
-.BR msgsnd (2),
-.BR semctl (2),
-.BR semget (2),
-.BR semop (2),
-.BR shmat (2),
-.BR shmctl (2),
-.BR shmdt (2),
-.BR shmget (2),
-.BR ftok (3)
+\fBipc\fP(2), \fBmsgctl\fP(2), \fBmsgget\fP(2), \fBmsgrcv\fP(2), \fBmsgsnd\fP(2),
+\fBsemctl\fP(2), \fBsemget\fP(2), \fBsemop\fP(2), \fBshmat\fP(2), \fBshmctl\fP(2),
+\fBshmdt\fP(2), \fBshmget\fP(2), \fBftok\fP(3)
index a8ee5ca..b0f6a26 100644 (file)
 .\"     be more or less up to date and complete as at Linux 2.6.27
 .\"     (other than the remaining FIXMEs in the page source below).
 .\"
-.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
-.\" Translated 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated 2002-11-15, NAKANO Takeo
-.\" Updated 2005-02-21, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" Updated 2005-09-07, Akihiro MOTOKI
-.\" Updated 2005-12-26, Akihiro MOTOKI
-.\" Updated 2006-07-19, Akihiro MOTOKI, LDP v2.36
-.\" Updated 2008-08-07, Akihiro MOTOKI, LDP v3.05
-.\" Updated 2008-12-31, Akihiro MOTOKI, LDP v3.15
-.\" Updated 2009-03-01, Akihiro MOTOKI, LDP v3.19
+.\"*******************************************************************
 .\"
-.\"WORD         full duplex connection  全二重通信
-.\"WORD         listening state         接続待ち受け状態
-.\"WORD         denial of service attack       DoS 攻撃
-.\"WORD         urgent data             緊急データ
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH TCP  7 2009-09-30 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O tcp \- TCP protocol
+.\"*******************************************************************
+.TH TCP 7 2012\-03\-20 Linux "Linux Programmer's Manual"
 .SH 名前
 tcp \- TCP プロトコル
-.\"O .SH SYNOPSIS
 .SH 書式
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .br
-.B #include <netinet/in.h>
+\fB#include <netinet/in.h>\fP
 .br
-.B #include <netinet/tcp.h>
+\fB#include <netinet/tcp.h>\fP
 .sp
-.B tcp_socket = socket(AF_INET, SOCK_STREAM, 0);
-.\"O .SH DESCRIPTION
+\fBtcp_socket = socket(AF_INET, SOCK_STREAM, 0);\fP
 .SH 説明
-.\"O This is an implementation of the TCP protocol defined in
-.\"O RFC\ 793, RFC\ 1122 and RFC\ 2001 with the NewReno and SACK
-.\"O extensions.
-.\"O It provides a reliable, stream-oriented,
-.\"O full-duplex connection between two sockets on top of
-.\"O .BR ip (7),
-.\"O for both v4 and v6 versions.
-.\"O TCP guarantees that the data arrives in order and
-.\"O retransmits lost packets.
-.\"O It generates and checks a per-packet checksum to catch
-.\"O transmission errors.
-.\"O TCP does not preserve record boundaries.
-これは RFC\ 793, RFC\ 1122, RFC\ 2001 で定義されている TCP プロトコルを
-NewReno 拡張と SACK 拡張を含めて実装したものである。
-TCP は、
-.BR ip (7)
-上の二つのソケット間に、信頼性の高い、ストリーム指向の全二重
-(full-duplex) 通信を提供する。
-v4 と v6 の両方のバージョンの
-.BR ip (7)
-に対応している。
-TCP は、データが順序を守って到着すること、途中で失われたパケットが
-再送されることを保証する。また、パケット単位にチェックサムを
-生成、検査することで、転送エラーを検知する。
-TCP はレコード境界 (record boundary) を保存しない。
+これは RFC\ 793, RFC\ 1122, RFC\ 2001 で定義されている TCP プロトコルを NewReno 拡張と SACK
+拡張を含めて実装したものである。 TCP は、 \fBip\fP(7)  上の二つのソケット間に、信頼性の高い、ストリーム指向の全二重
+(full\-duplex) 通信を提供する。 v4 と v6 の両方のバージョンの \fBip\fP(7)  に対応している。 TCP
+は、データが順序を守って到着すること、途中で失われたパケットが 再送されることを保証する。また、パケット単位にチェックサムを
+生成、検査することで、転送エラーを検知する。 TCP はレコード境界 (record boundary) を保存しない。
 
-.\"O A newly created TCP socket has no remote or local address and is not
-.\"O fully specified.
-.\"O To create an outgoing TCP connection use
-.\"O .BR connect (2)
-.\"O to establish a connection to another TCP socket.
-.\"O To receive new incoming connections, first
-.\"O .BR bind (2)
-.\"O the socket to a local address and port and then call
-.\"O .BR listen (2)
-.\"O to put the socket into the listening state.
-.\"O After that a new socket for each incoming connection can be accepted using
-.\"O .BR accept (2).
-.\"O A socket which has had
-.\"O .BR accept (2)
-.\"O or
-.\"O .BR connect (2)
-.\"O successfully called on it is fully specified and may transmit data.
-.\"O Data cannot be transmitted on listening or not yet connected sockets.
-新しく生成されたばかりの TCP ソケットは、
-リモートアドレスかローカルアドレスがなく、
-したがって詳細が完全に指定された状態ではない。
-外部への TCP 接続を生成するには、
-.BR connect (2)
-を用いてもう一方の TCP ソケットへの接続を確立する。
-外部からの新たな接続を受けるには、まず
-.BR bind (2)
-でソケットをローカルなアドレスとポートに結びつけ、次に
-.BR listen (2)
-を呼んでソケットを接続待ち受け状態にする。
-その後、到着した接続要求に対して
-.BR accept (2)
-を用い、ソケットを新しく生成する。
-.BR accept (2)
-または
-.BR connect (2)
-のコールが成功したソケットは、詳細が完全に指定された状態となり、
-データのやりとりが可能となる。接続待ち受け状態の (listening) ソケットや、
-接続 (connect) されていないソケットを通してデータをやりとりすることはできない。
+新しく生成されたばかりの TCP ソケットは、 リモートアドレスかローカルアドレスがなく、 したがって詳細が完全に指定された状態ではない。 外部への
+TCP 接続を生成するには、 \fBconnect\fP(2)  を用いてもう一方の TCP ソケットへの接続を確立する。
+外部からの新たな接続を受けるには、まず \fBbind\fP(2)  でソケットをローカルなアドレスとポートに結びつけ、次に \fBlisten\fP(2)
+を呼んでソケットを接続待ち受け状態にする。 その後、到着した接続要求に対して \fBaccept\fP(2)  を用い、ソケットを新しく生成する。
+\fBaccept\fP(2)  または \fBconnect\fP(2)  のコールが成功したソケットは、詳細が完全に指定された状態となり、
+データのやりとりが可能となる。接続待ち受け状態の (listening) ソケットや、 接続 (connect)
+されていないソケットを通してデータをやりとりすることはできない。
 
-.\"O Linux supports RFC\ 1323 TCP high performance
-.\"O extensions.
-.\"O These include Protection Against Wrapped
-.\"O Sequence Numbers (PAWS), Window Scaling and Timestamps.
-.\"O Window scaling allows the use
-.\"O of large (> 64K) TCP windows in order to support links with high
-.\"O latency or bandwidth.
-.\"O To make use of them, the send and receive buffer sizes must be increased.
-.\"O They can be set globally with the
-.\"O .I /proc/sys/net/ipv4/tcp_wmem
-.\"O and
-.\"O .I /proc/sys/net/ipv4/tcp_rmem
-.\"O files, or on individual sockets by using the
-.\"O .B SO_SNDBUF
-.\"O and
-.\"O .B SO_RCVBUF
-.\"O socket options with the
-.\"O .BR setsockopt (2)
-.\"O call.
-Linux は RFC\ 1323 の TCP high performance 拡張をサポートしている。
-これには、Protection Against Wrapped Sequence Numbers (PAWS)、
-ウィンドウスケーリング、タイムスタンプなどが含まれている。
-ウィンドウスケーリングを利用すると、遅延または帯域の大きな接続で、
-(64K 以上の) 巨大な TCP ウィンドウを用いることが可能となる。
-これを用いるには、送受信のバッファサイズを大きくしなければならない。
-システム全体に対するバッファサイズの変更は、ファイル
-.I /proc/sys/net/ipv4/tcp_wmem
-と
-.I /proc/sys/net/ipv4/tcp_rmem
-を用いて行うことができる。
-また、個々のソケットのみを大きくしたい場合には、
-.B SO_SNDBUF
-や
-.B SO_RCVBUF
-ソケットオプションを用いて
-.BR setsockopt (2)
-コールを用いて設定すればよい。
+Linux は RFC\ 1323 の TCP high performance 拡張をサポートしている。 これには、Protection
+Against Wrapped Sequence Numbers (PAWS)、 ウィンドウスケーリング、タイムスタンプなどが含まれている。
+ウィンドウスケーリングを利用すると、遅延または帯域の大きな接続で、 (64K 以上の) 巨大な TCP ウィンドウを用いることが可能となる。
+これを用いるには、送受信のバッファサイズを大きくしなければならない。 システム全体に対するバッファサイズの変更は、ファイル
+\fI/proc/sys/net/ipv4/tcp_wmem\fP と \fI/proc/sys/net/ipv4/tcp_rmem\fP
+を用いて行うことができる。 また、個々のソケットのみを大きくしたい場合には、 \fBSO_SNDBUF\fP や \fBSO_RCVBUF\fP
+ソケットオプションを用いて \fBsetsockopt\fP(2)  コールを用いて設定すればよい。
 
-.\"O The maximum sizes for socket buffers declared via the
-.\"O .B SO_SNDBUF
-.\"O and
-.\"O .B SO_RCVBUF
-.\"O mechanisms are limited by the values in the
-.\"O .I /proc/sys/net/core/rmem_max
-.\"O and
-.\"O .I /proc/sys/net/core/wmem_max
-.\"O files.
-.B SO_SNDBUF
-や
-.B SO_RCVBUF
-のメカニズムで宣言されるソケットバッファの最大サイズは、ファイル
-.I /proc/sys/net/core/rmem_max
-や
-.I /proc/sys/net/core/wmem_max
-で指定されたシステムとしての制限値を超えることはできない。
-.\"O Note that TCP actually allocates twice the size of
-.\"O the buffer requested in the
-.\"O .BR setsockopt (2)
-.\"O call, and so a succeeding
-.\"O .BR getsockopt (2)
-.\"O call will not return the same size of buffer as requested in the
-.\"O .BR setsockopt (2)
-.\"O call.
-TCP は実際には
-.BR setsockopt (2)
-コールが要求したバッファサイズの二倍を割り当てる。
-そのため、この後で
-.BR getsockopt (2)
-コールを行うと、
-.BR setsockopt (2)
-で要求したバッファサイズとは異なる値が返る。
-.\"O TCP uses the extra space for administrative purposes and internal
-.\"O kernel structures, and the
-.\"O .I /proc
-.\"O file values reflect the
-.\"O larger sizes compared to the actual TCP windows.
-TCP はこの余分な空間を、管理目的やカーネル内部の構造体に用いている。
-.I /proc
-ファイルの値は、これらを反映し、実際の TCP ウィンドウよりも大きな値となる。
-.\"O On individual connections, the socket buffer size must be set prior to the
-.\"O .BR listen (2)
-.\"O or
-.\"O .BR connect (2)
-.\"O calls in order to have it take effect.
-.\"O See
-.\"O .BR socket (7)
-.\"O for more information.
-各接続におけるソケットのバッファサイズ変更を有効にするには、
-.BR listen (2)
-や
-.BR connect (2)
-コールの前に設定しなければならない。
-より詳しい情報は
-.BR socket (7)
-を見よ。
+\fBSO_SNDBUF\fP や \fBSO_RCVBUF\fP のメカニズムで宣言されるソケットバッファの最大サイズは、ファイル
+\fI/proc/sys/net/core/rmem_max\fP や \fI/proc/sys/net/core/wmem_max\fP
+で指定されたシステムとしての制限値を超えることはできない。 TCP は実際には \fBsetsockopt\fP(2)
+コールが要求したバッファサイズの二倍を割り当てる。 そのため、この後で \fBgetsockopt\fP(2)  コールを行うと、
+\fBsetsockopt\fP(2)  で要求したバッファサイズとは異なる値が返る。 TCP
+はこの余分な空間を、管理目的やカーネル内部の構造体に用いている。 \fI/proc\fP ファイルの値は、これらを反映し、実際の TCP
+ウィンドウよりも大きな値となる。 各接続におけるソケットのバッファサイズ変更を有効にするには、 \fBlisten\fP(2)  や
+\fBconnect\fP(2)  コールの前に設定しなければならない。 より詳しい情報は \fBsocket\fP(7)  を見よ。
 .PP
-.\"O TCP supports urgent data.
-.\"O Urgent data is used to signal the
-.\"O receiver that some important message is part of the data
-.\"O stream and that it should be processed as soon as possible.
-.\"O To send urgent data specify the
-.\"O .B MSG_OOB
-.\"O option to
-.\"O .BR send (2).
-TCP は緊急データ (urgent data) をサポートしている。緊急データは
-何らかの重要なメッセージがデータストリームに含まれていること、
-そのデータをできるだけ早く処理すべきこと、を受信者に伝えるために用いられる。
-緊急データを送るには、
-.BR send (2)
-に
-.B MSG_OOB
-オプションを指定する。
-.\"O When urgent data is received, the kernel sends a
-.\"O .B SIGURG
-.\"O signal to the process or process group that has been set as the
-.\"O socket "owner" using the
-.\"O .B SIOCSPGRP
-.\"O or
-.\"O .B FIOSETOWN
-.\"O ioctls (or the POSIX.1-2001-specified
-.\"O .BR fcntl (2)
-.\"O .B F_SETOWN
-.\"O operation).
-.\"O When the
-.\"O .B SO_OOBINLINE
-.\"O socket option is enabled, urgent data is put into the normal
-.\"O data stream (a program can test for its location using the
-.\"O .B SIOCATMARK
-.\"O ioctl described below),
-.\"O otherwise it can be only received when the
-.\"O .B MSG_OOB
-.\"O flag is set for
-.\"O .BR recv (2)
-.\"O or
-.\"O .BR recvmsg (2).
-緊急データを受信すると、カーネルは
-.B SIGURG
-シグナルを送信する。送信先は
-.B SIOCSPGRP
-や
-.B FIOSETOWN
-ioctl (や POSIX.1-2001 で規定されている
-.BR fcntl (2)
-.B F_SETOWN
-操作) を用いてそのソケットの「所有者」として設定された
-プロセスかプロセスグループである。
-.B SO_OOBINLINE
-ソケットオプションが有効になっていると、緊急データは
-通常のデータストリームの中に混ぜて送られる (プログラムは下記の
-.B SIOCATMARK
-ioctl を使って緊急データの場所を調べることができる)。
-無効になっている場合には、
-.BR recv (2)
-や
-.BR recvmsg (2)
-で
-.B MSG_OOB
-フラグがセットされているときにのみ、緊急データを受信できる。
+TCP は緊急データ (urgent data) をサポートしている。緊急データは 何らかの重要なメッセージがデータストリームに含まれていること、
+そのデータをできるだけ早く処理すべきこと、を受信者に伝えるために用いられる。 緊急データを送るには、 \fBsend\fP(2)  に \fBMSG_OOB\fP
+オプションを指定する。 緊急データを受信すると、カーネルは \fBSIGURG\fP シグナルを送信する。送信先は \fBSIOCSPGRP\fP や
+\fBFIOSETOWN\fP ioctl (や POSIX.1\-2001 で規定されている \fBfcntl\fP(2)  \fBF_SETOWN\fP 操作)
+を用いてそのソケットの「所有者」として設定された プロセスかプロセスグループである。 \fBSO_OOBINLINE\fP
+ソケットオプションが有効になっていると、緊急データは 通常のデータストリームの中に混ぜて送られる (プログラムは下記の \fBSIOCATMARK\fP
+ioctl を使って緊急データの場所を調べることができる)。 無効になっている場合には、 \fBrecv\fP(2)  や \fBrecvmsg\fP(2)  で
+\fBMSG_OOB\fP フラグがセットされているときにのみ、緊急データを受信できる。
 
-.\"O Linux 2.4 introduced a number of changes for improved
-.\"O throughput and scaling, as well as enhanced functionality.
-.\"O Some of these features include support for zero-copy
-.\"O .BR sendfile (2),
-.\"O Explicit Congestion Notification, new
-.\"O management of TIME_WAIT sockets, keep-alive socket options
-.\"O and support for Duplicate SACK extensions.
-Linux 2.4 では多くの変更がなされ、
-スループットとスケーリングが向上し、機能も高まった。
-これらの機能には、ゼロコピー
-.BR sendfile (2)、
-Explicit Congestion Notification、
-TIME_WAIT ソケットの新しい管理法、
-keep-alive ソケットオプション、
-Duplicate SACK 拡張のサポートなどがある。
-.\"O .SS Address Formats
+Linux 2.4 では多くの変更がなされ、 スループットとスケーリングが向上し、機能も高まった。 これらの機能には、ゼロコピー
+\fBsendfile\fP(2)、 Explicit Congestion Notification、 TIME_WAIT ソケットの新しい管理法、
+keep\-alive ソケットオプション、 Duplicate SACK 拡張のサポートなどがある。
 .SS アドレスのフォーマット
-.\"O TCP is built on top of IP (see
-.\"O .BR ip (7)).
-.\"O The address formats defined by
-.\"O .BR ip (7)
-.\"O apply to TCP.
-.\"O TCP only supports point-to-point
-.\"O communication; broadcasting and multicasting are not
-.\"O supported.
-TCP は IP の上層に構築されている
-.RB ( ip (7)
-を参照)。
-.BR ip (7)
-に定義されているアドレスフォーマットは TCP にも適用される。
-TCP は point-to-point の通信だけをサポートする。
-ブロードキャストやマルチキャストはサポートしない。
-.\"O .SS /proc interfaces
-.SS /proc インタフェース
-.\"O System-wide TCP parameter settings can be accessed by files in the directory
-.\"O .IR /proc/sys/net/ipv4/ .
-.\"O In addition, most IP
-.\"O .I /proc
-.\"O interfaces also apply to TCP; see
-.\"O .BR ip (7).
-システム全体に対する TCP パラメータの設定には、
-.I /proc/sys/net/ipv4/
-ディレクトリ内のファイルによりアクセスできる。
-さらに、IP に関連する
-.I /proc
-インタフェースのほとんどは TCP についても適用される。
-.BR ip (7)
-を参照のこと。
-.\"O .I Boolean
-.\"O take an integer value, with a nonzero value ("true") meaning that
-.\"O the corresponding option is enabled, and a zero value ("false")
-.\"O meaning that the option is disabled.
-.I Boolean
-は整数値で、
-0 以外の値 ("true") は対応するオプションが有効、
-0 値 ("false") は無効、であることを意味する。
-.TP
-.\"O .IR tcp_abc " (Integer; default: 0; since Linux 2.6.15)"
-.IR tcp_abc " (Integer; default: 0; Linux 2.6.15 以降)"
+TCP は IP の上層に構築されている (\fBip\fP(7)  を参照)。 \fBip\fP(7)  に定義されているアドレスフォーマットは TCP
+にも適用される。 TCP は point\-to\-point の通信だけをサポートする。 ブロードキャストやマルチキャストはサポートしない。
+.SS "/proc インタフェース"
+システム全体に対する TCP パラメータの設定には、 \fI/proc/sys/net/ipv4/\fP ディレクトリ内のファイルによりアクセスできる。
+さらに、IP に関連する \fI/proc\fP インタフェースのほとんどは TCP についても適用される。 \fBip\fP(7)  を参照のこと。
+\fIBoolean\fP は整数値で、 0 以外の値 ("true") は対応するオプションが有効、 0 値 ("false")
+は無効、であることを意味する。
+.TP 
+\fItcp_abc\fP (Integer; default: 0; Linux 2.6.15 以降)
 .\" The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
-.\"O Control the Appropriate Byte Count (ABC), defined in RFC 3465.
-.\"O ABC is a way of increasing the congestion window
-.\"O .RI ( cwnd )
-.\"O more slowly in response to partial acknowledgments.
-RFC 3465 で定義されている Appropriate Byte Count (ABC) を制御する。
-ABC は、部分的な ACK に応じた輻輳ウィンドウ
-.RI ( cwnd )
-の増加をより緩やかにする方法である。
-.\"O Possible values are:
-以下の値を指定できる。
+RFC 3465 で定義されている Appropriate Byte Count (ABC) を制御する。 ABC は、部分的な ACK
+に応じた輻輳ウィンドウ (\fIcwnd\fP)  の増加をより緩やかにする方法である。 以下の値を指定できる。
 .RS
 .IP 0 3
-.\"O increase
-.\"O .I cwnd
-.\"O once per acknowledgment (no ABC)
-ACK を受信する毎に
-.I cwnd
-を増やす (ABC なし)。
+ACK を受信する毎に \fIcwnd\fP を増やす (ABC なし)。
 .IP 1
-.\"O increase
-.\"O .I cwnd
-.\"O once per acknowledgment of full sized segment
-フルサイズのセグメントの ACK を受信する毎に
-.I cwnd
-を増やす。
+フルサイズのセグメントの ACK を受信する毎に \fIcwnd\fP を増やす。
 .IP 2
-.\"O allow increase
-.\"O .I cwnd
-.\"O by two if acknowledgment is
-.\"O of two segments to compensate for delayed acknowledgments.
-ACK が遅延 ACK (delayed acknowledgment) を相殺するための 2 セグメントに
-対する ACK の場合に、
-.I cwnd
+ACK が遅延 ACK (delayed acknowledgment) を相殺するための 2 セグメントに 対する ACK の場合に、 \fIcwnd\fP
 を 2 増やすことができる。
 .RE
-.TP
-.\"O .IR tcp_abort_on_overflow " (Boolean; default: disabled; since Linux 2.4)"
-.IR tcp_abort_on_overflow " (Boolean; default: disabled; Linux 2.4 以降)"
+.TP 
+\fItcp_abort_on_overflow\fP (Boolean; default: disabled; Linux 2.4 以降)
 .\" Since 2.3.41
-.\"O Enable resetting connections if the listening service is too
-.\"O slow and unable to keep up and accept them.
-.\"O It means that if overflow occurred due
-.\"O to a burst, the connection will recover.
-.\"O Enable this option
-.\"O .I only
-.\"O if you are really sure that the listening daemon
-.\"O cannot be tuned to accept connections faster.
-.\"O Enabling this option can harm the clients of your server.
-接続を待ち受けているサービスが遅すぎて、受信についていけない場合に、
-接続をリセットできるようにする。
-これを用いると、バーストによってオーバーフローが起こったときに、
-接続を回復できるようになる。このオプションを用いるのは、
-受信デーモンを高速化できない場合に「限定する」こと。
-このオプションを用いると、そのサーバに接続しているクライアント
-にとっては害になることがある。
-.TP
-.\"O .IR tcp_adv_win_scale " (integer; default: 2; since Linux 2.4)"
-.IR tcp_adv_win_scale " (integer; default: 2; Linux 2.4 以降)"
+接続を待ち受けているサービスが遅すぎて、受信についていけない場合に、 接続をリセットできるようにする。
+これを用いると、バーストによってオーバーフローが起こったときに、 接続を回復できるようになる。このオプションを用いるのは、
+受信デーモンを高速化できない場合に「限定する」こと。 このオプションを用いると、そのサーバに接続しているクライアント にとっては害になることがある。
+.TP 
+\fItcp_adv_win_scale\fP (integer; default: 2; Linux 2.4 以降)
 .\" Since 2.4.0-test7
-.\"O Count buffering overhead as
-.\"O .IR "bytes/2^tcp_adv_win_scale" ,
-.\"O if
-.\"O .I tcp_adv_win_scale
-.\"O is greater than 0; or
-.\"O .IR "bytes-bytes/2^(\-tcp_adv_win_scale)" ,
-.\"O if
-.\"O .I tcp_adv_win_scale
-.\"O is less than or equal to zero.
-バッファリングのオーバーヘッドの計算方法を、
-.I tcp_adv_win_scale
-が正の場合は
-.I "bytes/2^tcp_adv_win_scale"
-に、
-.I tcp_adv_win_scale
-が負か 0 の場合は
-.I "bytes-bytes/2^(\-tcp_adv_win_scale)"
-とする。
+バッファリングのオーバーヘッドの計算方法を、 \fItcp_adv_win_scale\fP が正の場合は
+\fIbytes/2^tcp_adv_win_scale\fP に、 \fItcp_adv_win_scale\fP が負か 0 の場合は
+\fIbytes\-bytes/2^(\-tcp_adv_win_scale)\fP とする。
 
-.\"O The socket receive buffer space is shared between the
-.\"O application and kernel.
-.\"O TCP maintains part of the buffer as
-.\"O the TCP window, this is the size of the receive window
-.\"O advertised to the other end.
-.\"O The rest of the space is used
-.\"O as the "application" buffer, used to isolate the network
-.\"O from scheduling and application latencies.
-.\"O The
-.\"O .I tcp_adv_win_scale
-.\"O default value of 2 implies that the space
-.\"O used for the application buffer is one fourth that of the total.
-ソケットの受信バッファ空間はアプリケーションとカーネルで共有される。
-TCP はバッファの一部を TCP ウィンドウとして管理し、
-これを受信ウィンドウとして接続の他端に通知する。
-空間の残りは「アプリケーション」バッファとして用いられ、
-スケジューリングやアプリケーションの遅延からネットワークを隔離する。
-.I tcp_adv_win_scale
-のデフォルト値は 2 であり、
+ソケットの受信バッファ空間はアプリケーションとカーネルで共有される。 TCP はバッファの一部を TCP ウィンドウとして管理し、
+これを受信ウィンドウとして接続の他端に通知する。 空間の残りは「アプリケーション」バッファとして用いられ、
+スケジューリングやアプリケーションの遅延からネットワークを隔離する。 \fItcp_adv_win_scale\fP のデフォルト値は 2 であり、
 この場合アプリケーションバッファは全体の 1/4 になる。
-.TP
-.\"O .IR tcp_allowed_congestion_control " (String; default: see text; since Linux 2.4.20)"
-.IR tcp_allowed_congestion_control " (String; default: see text; Linux 2.4.20 以降)"
+.TP 
+\fItcp_allowed_congestion_control\fP (String; default: see text; Linux 2.4.20 以降)
 .\" The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
-.\"O Show/set the congestion control algorithm choices available to unprivileged
-.\"O processes (see the description of the
-.\"O .B TCP_CONGESTION
-.\"O socket option).
-.\"O The list is a subset of those listed in
-.\"O .IR tcp_available_congestion_control .
-非特権プロセスで利用できる輻輳制御アルゴリズムの選択肢を表示/設定する
-.RB ( TCP_CONGESTION
-ソケットオプションの説明を参照のこと)。
-このリストは
-.I tcp_available_congestion_control
-で表示されるリストの部分集合となる。
 .\" FIXME How are the items in this delimited? Null bytes, spaces, commas?
-.\"O The default value for this list is "reno" plus the default setting of
-.\"O .IR tcp_congestion_control .
-このリストのデフォルト値は、"reno" と
-.I tcp_congestion_control
-のデフォルト設定をあわせたものとなる。
-.TP
-.\"O .IR tcp_available_congestion_control " (String; read-only; since Linux 2.4.20)"
-.IR tcp_available_congestion_control " (String; read-only; Linux 2.4.20 以降)"
+非特権プロセスで利用できる輻輳制御アルゴリズムの選択肢を表示/設定する (\fBTCP_CONGESTION\fP ソケットオプションの説明を参照のこと)。
+このリストは \fItcp_available_congestion_control\fP で表示されるリストの部分集合となる。
+このリストのデフォルト値は、"reno" と \fItcp_congestion_control\fP のデフォルト設定をあわせたものとなる。
+.TP 
+\fItcp_available_congestion_control\fP (String; read\-only; Linux 2.4.20 以降)
 .\" The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
-.\"O Show a list of the congestion-control algorithms
-.\"O that are registered.
-登録されている輻輳制御アルゴリズムのリストを表示する。
 .\" FIXME How are the items in this delimited? Null bytes, spaces, commas?
-.\"O This list is a limiting set for the list in
-.\"O .IR tcp_allowed_congestion_control .
-.\"O More congestion-control algorithms may be available as modules,
-.\"O but not loaded.
-このリストに載っているものだけが、
-.I tcp_allowed_congestion_control
-に表示される。
-他の輻輳制御アルゴリズムがモジュールとして利用可能だが、
+登録されている輻輳制御アルゴリズムのリストを表示する。 このリストに載っているものだけが、
+\fItcp_allowed_congestion_control\fP に表示される。 他の輻輳制御アルゴリズムがモジュールとして利用可能だが、
 モジュールがロードされていないこともある。
-.TP
-.\"O .IR tcp_app_win  " (integer; default: 31; since Linux 2.4)"
-.IR tcp_app_win  " (integer; default: 31; Linux 2.4 以降)"
+.TP 
+\fItcp_app_win\fP (integer; default: 31; Linux 2.4 以降)
 .\" Since 2.4.0-test7
-.\"O This variable defines how many
-.\"O bytes of the TCP window are reserved for buffering overhead.
-この変数は、TCP ウィンドウの何バイト分を
-バッファリングのオーバーヘッド用に予約するかを指定する。
+この変数は、TCP ウィンドウの何バイト分を バッファリングのオーバーヘッド用に予約するかを指定する。
 
-.\"O A maximum of (\fIwindow/2^tcp_app_win\fP, mss) bytes in the window
-.\"O are reserved for the application buffer.
-.\"O A value of 0 implies that no amount is reserved.
-そのウィンドウの \fIwindow/2^tcp_app_win\fP と mss の大きいほう (バイト単位)
-がアプリケーションバッファとして予約される。
-0 を指定すると一切予約領域を取らない。
 .\"
 .\" The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
-.TP
-.\"O .IR tcp_base_mss " (Integer; default: 512; since Linux 2.6.17)"
-.IR tcp_base_mss " (Integer; default: 512; Linux 2.6.17 以降)"
-.\"O The initial value of
-.\"O .I search_low
-.\"O to be used by the packetization layer Path MTU discovery (MTU probing).
-.\"O If MTU probing is enabled,
-.\"O this is the initial MSS used by the connection.
-パケット化レイヤの Path MTU discovery (MTU probing) で、
-.I search_low
-の初期値と使用される値。
-MTU probing が有効な場合、この値はその接続の MSS の初期値となる。
+そのウィンドウの \fIwindow/2^tcp_app_win\fP と mss の大きいほう (バイト単位)
+がアプリケーションバッファとして予約される。 0 を指定すると一切予約領域を取らない。
+.TP 
+\fItcp_base_mss\fP (Integer; default: 512; Linux 2.6.17 以降)
 .\"
 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
-.TP
-.\"O .IR tcp_bic " (Boolean; default: disabled; Linux 2.4.27/2.6.6 to 2.6.13)"
-.IR tcp_bic " (Boolean; default: disabled; Linux 2.4.27/2.6.6 から 2.6.13 まで)"
-.\"O Enable BIC TCP congestion control algorithm.
-.\"O BIC-TCP is a sender-side only change that ensures a linear RTT
-.\"O fairness under large windows while offering both scalability and
-.\"O bounded TCP-friendliness.
-.\"O The protocol combines two schemes
-.\"O called additive increase and binary search increase.
-.\"O When the congestion window is large, additive increase with a large
-.\"O increment ensures linear RTT fairness as well as good scalability.
-.\"O Under small congestion windows, binary search
-.\"O increase provides TCP friendliness.
-BIC TCP 輻輳制御アルゴリズムを有効にする。
-BIC-TCP は送信側のみの変更で、
-スケーラビリティと TCP 親和性 (friendliness) の両方を提供しつつ、
-大きなウィンドウの下での線形な RTT 公平性を保証するものである。
-このプロトコルでは additive increase (追加的な増加) と
-binary search increase (二分探索増加) といわれる二つの仕組みを
-組み合わせている。輻輳ウィンドウが大きいときは、増分の大きい
-additive increase により、スケーラビリティを確保しながら
-線形な RTT 公平性を保証する。
-輻輳ウィンドウが小さいときには binary search increase により
-TCP 親和性を達成している。
+パケット化レイヤの Path MTU discovery (MTU probing) で、 \fIsearch_low\fP の初期値と使用される値。 MTU
+probing が有効な場合、この値はその接続の MSS の初期値となる。
+.TP 
+\fItcp_bic\fP (Boolean; default: disabled; Linux 2.4.27/2.6.6 から 2.6.13 まで)
 .\"
 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
-.TP
-.\"O .IR tcp_bic_low_window " (integer; default: 14; Linux 2.4.27/2.6.6 to 2.6.13)"
-.IR tcp_bic_low_window " (integer; default: 14; Linux 2.4.27/2.6.6 以降 2.6.13 まで)"
-.\"O Set the threshold window (in packets) where BIC TCP starts to
-.\"O adjust the congestion window.
-.\"O Below this threshold BIC TCP behaves the same as the default TCP Reno.
-BIC TCP が輻輳ウィンドウの調整を開始する閾値ウィンドウ (パケット単位)
-を設定する。この閾値を下回る場合、BIC TCP はデフォルトの TCP Reno と
-同じ動作をする。
+BIC TCP 輻輳制御アルゴリズムを有効にする。 BIC\-TCP は送信側のみの変更で、 スケーラビリティと TCP 親和性
+(friendliness) の両方を提供しつつ、 大きなウィンドウの下での線形な RTT 公平性を保証するものである。 このプロトコルでは
+additive increase (追加的な増加) と binary search increase (二分探索増加) といわれる二つの仕組みを
+組み合わせている。輻輳ウィンドウが大きいときは、増分の大きい additive increase により、スケーラビリティを確保しながら 線形な RTT
+公平性を保証する。 輻輳ウィンドウが小さいときには binary search increase により TCP 親和性を達成している。
+.TP 
+\fItcp_bic_low_window\fP (integer; default: 14; Linux 2.4.27/2.6.6 以降 2.6.13 まで)
 .\"
 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
-.TP
-.\"O .IR tcp_bic_fast_convergence " (Boolean; default: enabled; Linux 2.4.27/2.6.6 to 2.6.13)"
-.IR tcp_bic_fast_convergence " (Boolean; default: enabled; Linux 2.4.27/2.6.6 以降 2.6.13 まで)"
-.\"O Force BIC TCP to more quickly respond to changes in congestion window.
-.\"O Allows two flows sharing the same connection to converge more rapidly.
-BIC TCP が輻輳ウィンドウの変化により速く反応するようにする。
-同じコネクションを共有する二つのフローが一つにまとまるのを
+BIC TCP が輻輳ウィンドウの調整を開始する閾値ウィンドウ (パケット単位)  を設定する。この閾値を下回る場合、BIC TCP はデフォルトの
+TCP Reno と 同じ動作をする。
+.TP 
+\fItcp_bic_fast_convergence\fP (Boolean; default: enabled; Linux 2.4.27/2.6.6 以降 2.6.13 まで)
+BIC TCP が輻輳ウィンドウの変化により速く反応するようにする。 同じコネクションを共有する二つのフローが一つにまとまるのを
 より速く行うようにする。
-.TP
-.\"O .IR tcp_congestion_control " (String; default: see text; since Linux 2.4.13)"
-.IR tcp_congestion_control " (String; default: 説明参照; Linux 2.4.13 以降)"
+.TP 
+\fItcp_congestion_control\fP (String; default: 説明参照; Linux 2.4.13 以降)
 .\" The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
-.\"O Set the default congestion-control algorithm to be used for new connections.
-.\"O The algorithm "reno" is always available,
-.\"O but additional choices may be available depending on kernel configuration.
-.\"O The default value for this file is set as part of kernel configuration.
-新規の接続で使用されるデフォルトの輻輳制御アルゴリズムを設定する。
-"reno" アルゴリズムは常に利用可能だが、
-カーネル設定次第では別の選択肢が利用できることもある。
-このファイルのデフォルト値はカーネル設定の一つとして設定される。
-.TP
-.\"O .IR tcp_dma_copybreak " (integer; default: 4096; since Linux 2.6.24)"
-.IR tcp_dma_copybreak " (integer; default: 4096; Linux 2.6.24 以降)"
-.\"O Lower limit, in bytes, of the size of socket reads that will be
-.\"O offloaded to a DMA copy engine, if one is present in the system
-.\"O and the kernel was configured with the
-.\"O .B CONFIG_NET_DMA
-.\"O option.
-システムに DMA コピーエンジンが存在し、カーネルで
-.B CONFIG_NET_DMA
-オプションが有効になっている場合に、
-DMA コピーエンジンにオフロードされるソケットの読み込みサイズの下限値
-(バイト単位)。
-.TP
-.\"O .IR tcp_dsack " (Boolean; default: enabled; since Linux 2.4)"
-.IR tcp_dsack " (Boolean; default: enabled; Linux 2.4 以降)"
+新規の接続で使用されるデフォルトの輻輳制御アルゴリズムを設定する。 "reno" アルゴリズムは常に利用可能だが、
+カーネル設定次第では別の選択肢が利用できることもある。 このファイルのデフォルト値はカーネル設定の一つとして設定される。
+.TP 
+\fItcp_dma_copybreak\fP (integer; default: 4096; Linux 2.6.24 以降)
+システムに DMA コピーエンジンが存在し、カーネルで \fBCONFIG_NET_DMA\fP オプションが有効になっている場合に、 DMA
+コピーエンジンにオフロードされるソケットの読み込みサイズの下限値 (バイト単位)。
+.TP 
+\fItcp_dsack\fP (Boolean; default: enabled; Linux 2.4 以降)
 .\" Since 2.4.0-test7
-.\"O Enable RFC\ 2883 TCP Duplicate SACK support.
 RFC\ 2883 の TCP Duplicate SACK のサポートを有効にする。
-.TP
-.\"O .IR tcp_ecn " (Boolean; default: disabled; since Linux 2.4)"
-.IR tcp_ecn " (Boolean; default: disabled; Linux 2.4 以降)"
+.TP 
+\fItcp_ecn\fP (Boolean; default: disabled; Linux 2.4 以降)
 .\" Since 2.4.0-test7
-.\"O Enable RFC\ 2884 Explicit Congestion Notification.
-.\"O When enabled, connectivity to some
-.\"O destinations could be affected due to older, misbehaving
-.\"O routers along the path causing connections to be dropped.
 RFC\ 2884 の Explicit Congestion Notification を有効にする。
-これを有効にすると、間違った振舞いをする古いルータが
-経路の途中にあるような接続先に対して影響が生じ、
-場合によっては接続が落ちるかもしれない。
-.TP
-.\"O .IR tcp_fack " (Boolean; default: enabled; since Linux 2.2)"
-.IR tcp_fack " (Boolean; default: enabled; Linux 2.2 以降)"
+これを有効にすると、間違った振舞いをする古いルータが 経路の途中にあるような接続先に対して影響が生じ、 場合によっては接続が落ちるかもしれない。
+.TP 
+\fItcp_fack\fP (Boolean; default: enabled; Linux 2.2 以降)
 .\" Since 2.1.92
-.\"O Enable TCP Forward Acknowledgement support.
 TCP Forward Acknowledgement のサポートを有効にする。
-.TP
-.\"O .IR tcp_fin_timeout " (integer; default: 60; since Linux 2.2)"
-.IR tcp_fin_timeout " (integer; default: 60; Linux 2.2 以降)"
+.TP 
+\fItcp_fin_timeout\fP (integer; default: 60; Linux 2.2 以降)
 .\" Since 2.1.53
-.\"O This specifies how many seconds to wait for a final FIN packet before the
-.\"O socket is forcibly closed.
-.\"O This is strictly a violation of the TCP specification,
-.\"O but required to prevent denial-of-service attacks.
-.\"O In Linux 2.2, the default value was 180.
-ソケットを強制的にクローズする前に、
-最後の FIN パケットを待つ時間を秒単位で指定する。
-これは厳密には TCP の仕様を満たしていないが、
-DoS 攻撃 (denial of service attack) から身を守るために必要である。
-Linux 2.2 ではデフォルト値は 180 であった。
 .\"
 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
-.TP
-.\"O .IR tcp_frto " (integer; default: 0; since Linux 2.4.21/2.6)"
-.IR tcp_frto " (integer; default: 0; Linux 2.4.21/2.6 以降)"
+ソケットを強制的にクローズする前に、 最後の FIN パケットを待つ時間を秒単位で指定する。 これは厳密には TCP の仕様を満たしていないが、 DoS
+攻撃 (denial of service attack) から身を守るために必要である。 Linux 2.2 ではデフォルト値は 180 であった。
+.TP 
+\fItcp_frto\fP (integer; default: 0; Linux 2.4.21/2.6 以降)
 .\" Since 2.4.21/2.5.43
-.\"O Enable F-RTO, an enhanced recovery algorithm for TCP retransmission
-.\"O timeouts (RTOs).
-.\"O It is particularly beneficial in wireless environments
-.\"O where packet loss is typically due to random radio interference
-.\"O rather than intermediate router congestion.
-.\"O See RFC 4138 for more details.
-F-RTO を有効にする。F-RTO は TCP 再送タイムアウト (RTO) からの
-復旧性能を向上させたアルゴリズムである。
-この機能は無線環境で特に効果を発揮する。
-無線環境では、通常は、中間ルータの輻輳ではなくランダムな無線の干渉
-によりパケットロスが発生する。
-詳細は RFC\ 4138 を参照。
+F\-RTO を有効にする。F\-RTO は TCP 再送タイムアウト (RTO) からの 復旧性能を向上させたアルゴリズムである。
+この機能は無線環境で特に効果を発揮する。 無線環境では、通常は、中間ルータの輻輳ではなくランダムな無線の干渉 によりパケットロスが発生する。 詳細は
+RFC\ 4138 を参照。
 
-.\"O This file can have one of the following values:
 このファイルは以下のいずれかの値を取ることができる。
 .RS
 .IP 0 3
-.\"O Disabled.
-F-RTO を無効にする。
+F\-RTO を無効にする。
 .IP 1
-.\"O The basic version F-RTO algorithm is enabled.
-基本版の F-RTO アルゴリズムを有効にする。
+基本版の F\-RTO アルゴリズムを有効にする。
 .IP 2
-.\"O Enable SACK-enhanced F-RTO if flow uses SACK.
-.\"O The basic version can be used also when
-.\"O SACK is in use though in that case scenario(s) exists where F-RTO
-.\"O interacts badly with the packet counting of the SACK-enabled TCP flow.
-そのフローで SACK を使用する場合、SACK 拡張版の F-RTO を有効にする。
-基本版の F-RTO も SACK が使用されている場合にも使用できるが、
-基本版の場合には F-RTO が SACK が有効になった TCP フローでの
+そのフローで SACK を使用する場合、SACK 拡張版の F\-RTO を有効にする。 基本版の F\-RTO も SACK
+が使用されている場合にも使用できるが、 基本版の場合には F\-RTO が SACK が有効になった TCP フローでの
 パケット数計測と、相性が悪く相互干渉が起こる場面が存在する。
 .RE
 .IP
-.\"O Before Linux 2.6.22, this parameter was a Boolean value,
-.\"O supporting just values 0 and 1 above.
-Linu 2.6.22 より前では、このパラメータはブール値であり、
-上記の 0 と 1 のみをサポートしていた。
-.TP
-.\"O .IR tcp_frto_response " (integer; default: 0; since Linux 2.6.22)"
-.IR tcp_frto_response " (integer; default: 0; Linux 2.6.22 以降)"
-.\"O When F-RTO has detected that a TCP retransmission timeout was spurious
-.\"O (i.e, the timeout would have been avoided had TCP set a
-.\"O longer retransmission timeout),
-.\"O TCP has several options concerning what to do next.
-.\"O Possible values are:
-F-RTO が TCP 再送タイムアウトが偽物だと検出した場合
-(つまり、TCP がもっと長い再送タイムアウトを設定していれば
-タイムアウトが避けられた場合)、
-次にどうするかに関して選択肢がいくつかある。
-以下の値を選択できる。
+Linu 2.6.22 より前では、このパラメータはブール値であり、 上記の 0 と 1 のみをサポートしていた。
+.TP 
+\fItcp_frto_response\fP (integer; default: 0; Linux 2.6.22 以降)
+F\-RTO が TCP 再送タイムアウトが偽物だと検出した場合 (つまり、TCP がもっと長い再送タイムアウトを設定していれば
+タイムアウトが避けられた場合)、 次にどうするかに関して選択肢がいくつかある。 以下の値を選択できる。
 .RS
 .IP 0 3
-.\"O Rate halving based; a smooth and conservative response,
-.\"O results in halved congestion window
-.\"O .RI ( cwnd )
-.\"O and slow-start threshold
-.\"O .RI ( ssthresh )
-.\"O after one RTT.
-レートを元の半分にする。
-滑らかで、保守的な反応を行い、RTT 1回分の時間後に
-輻輳ウィンドウ
-.RI ( cwnd )
-とスロースタートの閾値
-.RI ( ssthresh )
-が半分になる。
+レートを元の半分にする。 滑らかで、保守的な反応を行い、RTT 1回分の時間後に 輻輳ウィンドウ (\fIcwnd\fP)  とスロースタートの閾値
+(\fIssthresh\fP)  が半分になる。
 .IP 1
-.\"O Very conservative response; not recommended because even
-.\"O though being valid, it interacts poorly with the rest of Linux TCP; halves
-.\"O .I cwnd
-.\"O and
-.\"O .I ssthresh
-.\"O immediately.
-非常に保守的な反応。このオプションの使用は推奨されない。
-反応が正しかった場合であっても、Linux TCP の他の部分と
-うまく連携できないからである。
-.I cwnd
-と
-.I ssthresh
-は直ちに半分にされる。
+非常に保守的な反応。このオプションの使用は推奨されない。 反応が正しかった場合であっても、Linux TCP の他の部分と
+うまく連携できないからである。 \fIcwnd\fP と \fIssthresh\fP は直ちに半分にされる。
 .IP 2
-.\"O Aggressive response; undoes congestion-control measures
-.\"O that are now known to be unnecessary
-.\"O (ignoring the possibility of a lost retransmission that would require
-.\"O TCP to be more cautious);
-.\"O .I cwnd
-.\"O and
-.\"O .I ssthresh
-.\"O are restored to the values prior to timeout.
-.\"O motoki: 括弧内 (ignoring 〜) の部分の意味を今一つ理解できていません。
-積極的な反応。
-不要と判明した輻輳制御の測定情報を取り消す
-(TCP がもっと注意深く扱うべき再送が失われる可能性を無視する)。
-。
-.I cwnd
-と
-.I ssthresh
-はタイムアウト前の値に戻される。
+積極的な反応。 不要と判明した輻輳制御の測定情報を取り消す (TCP がもっと注意深く扱うべき再送が失われる可能性を無視する)。 。 \fIcwnd\fP と
+\fIssthresh\fP はタイムアウト前の値に戻される。
 .RE
-.TP
-.\"O .IR tcp_keepalive_intvl " (integer; default: 75; since Linux 2.4)"
-.IR tcp_keepalive_intvl " (integer; default: 75; Linux 2.4 以降)"
+.TP 
+\fItcp_keepalive_intvl\fP (integer; default: 75; Linux 2.4 以降)
 .\" Since 2.3.18
-.\"O The number of seconds between TCP keep-alive probes.
-TCP keep-alive のプローブを送る間隔 (秒単位)。
-.TP
-.\"O .IR tcp_keepalive_probes " (integer; default: 9; since Linux 2.2)"
-.IR tcp_keepalive_probes " (integer; default: 9; Linux 2.2 以降)"
+TCP keep\-alive のプローブを送る間隔 (秒単位)。
+.TP 
+\fItcp_keepalive_probes\fP (integer; default: 9; Linux 2.2 以降)
 .\" Since 2.1.43
-.\"O The maximum number of TCP keep-alive probes to send
-.\"O before giving up and killing the connection if
-.\"O no response is obtained from the other end.
-TCP keep-alive プローブの最大回数。
-この回数だけ試しても接続先から反応が得られない場合は、
-あきらめて接続を切断する。
-.TP
-.\"O .IR tcp_keepalive_time " (integer; default: 7200; since Linux 2.2)"
-.IR tcp_keepalive_time " (integer; default: 7200; Linux 2.2 以降)"
+TCP keep\-alive プローブの最大回数。 この回数だけ試しても接続先から反応が得られない場合は、 あきらめて接続を切断する。
+.TP 
+\fItcp_keepalive_time\fP (integer; default: 7200; Linux 2.2 以降)
 .\" Since 2.1.43
-.\"O The number of seconds a connection needs to be idle
-.\"O before TCP begins sending out keep-alive probes.
-.\"O Keep-alives are only sent when the
-.\"O .B SO_KEEPALIVE
-.\"O socket option is enabled.
-.\"O The default value is 7200 seconds (2 hours).
-.\"O An idle connection is terminated after
-.\"O approximately an additional 11 minutes (9 probes an interval
-.\"O of 75 seconds apart) when keep-alive is enabled.
-接続がアイドル状態になってから、keep-alive
-プローブを送信するまでの時間を秒単位で指定する。
-.B SO_KEEPALIVE
-ソケットオプションが有効になっていないと
-keep-alive は送られない。
-デフォルト値は 7200 秒 (2 時間)。
-keep-alive が有効になっている場合、
-さらにおよそ 11 分 (75 秒間隔の 9 プローブ分)
-経過するとアイドル状態の接続は終了させられる。
+接続がアイドル状態になってから、keep\-alive プローブを送信するまでの時間を秒単位で指定する。 \fBSO_KEEPALIVE\fP
+ソケットオプションが有効になっていないと keep\-alive は送られない。 デフォルト値は 7200 秒 (2 時間)。 keep\-alive
+が有効になっている場合、 さらにおよそ 11 分 (75 秒間隔の 9 プローブ分)  経過するとアイドル状態の接続は終了させられる。
 
-.\"O Note that underlying connection tracking mechanisms and
-.\"O application timeouts may be much shorter.
-下層にある接続追跡機構やアプリケーションでのタイムアウトは、
-もっとずっと短いかもしれない。
 .\"
 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
-.TP
-.\"O .IR tcp_low_latency " (Boolean; default: disabled; since Linux 2.4.21/2.6)"
-.IR tcp_low_latency " (Boolean; default: disabled; Linux 2.4.21/2.6 以降)"
+下層にある接続追跡機構やアプリケーションでのタイムアウトは、 もっとずっと短いかもしれない。
+.TP 
+\fItcp_low_latency\fP (Boolean; default: disabled; Linux 2.4.21/2.6 以降)
 .\" Since 2.4.21/2.5.60
-.\"O If enabled, the TCP stack makes decisions that prefer lower
-.\"O latency as opposed to higher throughput.
-.\"O It this option is disabled, then higher throughput is preferred.
-.\"O An example of an application where this default should be
-.\"O changed would be a Beowulf compute cluster.
-有効にすると、TCP スタックはスループットを高くするよりも
-遅延を少なくすることを優先して判断を行う。
-このオプションを無効にすると、スループットを高くすることが優先される。
-このデフォルト値を変更した方がよいアプリケーションの例としては
-Beowulf コンピュータクラスタが挙げられるだろう。
-.TP
-.\"O .IR tcp_max_orphans " (integer; default: see below; since Linux 2.4)"
-.IR tcp_max_orphans " (integer; default: see below; Linux 2.4 以降)"
+有効にすると、TCP スタックはスループットを高くするよりも 遅延を少なくすることを優先して判断を行う。
+このオプションを無効にすると、スループットを高くすることが優先される。 このデフォルト値を変更した方がよいアプリケーションの例としては Beowulf
+コンピュータクラスタが挙げられるだろう。
+.TP 
+\fItcp_max_orphans\fP (integer; default: see below; Linux 2.4 以降)
 .\" Since 2.3.41
-.\"O The maximum number of orphaned (not attached to any user file
-.\"O handle) TCP sockets allowed in the system.
-.\"O When this number is exceeded,
-.\"O the orphaned connection is reset and a warning is printed.
-.\"O This limit exists only to prevent simple denial-of-service attacks.
-.\"O Lowering this limit is not recommended.
-.\"O Network conditions might require you to increase the number of
-.\"O orphans allowed, but note that each orphan can eat up to ~64K
-.\"O of unswappable memory.
-.\"O The default initial value is set equal to the kernel parameter NR_FILE.
-.\"O This initial default is adjusted depending on the memory in the system.
-システムが許容する、
-orphan な (どのユーザファイルハンドルにもアタッチされていない)
-TCP ソケットの最大数。
-この数を越えると、orphan な接続はリセットされ、警告が表示される。
-この制限が存在するのは、単純な使用不能 (denial-of-service) 攻撃を
-防ぐために過ぎない。この値を小さくすることは推奨しない。
-ネットワークの条件によっては、この数値を大きくしないといけないかもしれないが、
-orphan なソケットひとつあたり
-64K 程度のスワップ不可能なメモリを消費することも注意せよ。
-デフォルトの初期値はカーネルパラメータの NR_FILE と等しい。
-この初期デフォルト値はシステムのメモリに応じて調整される。
-.TP
-.\"O .IR tcp_max_syn_backlog " (integer; default: see below; since Linux 2.2)"
-.IR tcp_max_syn_backlog " (integer; default: 下記参照; Linux 2.2 以降)"
+システムが許容する、 orphan な (どのユーザファイルハンドルにもアタッチされていない)  TCP ソケットの最大数。
+この数を越えると、orphan な接続はリセットされ、警告が表示される。 この制限が存在するのは、単純な使用不能 (denial\-of\-service)
+攻撃を 防ぐために過ぎない。この値を小さくすることは推奨しない。 ネットワークの条件によっては、この数値を大きくしないといけないかもしれないが、
+orphan なソケットひとつあたり 64K 程度のスワップ不可能なメモリを消費することも注意せよ。 デフォルトの初期値はカーネルパラメータの
+NR_FILE と等しい。 この初期デフォルト値はシステムのメモリに応じて調整される。
+.TP 
+\fItcp_max_syn_backlog\fP (integer; default: 下記参照; Linux 2.2 以降)
 .\" Since 2.1.53
-.\"O The maximum number of queued connection requests which have
-.\"O still not received an acknowledgement from the connecting client.
-.\"O If this number is exceeded, the kernel will begin
-.\"O dropping requests.
-.\"O The default value of 256 is increased to
-.\"O 1024 when the memory present in the system is adequate or
-.\"O greater (>= 128Mb), and reduced to 128 for those systems with
-.\"O very low memory (<= 32Mb).
-.\"O It is recommended that if this
-.\"O needs to be increased above 1024, TCP_SYNQ_HSIZE in
-.\"O .I include/net/tcp.h
-.\"O be modified to keep
-.\"O TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog, and the kernel be
-.\"O recompiled.
-接続してきているクライアントから
-ack を受信していない状態の接続リクエストをキューに置ける最大数。
-この数値を越えると、カーネルはリクエストを捨て始める。
-デフォルトの値は 256 で、
-システムに充分なメモリがある (128Mb 以上) 場合は 1024 になり、
-メモリが非常に少ない場合 (32 Mb 以下) は 128 になる。
-この数値を 1024 以上に増やしたい場合は、
-.I include/net/tcp.h
-の TCP_SYNQ_HSIZE を
-TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog のように修正し、
-カーネルを再コンパイルすることを奨める。
-.TP
-.\"O .IR tcp_max_tw_buckets " (integer; default: see below; since Linux 2.4)"
-.IR tcp_max_tw_buckets " (integer; default: 下記参照; Linux 2.4 以降)"
+接続してきているクライアントから ack を受信していない状態の接続リクエストをキューに置ける最大数。
+この数値を越えると、カーネルはリクエストを捨て始める。 デフォルトの値は 256 で、 システムに充分なメモリがある (128Mb 以上) 場合は
+1024 になり、 メモリが非常に少ない場合 (32 Mb 以下) は 128 になる。 この数値を 1024 以上に増やしたい場合は、
+\fIinclude/net/tcp.h\fP の TCP_SYNQ_HSIZE を
+TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog のように修正し、 カーネルを再コンパイルすることを奨める。
+.TP 
+\fItcp_max_tw_buckets\fP (integer; default: 下記参照; Linux 2.4 以降)
 .\" Since 2.3.41
-.\"O The maximum number of sockets in TIME_WAIT state allowed in
-.\"O the system.
-.\"O This limit exists only to prevent simple denial-of-service attacks.
-.\"O The default value of NR_FILE*2 is adjusted
-.\"O depending on the memory in the system.
-.\"O If this number is
-.\"O exceeded, the socket is closed and a warning is printed.
-システムが許容する TIME_WAIT 状態にあるソケットの最大数。
-この制限が存在するのは、
-単純な使用不能 (denial-of-service) 攻撃を防ぐために過ぎない。
-デフォルト値は NR_FILE*2 で、システムのメモリに応じて調整される。
+システムが許容する TIME_WAIT 状態にあるソケットの最大数。 この制限が存在するのは、 単純な使用不能 (denial\-of\-service)
+攻撃を防ぐために過ぎない。 デフォルト値は NR_FILE*2 で、システムのメモリに応じて調整される。
 この数値を越えると、そのようなソケットはクローズされ、警告が表示される。
-.TP
-.\"O .IR tcp_moderate_rcvbuf " (Boolean; default: enabled; since Linux 2.4.17/2.6.7)"
-.IR tcp_moderate_rcvbuf " (Boolean; default: enabled; Linux 2.4.17/2.6.7 以降)"
+.TP 
+\fItcp_moderate_rcvbuf\fP (Boolean; default: enabled; Linux 2.4.17/2.6.7 以降)
 .\" The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
-.\"O If enabled, TCP performs receive buffer auto-tuning,
-.\"O attempting to automatically size the buffer (no greater than
-.\"O .IR tcp_rmem[2] )
-.\"O to match the size required by the path for full throughput.
-有効にすると、TCP は受信バッファの自動調整を行う。
-具体的には、
-.RI ( tcp_rmem[2]
-を超えない範囲で) バッファの大きさを自動的に変化させ、
-その経路で最大のスループットを達成するのに必要な大きさに合わせようとする。
-.TP
-.\"O .IR tcp_mem " (since Linux 2.4)"
-.IR tcp_mem " (Linux 2.4 以降)"
+有効にすると、TCP は受信バッファの自動調整を行う。 具体的には、 (\fItcp_rmem[2]\fP を超えない範囲で)
+バッファの大きさを自動的に変化させ、 その経路で最大のスループットを達成するのに必要な大きさに合わせようとする。
+.TP 
+\fItcp_mem\fP (Linux 2.4 以降)
 .\" Since 2.4.0-test7
-.\"O This is a vector of 3 integers: [low, pressure, high].
-.\"O These bounds, measured in units of the system page size,
-.\"O are used by TCP to track its memory usage.
-.\"O The defaults are calculated at boot time from the amount of
-.\"O available memory.
-.\"O (TCP can only use
-.\"O .I "low memory"
-.\"O for this, which is limited to around 900 megabytes on 32-bit systems.
-.\"O 64-bit systems do not suffer this limitation.)
-これは 3 つの整数 [low, pressure, high] からなるベクトル値である。
-これらは TCP がメモリ使用量を追跡するために用いられる
-(使用量はシステムのページサイズ単位で計測される)。
-デフォルトはブート時に利用できるメモリの量から計算される。
-(実際には、TCP は
-.I "low memory"
-のみを使用する。値は 32ビットシステムでは約 900 メガバイトに制限される。
-64 ビットシステムではこの制限はない。)
+これは 3 つの整数 [low, pressure, high] からなるベクトル値である。 これらは TCP がメモリ使用量を追跡するために用いられる
+(使用量はシステムのページサイズ単位で計測される)。 デフォルトはブート時に利用できるメモリの量から計算される。 (実際には、TCP は \fIlow
+memory\fP のみを使用する。値は 32ビットシステムでは約 900 メガバイトに制限される。 64 ビットシステムではこの制限はない。)
 .RS
-.TP 10
-.I low
-.\"O TCP doesn't regulate its memory allocation when the number
-.\"O of pages it has allocated globally is below this number.
-TCP は、グローバルにアロケートしたページがこの数値以下の場合は、
-メモリアロケーションを調整しない。
-.TP
-.I pressure
-.\"O When the amount of memory allocated by TCP
-.\"O exceeds this number of pages, TCP moderates its memory consumption.
-.\"O This memory pressure state is exited
-.\"O once the number of pages allocated falls below
-.\"O the
-.\"O .I low
-.\"O mark.
-TCP がアロケートしたメモリがこの数値分のページ数を越えると、
-TCP はメモリ消費を抑えるようになる。
-アロケートしたページ数が
-.I low
+.TP  10
+\fIlow\fP
+TCP は、グローバルにアロケートしたページがこの数値以下の場合は、 メモリアロケーションを調整しない。
+.TP 
+\fIpressure\fP
+TCP がアロケートしたメモリがこの数値分のページ数を越えると、 TCP はメモリ消費を抑えるようになる。 アロケートしたページ数が \fIlow\fP
 以下になると、このメモリ圧迫状態から脱する。
-.TP
-.I high
-.\"O The maximum number of pages, globally, that TCP will allocate.
-.\"O This value overrides any other limits imposed by the kernel.
-TCP がグローバルに割り当てるページ数の最大値。
-この値はカーネルによって課されるあらゆる制限よりも優先される。
+.TP 
+\fIhigh\fP
+TCP がグローバルに割り当てるページ数の最大値。 この値はカーネルによって課されるあらゆる制限よりも優先される。
 .RE
-.TP
-.\"O .IR tcp_mtu_probing " (integer; default: 0; since Linux 2.6.17)"
-.IR tcp_mtu_probing " (integer; default: 0; Linux 2.6.17 以降)"
+.TP 
+\fItcp_mtu_probing\fP (integer; default: 0; Linux 2.6.17 以降)
 .\" The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
-.\"O This parameter controls TCP Packetization-Layer Path MTU Discovery.
-.\"O The following values may be assigned to the file:
-このパラメータは、TCP のパケット化レイヤの Path MTU discovery を制御する。
-このファイルには以下の値を設定できる。
+このパラメータは、TCP のパケット化レイヤの Path MTU discovery を制御する。 このファイルには以下の値を設定できる。
 .RS
 .IP 0 3
-.\"O Disabled
 無効にする。
 .IP 1
-.\"O Disabled by default, enabled when an ICMP black hole detected
 デフォルトでは無効だが、ICMP ブラックホールが検出された場合は有効にする。
 .IP 2
-.\"O Always enabled, use initial MSS of
-.\"O .IR tcp_base_mss .
-常に有効にする。
-MSS の初期値として
-.I tcp_base_mss
-が使用される。
+常に有効にする。 MSS の初期値として \fItcp_base_mss\fP が使用される。
 .RE
-.TP
-.\"O .IR tcp_no_metrics_save " (Boolean; default: disabled; since Linux 2.6.6)"
-.IR tcp_no_metrics_save " (Boolean; default: disabled; Linux 2.6.6 以降)"
+.TP 
+\fItcp_no_metrics_save\fP (Boolean; default: disabled; Linux 2.6.6 以降)
 .\" The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
-.\"O By default, TCP saves various connection metrics in the route cache
-.\"O when the connection closes, so that connections established in the
-.\"O near future can use these to set initial conditions.
-.\"O Usually, this increases overall performance,
-.\"O but it may sometimes cause performance degradation.
-.\"O If
-.\"O .I tcp_no_metrics_save
-.\"O is enabled, TCP will not cache metrics on closing connections.
-デフォルトでは、TCP は接続クローズ時に各種の接続パラメータを
-ルートキャッシュ (route cache) に保存し、近い将来に接続が確立された際に
-これらの情報を初期状態として使用できるようになっている。
-通常は、これにより全体として性能が向上するが、
-時として性能の劣化を引き起こすこともある。
-.I tcp_no_metrics_save
-を有効にすると、TCP は接続クローズ時に接続パラメータをキャッシュ
-しなくなる。
-.TP
-.\"O .IR tcp_orphan_retries " (integer; default: 8; since Linux 2.4)"
-.IR tcp_orphan_retries " (integer; default: 8; Linux 2.4 以降)"
+デフォルトでは、TCP は接続クローズ時に各種の接続パラメータを ルートキャッシュ (route cache) に保存し、近い将来に接続が確立された際に
+これらの情報を初期状態として使用できるようになっている。 通常は、これにより全体として性能が向上するが、 時として性能の劣化を引き起こすこともある。
+\fItcp_no_metrics_save\fP を有効にすると、TCP は接続クローズ時に接続パラメータをキャッシュ しなくなる。
+.TP 
+\fItcp_orphan_retries\fP (integer; default: 8; Linux 2.4 以降)
 .\" Since 2.3.41
-.\"O The maximum number of attempts made to probe the other
-.\"O end of a connection which has been closed by our end.
-こちらからクローズした接続について、
-先方をプローブする最大試行数。
-.TP
-.\"O .IR tcp_reordering " (integer; default: 3; since Linux 2.4)"
-.IR tcp_reordering " (integer; default: 3; Linux 2.4 以降)"
+こちらからクローズした接続について、 先方をプローブする最大試行数。
+.TP 
+\fItcp_reordering\fP (integer; default: 3; Linux 2.4 以降)
 .\" Since 2.4.0-test7
-.\"O The maximum a packet can be reordered in a TCP packet stream
-.\"O without TCP assuming packet loss and going into slow start.
-.\"O It is not advisable to change this number.
-.\"O This is a packet reordering detection metric designed to
-.\"O minimize unnecessary back off and retransmits provoked by
-.\"O reordering of packets on a connection.
-TCP パケットストリームでパケット順序の逆転が発生しただけであり、
-パケットロスが起こったとはみなさない、パケット数の最大値。
-この値を超えてパケットの順序逆転が起こると、パケットロスが生じたと
-みなし、slow start に入る。
-この数値は変更しないほうが良い。
-これは、接続中のパケットの並び替えによって生じる
-不必要な速度低下や再送を最小化するように設計された、
-パケット並び替え (packet reordering) の検知メトリックなのである。
-.TP
-.\"O .IR tcp_retrans_collapse " (Boolean; default: enabled; since Linux 2.2)"
-.IR tcp_retrans_collapse " (Boolean; default: enabled; Linux 2.2 以降)"
+TCP パケットストリームでパケット順序の逆転が発生しただけであり、 パケットロスが起こったとはみなさない、パケット数の最大値。
+この値を超えてパケットの順序逆転が起こると、パケットロスが生じたと みなし、slow start に入る。 この数値は変更しないほうが良い。
+これは、接続中のパケットの並び替えによって生じる 不必要な速度低下や再送を最小化するように設計された、 パケット並び替え (packet
+reordering) の検知メトリックなのである。
+.TP 
+\fItcp_retrans_collapse\fP (Boolean; default: enabled; Linux 2.2 以降)
 .\" Since 2.1.96
-.\"O Try to send full-sized packets during retransmit.
 再送の際にフルサイズのパケットを送ろうとする。
-.TP
-.\"O .IR tcp_retries1 " (integer; default: 3; since Linux 2.2)"
-.IR tcp_retries1 " (integer; default: 3; Linux 2.2 以降)"
+.TP 
+\fItcp_retries1\fP (integer; default: 3; Linux 2.2 以降)
 .\" Since 2.1.43
-.\"O The number of times TCP will attempt to retransmit a
-.\"O packet on an established connection normally,
-.\"O without the extra effort of getting the network layers involved.
-.\"O Once we exceed this number of
-.\"O retransmits, we first have the network layer
-.\"O update the route if possible before each new retransmit.
-.\"O The default is the RFC specified minimum of 3.
-普通に確立されている接続上に、
-TCP がネットワーク層を巻き込まずに再送を試みる回数。
-再送がこの回数を越えると、まず最初に、
-新しい再送を送る前に可能ならネットワーク層に経路を更新させる。
-デフォルトは RFC が指定している最少数である 3。
-.TP
-.\"O .IR tcp_retries2 " (integer; default: 15; since Linux 2.2)"
-.IR tcp_retries2 " (integer; default: 15; Linux 2.2 以降)"
+普通に確立されている接続上に、 TCP がネットワーク層を巻き込まずに再送を試みる回数。 再送がこの回数を越えると、まず最初に、
+新しい再送を送る前に可能ならネットワーク層に経路を更新させる。 デフォルトは RFC が指定している最少数である 3。
+.TP 
+\fItcp_retries2\fP (integer; default: 15; Linux 2.2 以降)
 .\" Since 2.1.43
-.\"O The maximum number of times a TCP packet is retransmitted
-.\"O in established state before giving up.
-.\"O The default value is 15, which corresponds to a duration of
-.\"O approximately between 13 to 30 minutes, depending
-.\"O on the retransmission timeout.
-.\"O The RFC\ 1122 specified
-.\"O minimum limit of 100 seconds is typically deemed too short.
-確立状態の接続に、この回数 TCP パケットの再送信を
-行なってもだめな場合はあきらめる。
-デフォルト値は 15 で、これは (再送のタイムアウトに依存するが)
-およそ 13〜30 分程度の期間に対応する。
-RFC\ 1122 は最小の限界を 100 秒と置いているが、
+確立状態の接続に、この回数 TCP パケットの再送信を 行なってもだめな場合はあきらめる。 デフォルト値は 15 で、これは
+(再送のタイムアウトに依存するが)  およそ 13〜30 分程度の期間に対応する。 RFC\ 1122 は最小の限界を 100 秒と置いているが、
 これはたいていの場合には短すぎると思われる。
-.TP
-.\"O .IR tcp_rfc1337 " (Boolean; default: disabled; since Linux 2.2)"
-.IR tcp_rfc1337 " (Boolean; default: disabled; Linux 2.2 以降)"
+.TP 
+\fItcp_rfc1337\fP (Boolean; default: disabled; Linux 2.2 以降)
 .\" Since 2.1.90
-.\"O Enable TCP behavior conformant with RFC\ 1337.
-.\"O When disabled,
-.\"O if a RST is received in TIME_WAIT state, we close
-.\"O the socket immediately without waiting for the end
-.\"O of the TIME_WAIT period.
-TCP の動作を RFC\ 1337 に準拠させる。
-無効にすると、TIME_WAIT 状態のときに RST が受信された場合、
-TIME_WAIT 期間の終了を待たずにそのソケットを直ちにクローズする。
-.TP
-.\"O .IR tcp_rmem " (since Linux 2.4)"
-.IR tcp_rmem " (Linux 2.4 以降)"
+TCP の動作を RFC\ 1337 に準拠させる。 無効にすると、TIME_WAIT 状態のときに RST が受信された場合、 TIME_WAIT
+期間の終了を待たずにそのソケットを直ちにクローズする。
+.TP 
+\fItcp_rmem\fP (Linux 2.4 以降)
 .\" Since 2.4.0-test7
-.\"O This is a vector of 3 integers: [min, default, max].
-.\"O These parameters are used by TCP to regulate receive buffer sizes.
-.\"O TCP dynamically adjusts the size of the
-.\"O receive buffer from the defaults listed below, in the range
-.\"O of these values, depending on memory available in the system.
-これは 3 つの整数 [min, default, max] からなるベクトル値である。
-これらは TCP が受信バッファサイズを調整するために用いられる。
-TCP は、システムで利用できるメモリに応じて、
-受信バッファのサイズをこれらの変数の範囲で
+これは 3 つの整数 [min, default, max] からなるベクトル値である。 これらは TCP
+が受信バッファサイズを調整するために用いられる。 TCP は、システムで利用できるメモリに応じて、 受信バッファのサイズをこれらの変数の範囲で
 以下に示すデフォルトから動的に調整する。
 .RS
-.TP 10
-.I min
-.\"O minimum size of the receive buffer used by each TCP socket.
-.\"O The default value is the system page size.
-.\"O (On Linux 2.4, the default value is 4K, lowered to
-.\"O .B PAGE_SIZE
-.\"O bytes in low-memory systems.)
-.\"O This value
-.\"O is used to ensure that in memory pressure mode,
-.\"O allocations below this size will still succeed.
-.\"O This is not
-.\"O used to bound the size of the receive buffer declared
-.\"O using
-.\"O .B SO_RCVBUF
-.\"O on a socket.
-各 TCP ソケットが用いる受信バッファの最小サイズ。
-デフォルト値はシステムのページサイズである
-(Linux 2.4 では、デフォルト値は 4K バイトで、
-メモリの少ないシステムでは
-.B PAGE_SIZE
-バイトに減らされる)。
-この値は、メモリ圧迫モードにおいても、
-このサイズの割り当てが成功することを保証するために用いられる。
-これは、
-.B SO_RCVBUF
+.TP  10
+\fImin\fP
+各 TCP ソケットが用いる受信バッファの最小サイズ。 デフォルト値はシステムのページサイズである (Linux 2.4 では、デフォルト値は 4K
+バイトで、 メモリの少ないシステムでは \fBPAGE_SIZE\fP バイトに減らされる)。 この値は、メモリ圧迫モードにおいても、
+このサイズの割り当てが成功することを保証するために用いられる。 これは、 \fBSO_RCVBUF\fP
 を用いてソケットの最低受信バッファサイズを宣言する際には用いられない。
-.\"nakano Documentation/networking/ip-sysctls.txt
-.\"nakano をみる限りではこういう内容のような。
-.TP
-.I default
-.\"O the default size of the receive buffer for a TCP socket.
-.\"O This value overwrites the initial default buffer size from
-.\"O the generic global
-.\"O .I net.core.rmem_default
-.\"O defined for all protocols.
-.\"O The default value is 87380 bytes.
-.\"O (On Linux 2.4, this will be lowered to 43689 in low-memory systems.)
-.\"O If larger receive buffer sizes are desired, this value should
-.\"O be increased (to affect all sockets).
-.\"O To employ large TCP windows, the
-.\"O .I net.ipv4.tcp_window_scaling
-.\"O must be enabled (default).
-TCP ソケットの受信バッファのデフォルトサイズ。
-この値は、すべてのプロトコルに対して定義されている、
-ジェネリックなグローバルのデフォルトバッファサイズ
-.I net.core.rmem_default
-より優先される。
-デフォルト値は 87380 バイトである
-(Linux 2.4 では、メモリの少ないシステムの場合
-43689 まで減らされる)。
-大きな受信バッファサイズが必要な場合は、
-この値を増やすべきである (すべてのソケットに影響する)。
-大きな TCP ウィンドウを用いるには、
-.I net.ipv4.tcp_window_scaling
-を有効にしておかなければならない (デフォルトは有効)。
-.TP
-.I max
-.\"O the maximum size of the receive buffer used by each TCP socket.
-.\"O This value does not override the global
-.\"O .IR net.core.rmem_max .
-.\"O This is not used to limit the size of the receive buffer declared using
-.\"O .B SO_RCVBUF
-.\"O on a socket.
-.\"O The default value is calculated using the formula
-.\"O 
-.\"O     max(87380, min(4MB, \fItcp_mem\fP[1]*PAGE_SIZE/128))
-.\"O 
-.\"O (On Linux 2.4, the default is 87380*2 bytes,
-.\"O lowered to 87380 in low-memory systems).
-各 TCP ソケットで用いる受信バッファの最大サイズ。
-この値よりもグローバルの
-.I net.core.rmem_max
-が優先される。
-これは、
-.B SO_RCVBUF
-を用いてソケットの受信バッファサイズ制限を宣言する際には用いられない。
-.\"nakano 同上。
-デフォルト値は以下の式で計算される。
+.TP 
+\fIdefault\fP
+TCP ソケットの受信バッファのデフォルトサイズ。 この値は、すべてのプロトコルに対して定義されている、
+ジェネリックなグローバルのデフォルトバッファサイズ \fInet.core.rmem_default\fP より優先される。 デフォルト値は 87380
+バイトである (Linux 2.4 では、メモリの少ないシステムの場合 43689 まで減らされる)。 大きな受信バッファサイズが必要な場合は、
+この値を増やすべきである (すべてのソケットに影響する)。 大きな TCP ウィンドウを用いるには、
+\fInet.ipv4.tcp_window_scaling\fP を有効にしておかなければならない (デフォルトは有効)。
+.TP 
+\fImax\fP
+各 TCP ソケットで用いる受信バッファの最大サイズ。 この値よりもグローバルの \fInet.core.rmem_max\fP が優先される。 これは、
+\fBSO_RCVBUF\fP を用いてソケットの受信バッファサイズ制限を宣言する際には用いられない。 デフォルト値は以下の式で計算される。
 
     max(87380, min(4MB, \fItcp_mem\fP[1]*PAGE_SIZE/128))
 
-(Linux 2.4 では、デフォルト値は 87380*2 バイトで、
-メモリの少ないシステムでは 87380 まで減らされる。)
+(Linux 2.4 では、デフォルト値は 87380*2 バイトで、 メモリの少ないシステムでは 87380 まで減らされる。)
 .RE
-.TP
-.\"O .IR tcp_sack " (Boolean; default: enabled; since Linux 2.2)"
-.IR tcp_sack " (Boolean; default: enabled; Linux 2.2 以降)"
+.TP 
+\fItcp_sack\fP (Boolean; default: enabled; Linux 2.2 以降)
 .\" Since 2.1.36
-.\"O Enable RFC\ 2018 TCP Selective Acknowledgements.
 RFC\ 2018 の TCP Selective Acknowledgements を有効にする。
-.TP
-.\"O .IR tcp_slow_start_after_idle " (Boolean; default: enabled; since Linux 2.6.18)"
-.IR tcp_slow_start_after_idle " (Boolean; default: enabled; Linux 2.6.18 以降)"
+.TP 
+\fItcp_slow_start_after_idle\fP (Boolean; default: enabled; Linux 2.6.18 以降)
 .\" The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
-.\"O If enabled, provide RFC 2861 behavior and time out the congestion
-.\"O window after an idle period.
-.\"O An idle period is defined as the current RTO (retransmission timeout).
-.\"O If disabled, the congestion window will not
-.\"O be timed out after an idle period.
-有効にすると、RFC 2861 の動作が行われ、
-アイドル時間経過後に輻輳ウィンドウをタイムアウトさせる。
-アイドル時間は現在の RTO (再送タイムアウト) で定義される。
-無効にすると、輻輳ウィンドウはアイドル時間経過後もタイムアウトされない。
-.TP
-.\"O .IR tcp_stdurg " (Boolean; default: disabled; since Linux 2.2)"
-.IR tcp_stdurg " (Boolean; default: disabled; Linux 2.2 以降)"
+有効にすると、RFC 2861 の動作が行われ、 アイドル時間経過後に輻輳ウィンドウをタイムアウトさせる。 アイドル時間は現在の RTO
+(再送タイムアウト) で定義される。 無効にすると、輻輳ウィンドウはアイドル時間経過後もタイムアウトされない。
+.TP 
+\fItcp_stdurg\fP (Boolean; default: disabled; Linux 2.2 以降)
 .\" Since 2.1.44
-.\"O If this option is enabled, then use the RFC\ 1122 interpretation
-.\"O of the TCP urgent-pointer field.
-.\"O .\" RFC\ 793 was ambiguous in its specification of the meaning of the
-.\"O .\" urgent pointer.  RFC\ 1122 (and RFC\ 961) fixed on a particular
-.\"O .\" resolution of this ambiguity (unfortunately the "wrong" one).
-.\"O According to this interpretation, the urgent pointer points
-.\"O to the last byte of urgent data.
-.\"O If this option is disabled, then use the BSD-compatible interpretation of
-.\"O the urgent pointer:
-.\"O the urgent pointer points to the first byte after the urgent data.
-.\"O Enabling this option may lead to interoperability problems.
-このオプションを有効にすると、 TCP 緊急ポインタ (urgent-pointer)
-フィールドを RFC\ 1122 に従った解釈を行う。
-.\" RFC\ 793 は緊急ポインタの意味の規定が曖昧であった。
-.\" RFC\ 1122 (と RFC\ 961) ではこの曖昧さに一つの解決策を定めた
-.\" (残念ながら "間違った" 解決策であったが)。
-この解釈に従うと、緊急ポインタは緊急データの最後のバイトを指す。
-このオプションを無効にすると、緊急ポインタの解釈が BSD 互換の方法で
-行われる: 緊急ポインタは緊急データの後の最初のバイトを指す。
-このオプションを有効にすると、相互運用性に問題が生じるかもしれない。
-.TP
-.\"O .IR tcp_syn_retries  " (integer; default: 5; since Linux 2.2)"
-.IR tcp_syn_retries  " (integer; default: 5; Linux 2.2 以降)"
+.\" RFC 793 was ambiguous in its specification of the meaning of the
+.\" urgent pointer.  RFC 1122 (and RFC 961) fixed on a particular
+.\" resolution of this ambiguity (unfortunately the "wrong" one).
+このオプションを有効にすると、 TCP 緊急ポインタ (urgent\-pointer)  フィールドを RFC\ 1122 に従った解釈を行う。
+この解釈に従うと、緊急ポインタは緊急データの最後のバイトを指す。 このオプションを無効にすると、緊急ポインタの解釈が BSD 互換の方法で 行われる:
+緊急ポインタは緊急データの後の最初のバイトを指す。 このオプションを有効にすると、相互運用性に問題が生じるかもしれない。
+.TP 
+\fItcp_syn_retries\fP (integer; default: 5; Linux 2.2 以降)
 .\" Since 2.1.38
-.\"O The maximum number of times initial SYNs for an active TCP
-.\"O connection attempt will be retransmitted.
-.\"O This value should not be higher than 255.
-.\"O The default value is 5, which corresponds to approximately 180 seconds.
-アクティブな TCP 接続に初期 SYN の再送を試みる最大回数。
-この数値は 255 よりも大きくすべきではない。
-デフォルトの値は 5 で、およそ 180 秒に対応する。
-.TP
-.\"O .IR tcp_synack_retries " (integer; default: 5; since Linux 2.2)"
-.IR tcp_synack_retries " (integer; default: 5; Linux 2.2 以降)"
+アクティブな TCP 接続に初期 SYN の再送を試みる最大回数。 この数値は 255 よりも大きくすべきではない。 デフォルトの値は 5 で、およそ
+180 秒に対応する。
+.TP 
+\fItcp_synack_retries\fP (integer; default: 5; Linux 2.2 以降)
 .\" Since 2.1.38
-.\"O The maximum number of times a SYN/ACK segment
-.\"O for a passive TCP connection will be retransmitted.
-.\"O This number should not be higher than 255.
-passive な TCP 接続の SYN/ACK セグメントで再送を試みる最大数。
-この数値は 255 よりも大きくすべきではない。
-.TP
-.\"O .IR tcp_syncookies " (Boolean; since Linux 2.2)"
-.IR tcp_syncookies " (Boolean; Linux 2.2 以降)"
+passive な TCP 接続の SYN/ACK セグメントで再送を試みる最大数。 この数値は 255 よりも大きくすべきではない。
+.TP 
+\fItcp_syncookies\fP (Boolean; Linux 2.2 以降)
 .\" Since 2.1.43
-.\"O Enable TCP syncookies.
-.\"O The kernel must be compiled with
-.\"O .BR CONFIG_SYN_COOKIES .
-.TCP syncookies を有効にする。カーネルは
-.B CONFIG_SYNCOOKIES
-をつけてコンパイルしておかなければならない。
-.\"O Send out syncookies when the syn backlog queue of a socket overflows.
-.\"O The syncookies feature attempts to protect a
-.\"O socket from a SYN flood attack.
-.\"O This should be used as a last resort, if at all.
-.\"O This is a violation of the TCP protocol,
-.\"O and conflicts with other areas of TCP such as TCP extensions.
-.\"O It can cause problems for clients and relays.
-.\"O It is not recommended as a tuning mechanism for heavily
-.\"O loaded servers to help with overloaded or misconfigured conditions.
-.\"O For recommended alternatives see
-.\"O .IR tcp_max_syn_backlog ,
-.\"O .IR tcp_synack_retries ,
-.\"O and
-.\"O .IR tcp_abort_on_overflow .
-ソケットのバックログキューがオーバーフローすると、
-syncookies が送信される。
-syncookies 機能は、SYN flood 攻撃からソケットを守ろうとする。
-これはいずれにしても、最終手段として用いるべきである。
-これは TCP プロトコルに違反しており、
-TCP 拡張のような、TCP の他の部分と衝突してしまう。
-クライアントやリレーで問題が起こることもある。
-過負荷や設定間違いによって負荷の大きな状態にあるサーバを調整して救うための
-機構とみなすべきではない。
-そのような用途には、代わりに
-.IR tcp_max_syn_backlog ,
-.IR tcp_synack_retries ,
-.I tcp_abort_on_overflow
+TCP syncookies を有効にする。カーネルは \fBCONFIG_SYNCOOKIES\fP をつけてコンパイルしておかなければならない。
+ソケットのバックログキューがオーバーフローすると、 syncookies が送信される。 syncookies 機能は、SYN flood
+攻撃からソケットを守ろうとする。 これはいずれにしても、最終手段として用いるべきである。 これは TCP プロトコルに違反しており、 TCP
+拡張のような、TCP の他の部分と衝突してしまう。 クライアントやリレーで問題が起こることもある。
+過負荷や設定間違いによって負荷の大きな状態にあるサーバを調整して救うための 機構とみなすべきではない。 そのような用途には、代わりに
+\fItcp_max_syn_backlog\fP, \fItcp_synack_retries\fP, \fItcp_abort_on_overflow\fP
 などの使用を考えること。
-.TP
-.\"O .IR tcp_timestamps " (Boolean; default: enabled; since Linux 2.2)"
-.IR tcp_timestamps " (Boolean; default: enabled; Linux 2.2 以降)"
+.TP 
+\fItcp_timestamps\fP (Boolean; default: enabled; Linux 2.2 以降)
 .\" Since 2.1.36
-.\"O Enable RFC\ 1323 TCP timestamps.
 RFC\ 1323 の TCP timestamps を有効にする。
-.TP
-.\"O .IR tcp_tso_win_divisor " (integer; default: 3; since Linux 2.6.9)"
-.IR tcp_tso_win_divisor " (integer; default: 3; Linux 2.6.9 以降)"
-.\"O This parameter controls what percentage of the congestion window
-.\"O can be consumed by a single TCP Segmentation Offload (TSO) frame.
-.\"O The setting of this parameter is a tradeoff between burstiness and
-.\"O building larger TSO frames.
-このパラメータは、一つの TCP Segmentation Offload (TSO) フレームで
-消費できる輻輳ウィンドウの割合 (パーセント) を制御する。
-バースト性と、どれだけ大きな TSO フレームを構築するかのはトレードオフであり、
-このパラメータはその度合いを設定する。
-.TP
-.\"O .IR tcp_tw_recycle " (Boolean; default: disabled; since Linux 2.4)"
-.IR tcp_tw_recycle " (Boolean; default: disabled; Linux 2.4 以降)"
+.TP 
+\fItcp_tso_win_divisor\fP (integer; default: 3; Linux 2.6.9 以降)
+このパラメータは、一つの TCP Segmentation Offload (TSO) フレームで 消費できる輻輳ウィンドウの割合 (パーセント)
+を制御する。 バースト性と、どれだけ大きな TSO フレームを構築するかのはトレードオフであり、 このパラメータはその度合いを設定する。
+.TP 
+\fItcp_tw_recycle\fP (Boolean; default: disabled; Linux 2.4 以降)
 .\" Since 2.3.15
-.\"O Enable fast recycling of TIME_WAIT sockets.
-.\"O Enabling this option is not
-.\"O recommended since this causes problems when working
-.\"O with NAT (Network Address Translation).
-TIME_WAIT ソケットの素早い再利用を有効にする。
-このオプションを有効にすると、
-NAT (ネットワークアドレス変換) を用いていると問題が生じるので、
-あまり推奨しない。
 .\"
 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
-.TP
-.\"O .IR tcp_tw_reuse " (Boolean; default: disabled; since Linux 2.4.19/2.6)"
-.IR tcp_tw_reuse " (Boolean; default: disabled; Linux 2.4.19/2.6 以降)"
+TIME_WAIT ソケットの素早い再利用を有効にする。 このオプションを有効にすると、 NAT (ネットワークアドレス変換)
+を用いていると問題が生じるので、 あまり推奨しない。
+.TP 
+\fItcp_tw_reuse\fP (Boolean; default: disabled; Linux 2.4.19/2.6 以降)
 .\" Since 2.4.19/2.5.43
-.\"O Allow to reuse TIME_WAIT sockets for new connections when it is
-.\"O safe from protocol viewpoint.
-.\"O It should not be changed without advice/request of technical experts.
-プロトコルの面から見て問題ない場合に新規コネクションに TIME_WAIT
-状態のソケットを再利用することを許可する。技術的に詳しい人の助言や
-要請なしにこのオプションを変更すべきではない。
 .\"
 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
-.TP
-.\"O .IR tcp_vegas_cong_avoid  " (Boolean; default: disabled; Linux 2.2 to 2.6.13)"
-.IR tcp_vegas_cong_avoid  " (Boolean; default: disabled; Linux 2.2 から 2.6.13 まで)"
+プロトコルの面から見て問題ない場合に新規コネクションに TIME_WAIT 状態のソケットを再利用することを許可する。技術的に詳しい人の助言や
+要請なしにこのオプションを変更すべきではない。
+.TP 
+\fItcp_vegas_cong_avoid\fP (Boolean; default: disabled; Linux 2.2 から 2.6.13 まで)
 .\" Since 2.1.8; removed in 2.6.13
-.\"O Enable TCP Vegas congestion avoidance algorithm.
-.\"O TCP Vegas is a sender-side only change to TCP that anticipates
-.\"O the onset of congestion by estimating the bandwidth.
-.\"O TCP Vegas adjusts the sending rate by modifying the congestion window.
-.\"O TCP Vegas should provide less packet loss, but it is
-.\"O not as aggressive as TCP Reno.
-TCP Vegas 輻輳制御アルゴリズムを有効にする。
-TCP Vegas は帯域を推測することで輻輳の起こり始めを予想するように
-TCP の送信側のみに変更を加えたものである。
-TCP Vegas は輻輳ウィンドウを修正することで、送信レートを調整する。
-TCP Vegas は TCP Reno と比べてパケットロスは少ないが、
-TCP Reno ほど積極的な挙動はしない。
 .\"
 .\" The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
-.TP
-.\"O .IR tcp_westwood " (Boolean; default: disabled; Linux 2.4.26/2.6.3 to 2.6.13)"
-.IR tcp_westwood " (Boolean; default: disabled; Linux 2.4.26/2.6.3 から 2.6.13 まで)"
-.\"O Enable TCP Westwood+ congestion control algorithm.
-.\"O TCP Westwood+ is a sender-side only modification of the TCP Reno
-.\"O protocol stack that optimizes the performance of TCP congestion control.
-.\"O It is based on end-to-end bandwidth estimation to set
-.\"O congestion window and slow start threshold after a congestion episode.
-.\"O Using this estimation, TCP Westwood+ adaptively sets a
-.\"O slow start threshold and a congestion window which takes into
-.\"O account the bandwidth used at the time congestion is experienced.
-.\"O TCP Westwood+ significantly increases fairness with respect to
-.\"O TCP Reno in wired networks and throughput over wireless links.
-TCP Westwood+ 輻輳制御アルゴリズムを有効にする。
-TCP Westwood+ は TCP 輻輳制御の性能を最適化するように TCP Reno の
-プロトコルスタックの送信側のみに修正を加えたものである。
-輻輳が起こった後で、輻輳ウィンドウや slow start の閾値を
-通信両端間の帯域の推測に基づいて設定する。
-この推測を使って、TCP Westwood+ は輻輳が発生した時に使っていた
-帯域を考慮に入れた slow start の閾値と輻輳ウィンドウを設定する。
-TCP Westwood+ は、有線ネットワークにおける TCP Reno の公平性
+TCP Vegas 輻輳制御アルゴリズムを有効にする。 TCP Vegas は帯域を推測することで輻輳の起こり始めを予想するように TCP
+の送信側のみに変更を加えたものである。 TCP Vegas は輻輳ウィンドウを修正することで、送信レートを調整する。 TCP Vegas は TCP
+Reno と比べてパケットロスは少ないが、 TCP Reno ほど積極的な挙動はしない。
+.TP 
+\fItcp_westwood\fP (Boolean; default: disabled; Linux 2.4.26/2.6.3 から 2.6.13 まで)
+TCP Westwood+ 輻輳制御アルゴリズムを有効にする。 TCP Westwood+ は TCP 輻輳制御の性能を最適化するように TCP
+Reno の プロトコルスタックの送信側のみに修正を加えたものである。 輻輳が起こった後で、輻輳ウィンドウや slow start の閾値を
+通信両端間の帯域の推測に基づいて設定する。 この推測を使って、TCP Westwood+ は輻輳が発生した時に使っていた 帯域を考慮に入れた slow
+start の閾値と輻輳ウィンドウを設定する。 TCP Westwood+ は、有線ネットワークにおける TCP Reno の公平性
 (fairness) と、無線リンクでのスループットを大きく向上する。
-.TP
-.\"O .IR tcp_window_scaling " (Boolean; default: enabled; since Linux 2.2)"
-.IR tcp_window_scaling " (Boolean; default: enabled; Linux 2.2 以降)"
+.TP 
+\fItcp_window_scaling\fP (Boolean; default: enabled; Linux 2.2 以降)
 .\" Since 2.1.36
-.\"O Enable RFC\ 1323 TCP window scaling.
-.\"O This feature allows the use of a large window
-.\"O (> 64K) on a TCP connection, should the other end support it.
-.\"O Normally, the 16 bit window length field in the TCP header
-.\"O limits the window size to less than 64K bytes.
-.\"O If larger windows are desired, applications can increase the size of
-.\"O their socket buffers and the window scaling option will be employed.
-.\"O If
-.\"O .I tcp_window_scaling
-.\"O is disabled, TCP will not negotiate the use of window
-.\"O scaling with the other end during connection setup.
-RFC\ 1323 の TCP ウィンドウスケーリングを有効にする。
-この機能を用いると、接続先が対応していれば、
-TCP 接続で大きな (64K 以上の) ウィンドウが使えるようになる。
-通常は TCP ヘッダのウインドウ長フィールドは 16 ビットなので、
-ウィンドウサイズは 64K バイト以下に限られる。
-もっと大きなウィンドウを使いたい場合は、
-アプリケーションはソケットバッファのサイズを増やして、
-ウィンドウスケーリングのオプションを利用すればよい。
-.I tcp_window_scaling
-を無効にしていると、
-TCP は他端との接続設定の際に、
-ウィンドウスケーリングのネゴシエーションを行なわない。
-.TP
-.\"O .IR tcp_wmem " (since Linux 2.4)"
-.IR tcp_wmem " (Linux 2.4 以降)"
+RFC\ 1323 の TCP ウィンドウスケーリングを有効にする。 この機能を用いると、接続先が対応していれば、 TCP 接続で大きな (64K
+以上の) ウィンドウが使えるようになる。 通常は TCP ヘッダのウインドウ長フィールドは 16 ビットなので、 ウィンドウサイズは 64K
+バイト以下に限られる。 もっと大きなウィンドウを使いたい場合は、 アプリケーションはソケットバッファのサイズを増やして、
+ウィンドウスケーリングのオプションを利用すればよい。 \fItcp_window_scaling\fP を無効にしていると、 TCP
+は他端との接続設定の際に、 ウィンドウスケーリングのネゴシエーションを行なわない。
+.TP 
+\fItcp_wmem\fP (Linux 2.4 以降)
 .\" Since 2.4.0-test7
-.\"O This is a vector of 3 integers: [min, default, max].
-.\"O These parameters are used by TCP to regulate send buffer sizes.
-.\"O TCP dynamically adjusts the size of the send buffer from the
-.\"O default values listed below, in the range of these values,
-.\"O depending on memory available.
-これは 3 つの整数 [min, default, max] からなるベクトル値である。
-これらは TCP が送信バッファサイズを調整するために用いられる。
-TCP は、システムで利用できるメモリに応じて、送信バッファのサイズを
+これは 3 つの整数 [min, default, max] からなるベクトル値である。 これらは TCP
+が送信バッファサイズを調整するために用いられる。 TCP は、システムで利用できるメモリに応じて、送信バッファのサイズを
 これらの変数の範囲で以下に示すデフォルトから動的に調整する。
 .RS
-.TP 10
-.I min
-.\"O Minimum size of the send buffer used by each TCP socket.
-.\"O The default value is the system page size.
-.\"O (On Linux 2.4, the default value is 4K bytes.)
-.\"O This value is used to ensure that in memory pressure mode,
-.\"O allocations below this size will still succeed.
-.\"O This is not used to bound the size of the send buffer declared using
-.\"O .B SO_SNDBUF
-.\"O on a socket.
-各 TCP ソケットが用いる送信バッファの最小サイズ。
-デフォルト値はシステムのページサイズである
-(Linux 2.4 では、デフォルト値は 4K である)。
-この値は、メモリ圧迫モードにおいても、
-このサイズ以下の割り当てが成功することを保証するために用いられる。
-これは、
-.B SO_SNDBUF
-を用いてソケットの最低送信バッファサイズを宣言する際には用いられない。
-.TP
-.I default
-.\"O The default size of the send buffer for a TCP socket.
-.\"O This value overwrites the initial default buffer size from
-.\"O the generic global
-.\"O .I /proc/sys/net/core/wmem_default
-.\"O defined for all protocols.
-.\"O The default value is 16K bytes.
-.\"O .\" True in Linux 2.4 and 2.6
-.\"O If larger send buffer sizes are desired, this value
-.\"O should be increased (to affect all sockets).
-.\"O To employ large TCP windows, the
-.\"O .I /proc/sys/net/ipv4/tcp_window_scaling
-.\"O must be set to a nonzero value (default).
-TCP ソケットの送信バッファのデフォルトサイズ。
-この値は、すべてのプロトコルに対して定義されている、
-ジェネリックなグローバルのデフォルトバッファサイズ
-.I /proc/sys/net/core/wmem_default
-より優先される。
-デフォルト値は 16K バイトである。
-.\" Linux 2.4 と 2.6 では正しい。
-大きな送信バッファサイズが必要な場合は、
-この値を増やすべきである (すべてのソケットに影響する)。
-大きな TCP ウィンドウを用いるには、
-.I /proc/sys/net/ipv4/tcp_window_scaling
-を 0 以外の値 (デフォルト値) にしておかなければならない。
-.TP
-.I max
-.\"O The maximum size of the send buffer used by each TCP socket.
-.\"O This value does not override the value in
-.\"O .IR /proc/sys/net/core/wmem_max .
-.\"O This is not used to limit the size of the send buffer declared using
-.\"O .B SO_SNDBUF
-.\"O on a socket.
-.\"O The default value is calculated using the formula
-.\"O 
-.\"O     max(65536, min(4MB, \fItcp_mem\fP[1]*PAGE_SIZE/128))
-.\"O 
-.\"O (On Linux 2.4, the default value is 128K bytes,
-.\"O lowered 64K depending on low-memory systems.)
-各 TCP ソケットで用いる送信バッファの最大サイズ。
-この値よりも
-.IR /proc/sys/net/core/wmem_max
-が優先される。
-これは
-.B SO_SNDBUF
-を用いてソケットの送信バッファサイズ制限を宣言する際には用いられない。
-デフォルト値は以下の式で計算される。
+.TP  10
+\fImin\fP
+各 TCP ソケットが用いる送信バッファの最小サイズ。 デフォルト値はシステムのページサイズである (Linux 2.4 では、デフォルト値は 4K
+である)。 この値は、メモリ圧迫モードにおいても、 このサイズ以下の割り当てが成功することを保証するために用いられる。 これは、
+\fBSO_SNDBUF\fP を用いてソケットの最低送信バッファサイズを宣言する際には用いられない。
+.TP 
+\fIdefault\fP
+.\" True in Linux 2.4 and 2.6
+TCP ソケットの送信バッファのデフォルトサイズ。 この値は、すべてのプロトコルに対して定義されている、
+ジェネリックなグローバルのデフォルトバッファサイズ \fI/proc/sys/net/core/wmem_default\fP より優先される。
+デフォルト値は 16K バイトである。 大きな送信バッファサイズが必要な場合は、 この値を増やすべきである (すべてのソケットに影響する)。 大きな
+TCP ウィンドウを用いるには、 \fI/proc/sys/net/ipv4/tcp_window_scaling\fP を 0 以外の値 (デフォルト値)
+にしておかなければならない。
+.TP 
+\fImax\fP
+各 TCP ソケットで用いる送信バッファの最大サイズ。 この値よりも \fI/proc/sys/net/core/wmem_max\fP が優先される。
+これは \fBSO_SNDBUF\fP を用いてソケットの送信バッファサイズ制限を宣言する際には用いられない。 デフォルト値は以下の式で計算される。
 
     max(65536, min(4MB, \fItcp_mem\fP[1]*PAGE_SIZE/128))
 
-(Linux 2.4 では、デフォルト値は 128K バイトで、
-メモリの少ないシステムでは 64K にまで減らされる。)
+(Linux 2.4 では、デフォルト値は 128K バイトで、 メモリの少ないシステムでは 64K にまで減らされる。)
 .RE
-.TP
-.\"O .IR tcp_workaround_signed_windows " (Boolean; default: disabled; since Linux 2.6.26)"
-.IR tcp_workaround_signed_windows " (Boolean; default: disabled; Linux 2.6.26 以降)"
-.\"O If enabled, assume that no receipt of a window-scaling option means that the
-.\"O remote TCP is broken and treats the window as a signed quantity.
-.\"O If disabled, assume that the remote TCP is not broken even if we do
-.\"O not receive a window scaling option from it.
-有効にすると、ウィンドウスケーリングオプションを受信しないのは、
-接続相手の TCP が壊れていると考え、ウィンドウを符号付きの量とみなす。
-無効にすると、接続相手からウィンドウスケーリングオプションを受信しなかった
-場合であっても、接続相手の TCP が壊れているとはみなさない。
-.\"O .SS Socket Options
+.TP 
+\fItcp_workaround_signed_windows\fP (Boolean; default: disabled; Linux 2.6.26 以降)
+有効にすると、ウィンドウスケーリングオプションを受信しないのは、 接続相手の TCP が壊れていると考え、ウィンドウを符号付きの量とみなす。
+無効にすると、接続相手からウィンドウスケーリングオプションを受信しなかった 場合であっても、接続相手の TCP が壊れているとはみなさない。
 .SS ソケットオプション
-.\"O To set or get a TCP socket option, call
-.\"O .BR getsockopt (2)
-.\"O to read or
-.\"O .BR setsockopt (2)
-.\"O to write the option with the option level argument set to
-.\"O .BR IPPROTO_TCP .
-TCP ソケットのオプションは、
-オプションレベル引数に
-.I IPPROTO_TCP
-を指定した
-.BR setsockopt (2)
-で設定でき、
-.BR getsockopt (2)
-で取得できる。
-.\"O In addition,
-.\"O most
-.\"O .B IPPROTO_IP
-.\"O socket options are valid on TCP sockets.
-.\"O For more information see
-.\"O .BR ip (7).
-さらに、ほとんどの
-.B IPPROTO_IP
-ソケットオプションも TCP ソケットに対して有効である。詳細は
-.BR ip (7)
-を見よ。
+.\" or SOL_TCP on Linux
 .\" FIXME Document TCP_CONGESTION (new in 2.6.13)
-.TP
-.\"O .BR TCP_CORK " (since Linux 2.2)"
-.BR TCP_CORK " (Linux 2.2 以降)"
+TCP ソケットのオプションは、 オプションレベル引数に \fIIPPROTO_TCP\fP を指定した \fBsetsockopt\fP(2)  で設定でき、
+\fBgetsockopt\fP(2)  で取得できる。 さらに、ほとんどの \fBIPPROTO_IP\fP ソケットオプションも TCP
+ソケットに対して有効である。詳細は \fBip\fP(7)  を見よ。
+.TP 
+\fBTCP_CORK\fP (Linux 2.2 以降)
 .\" precisely: since 2.1.127
-.\"O If set, don't send out partial frames.
-.\"O All queued partial frames are sent when the option is cleared again.
-.\"O This is useful for prepending headers before calling
-.\"O .BR sendfile (2),
-.\"O or for throughput optimization.
-.\"O As currently implemented, there is a 200 millisecond ceiling on the time
-.\"O for which output is corked by
-.\"O .BR TCP_CORK .
-.\"O If this ceiling is reached, then queued data is automatically transmitted.
-.\"O This option can be combined with
-.\"O .B TCP_NODELAY
-.\"O only since Linux 2.5.71.
-.\"O This option should not be used in code intended to be portable.
-セットされると、 partial フレームを送信しない。
-このオプションが解除されると、
-キューイングされた partial フレームが送られる。これは
-.BR sendfile (2)
-を呼ぶ前にヘッダを前置したり、
-スループットを最適化したい場合に便利である。
-現在の実装では、
-.B TCP_CORK
-で出力を抑えることができる時間の上限は 200 ミリ秒である。
-この上限に達すると、キューイングされたデータは自動的に送信される。
-Linux 2.5.71 以降においてのみ、このオプションを
-.B TCP_NODELAY
-と同時に用いることができる。
+セットされると、 partial フレームを送信しない。 このオプションが解除されると、 キューイングされた partial フレームが送られる。これは
+\fBsendfile\fP(2)  を呼ぶ前にヘッダを前置したり、 スループットを最適化したい場合に便利である。 現在の実装では、 \fBTCP_CORK\fP
+で出力を抑えることができる時間の上限は 200 ミリ秒である。 この上限に達すると、キューイングされたデータは自動的に送信される。 Linux
+2.5.71 以降においてのみ、このオプションを \fBTCP_NODELAY\fP と同時に用いることができる。
 移植性の必要なプログラムではこのオプションを用いるべきではない。
-.TP
-.\"O .BR TCP_DEFER_ACCEPT " (since Linux 2.4)"
-.BR TCP_DEFER_ACCEPT " (Linux 2.4 以降)"
+.TP 
+\fBTCP_DEFER_ACCEPT\fP (Linux 2.4 以降)
 .\" Precisely: since 2.3.38
-.\"O Allow a listener to be awakened only when data arrives on the socket.
-.\"O Takes an integer value (seconds), this can
-.\"O bound the maximum number of attempts TCP will make to
-.\"O complete the connection.
-.\"O This option should not be used in code intended to be portable.
-これを用いると、リスナはデータがソケットに到着した時のみ目覚めるようになる。
-整数値 (秒) をとり、
-TCP が接続を完了しようと試みる回数を制限できる。
-移植性の必要なプログラムではこのオプションを用いるべきではない。
-.TP
-.\"O .BR TCP_INFO " (since Linux 2.4)"
-.BR TCP_INFO " (Linux 2.4 以降)"
-.\"O Used to collect information about this socket.
-.\"O The kernel returns a \fIstruct tcp_info\fP as defined in the file
-.\"O .IR /usr/include/linux/tcp.h .
-.\"O This option should not be used in
-.\"O code intended to be portable.
-このソケットの情報を収集するのに用いる。
-カーネルは
-.I /usr/include/linux/tcp.h
-ファイルで定義されている
-\fIstruct tcp_info\fP を返す。
-移植性の必要なプログラムではこのオプションを用いるべきではない。
-.TP
-.\"O .BR TCP_KEEPCNT " (since Linux 2.4)"
-.BR TCP_KEEPCNT " (Linux 2.4 以降)"
+これを用いると、リスナはデータがソケットに到着した時のみ目覚めるようになる。 整数値 (秒) をとり、 TCP
+が接続を完了しようと試みる回数を制限できる。 移植性の必要なプログラムではこのオプションを用いるべきではない。
+.TP 
+\fBTCP_INFO\fP (Linux 2.4 以降)
+このソケットの情報を収集するのに用いる。 カーネルは \fI/usr/include/linux/tcp.h\fP ファイルで定義されている \fIstruct
+tcp_info\fP を返す。 移植性の必要なプログラムではこのオプションを用いるべきではない。
+.TP 
+\fBTCP_KEEPCNT\fP (Linux 2.4 以降)
 .\" Precisely: since 2.3.18
-.\"O The maximum number of keepalive probes TCP should send
-.\"O before dropping the connection.
-.\"O This option should not be
-.\"O used in code intended to be portable.
-接続を落とす前に TCP が試みる keepalive プローブの最大回数。
-移植性の必要なプログラムではこのオプションを用いるべきではない。
-.TP
-.\"O .BR TCP_KEEPIDLE " (since Linux 2.4)"
-.BR TCP_KEEPIDLE " (Linux 2.4 以降)"
+接続を落とす前に TCP が試みる keepalive プローブの最大回数。 移植性の必要なプログラムではこのオプションを用いるべきではない。
+.TP 
+\fBTCP_KEEPIDLE\fP (Linux 2.4 以降)
 .\" Precisely: since 2.3.18
-.\"O The time (in seconds) the connection needs to remain idle
-.\"O before TCP starts sending keepalive probes, if the socket
-.\"O option
-.\"O .B SO_KEEPALIVE
-.\"O has been set on this socket.
-.\"O This option should not be used in code intended to be portable.
-この時間 (秒単位) を越えて接続がアイドル状態に留まっていると、
-このソケットに
-.B SO_KEEPALIVE
-ソケットオプションが設定されている場合、
-TCP は keepalive プローブを送りはじめる。
+この時間 (秒単位) を越えて接続がアイドル状態に留まっていると、 このソケットに \fBSO_KEEPALIVE\fP
+ソケットオプションが設定されている場合、 TCP は keepalive プローブを送りはじめる。
 移植性の必要なプログラムではこのオプションを用いるべきではない。
-.TP
-.\"O .BR TCP_KEEPINTVL " (since Linux 2.4)"
-.BR TCP_KEEPINTVL " (Linux 2.4 以降)"
+.TP 
+\fBTCP_KEEPINTVL\fP (Linux 2.4 以降)
 .\" Precisely: since 2.3.18
-.\"O The time (in seconds) between individual keepalive probes.
-.\"O This option should not be used in code intended to be portable.
-各 keepalive プローブの間隔 (秒単位)。
-移植性の必要なプログラムではこのオプションを用いるべきではない。
-.TP
-.\"O .BR TCP_LINGER2 " (since Linux 2.4)"
-.BR TCP_LINGER2 " (Linux 2.4 以降)"
+各 keepalive プローブの間隔 (秒単位)。 移植性の必要なプログラムではこのオプションを用いるべきではない。
+.TP 
+\fBTCP_LINGER2\fP (Linux 2.4 以降)
 .\" Precisely: since 2.3.41
-.\"O The lifetime of orphaned FIN_WAIT2 state sockets.
-.\"O This option can be used to override the system-wide setting in the file
-.\"O .I /proc/sys/net/ipv4/tcp_fin_timeout
-.\"O for this socket.
-.\"O This is not to be confused with the
-.\"O .BR socket (7)
-.\"O level option
-.\"O .BR SO_LINGER .
-.\"O This option should not be used in code intended to be portable.
-orphan された FIN_WAIT2 状態のソケットの寿命。
-このオプションを用いると、システム全体に適用されるファイル
-.I /proc/sys/net/ipv4/tcp_fin_timeout
-の値を、このソケットに対してのみ変更できる。
-.BR socket (7)
-レベルのオプション
-.B SO_LINGER
-と混同しないこと。
-移植性の必要なプログラムではこのオプションを用いるべきではない。
-.TP
-.B TCP_MAXSEG
+orphan された FIN_WAIT2 状態のソケットの寿命。 このオプションを用いると、システム全体に適用されるファイル
+\fI/proc/sys/net/ipv4/tcp_fin_timeout\fP の値を、このソケットに対してのみ変更できる。 \fBsocket\fP(7)
+レベルのオプション \fBSO_LINGER\fP と混同しないこと。 移植性の必要なプログラムではこのオプションを用いるべきではない。
+.TP 
+\fBTCP_MAXSEG\fP
 .\" Present in Linux 1.0
-.\"O The maximum segment size for outgoing TCP packets.
-.\"O If this option is set before connection establishment, it also
-.\"O changes the MSS value announced to the other end in the initial packet.
-.\"O Values greater than the (eventual) interface MTU have no effect.
-.\"O TCP will also impose
-.\"O its minimum and maximum bounds over the value provided.
-送出 TCP パケットの最大セグメントサイズ。
-このオプションを接続確立の前に設定すると、
-初期パケットで他端にアナウンスする MSS の値も変化する。
-インターフェースの MTU よりも大きな (あるいは大きくなってしまった)
-値は効果を持たない。
-また TCP は、この値よりも最小・最大の制限の方を優先する。
 .\" FIXME
 .\" Document TCP_MD5SIG, added in Linux 2.6.20,
 .\" Needs CONFIG_TCP_MD5SIG
@@ -1600,389 +547,143 @@ orphan された FIN_WAIT2 状態のソケットの寿命。
 .\" http://thread.gmane.org/gmane.linux.network/47490
 .\" http://www.daemon-systems.org/man/tcp.4.html
 .\" http://article.gmane.org/gmane.os.netbsd.devel.network/3767/match=tcp_md5sig+freebsd
-.TP
-.B TCP_NODELAY
+送出 TCP パケットの最大セグメントサイズ。 このオプションを接続確立の前に設定すると、 初期パケットで他端にアナウンスする MSS の値も変化する。
+インターフェースの MTU よりも大きな (あるいは大きくなってしまった)  値は効果を持たない。 また TCP
+は、この値よりも最小・最大の制限の方を優先する。
+.TP 
+\fBTCP_NODELAY\fP
 .\" Present in Linux 1.0
-.\"O If set, disable the Nagle algorithm.
-.\"O This means that segments
-.\"O are always sent as soon as possible, even if there is only a
-.\"O small amount of data.
-.\"O When not set, data is buffered until there
-.\"O is a sufficient amount to send out, thereby avoiding the
-.\"O frequent sending of small packets, which results in poor
-.\"O utilization of the network.
-.\"O This option is overridden by
-.\"O .BR TCP_CORK ;
-.\"O however, setting this option forces an explicit flush of
-.\"O pending output, even if
-.\"O .B TCP_CORK
-.\"O is currently set.
-設定すると Nagle アルゴリズムを無効にする。
-すなわち、データ量が少ない場合でも
-各セグメントは可能な限り早く送信される。
-設定されていないと、
-送信する分だけ溜まるまでデータはバッファされ、
-小さなパケットを頻繁に送らずにすみ、
-ネットワークを有効に利用できる。
-このオプションは
-.B TCP_CORK
-により上書きされる。しかしながら、
-.B TCP_CORK
-が設定されている場合であっても、このオプションを設定すると、
+設定すると Nagle アルゴリズムを無効にする。 すなわち、データ量が少ない場合でも 各セグメントは可能な限り早く送信される。 設定されていないと、
+送信する分だけ溜まるまでデータはバッファされ、 小さなパケットを頻繁に送らずにすみ、 ネットワークを有効に利用できる。 このオプションは
+\fBTCP_CORK\fP により上書きされる。しかしながら、 \fBTCP_CORK\fP が設定されている場合であっても、このオプションを設定すると、
 送信待ちの出力を明示的に掃き出す (flush) ことになる。
-.TP
-.\"O .BR TCP_QUICKACK " (since Linux 2.4.4)"
-.BR TCP_QUICKACK " (Linux 2.4.4 以降)"
-.\"O Enable quickack mode if set or disable quickack
-.\"O mode if cleared.
-.\"O In quickack mode, acks are sent
-.\"O immediately, rather than delayed if needed in accordance
-.\"O to normal TCP operation.
-.\"O This flag is not permanent,
-.\"O it only enables a switch to or from quickack mode.
-.\"O Subsequent operation of the TCP protocol will
-.\"O once again enter/leave quickack mode depending on
-.\"O internal protocol processing and factors such as
-.\"O delayed ack timeouts occurring and data transfer.
-.\"O This option should not be used in code intended to be
-.\"O portable.
-設定されていると quickack モードを有効にし、クリアされると無効にする。
-通常の TCP 動作では ack は必要に応じて遅延されるのに対し、
-quickack モードでは ack はすぐに送信される。
-このフラグは永続的なものではなく、
-quickack モードから/モードへ切り替えるためのものである。
-これ以降の TCP プロトコルの動作によっては、
-内部のプロトコル処理や、遅延 ack タイムアウトの発生、
-データ転送などの要因によって、
-再び quickack から出たり入ったりする。
+.TP 
+\fBTCP_QUICKACK\fP (Linux 2.4.4 以降)
+.\" FIXME Document TCP_USER_TIMEOUT (new in 2.6.37)
+.\" See commit dca43c75e7e545694a9dd6288553f55c53e2a3a3
+設定されていると quickack モードを有効にし、クリアされると無効にする。 通常の TCP 動作では ack は必要に応じて遅延されるのに対し、
+quickack モードでは ack はすぐに送信される。 このフラグは永続的なものではなく、 quickack
+モードから/モードへ切り替えるためのものである。 これ以降の TCP プロトコルの動作によっては、 内部のプロトコル処理や、遅延 ack
+タイムアウトの発生、 データ転送などの要因によって、 再び quickack から出たり入ったりする。
 移植性の必要なプログラムではこのオプションを用いるべきではない。
-.TP
-.\"O .BR TCP_SYNCNT " (since Linux 2.4)"
-.BR TCP_SYNCNT " (Linux 2.4 以降)"
+.TP 
+\fBTCP_SYNCNT\fP (Linux 2.4 以降)
 .\" Precisely: since 2.3.18
-.\"O Set the number of SYN retransmits that TCP should send before
-.\"O aborting the attempt to connect.
-.\"O It cannot exceed 255.
-.\"O This option should not be used in code intended to be portable.
-接続の試行を中止させる前に TCP が送る SYN 再送数を設定する。
-これは 255 より大きくはできない。
+接続の試行を中止させる前に TCP が送る SYN 再送数を設定する。 これは 255 より大きくはできない。
 移植性の必要なプログラムではこのオプションを用いるべきではない。
-.TP
-.\"O .BR TCP_WINDOW_CLAMP " (since Linux 2.4)"
-.BR TCP_WINDOW_CLAMP " (Linux 2.4 以降)"
+.TP 
+\fBTCP_WINDOW_CLAMP\fP (Linux 2.4 以降)
 .\" Precisely: since 2.3.41
-.\"O Bound the size of the advertised window to this value.
-.\"O The kernel imposes a minimum size of SOCK_MIN_RCVBUF/2.
-.\"O This option should not be used in code intended to be
-.\"O portable.
-広報するウィンドウのサイズをこの値に固定する。
-カーネルによって最小サイズは SOCK_MIN_RCVBUF/2 に制限されている。
+広報するウィンドウのサイズをこの値に固定する。 カーネルによって最小サイズは SOCK_MIN_RCVBUF/2 に制限されている。
 このオプションは移植性の必要なコードでは用いるべきでない。
-.\"O .SS Sockets API
-.SS ソケット API
-.\"O TCP provides limited support for out-of-band data,
-.\"O in the form of (a single byte of) urgent data.
-.\"O In Linux this means if the other end sends newer out-of-band
-.\"O data the older urgent data is inserted as normal data into
-.\"O the stream (even when
-.\"O .B SO_OOBINLINE
-.\"O is not set).
-.\"O This differs from BSD-based stacks.
-TCP は帯域外データ (out-of-band data) を限定的にサポートしており、
-(1 バイトの) 緊急データという形である。
-つまり Linux においては、
-接続先が (新しいやり方の) 帯域外データを送ってきた場合、
-(古いやり方の)
-緊急データは通常のデータとしてストリームに挿入されることになる (これは
-.B SO_OOBINLINE
-がセットされている場合でも同様である)。
+.SS "ソケット API"
+TCP は帯域外データ (out\-of\-band data) を限定的にサポートしており、 (1 バイトの) 緊急データという形である。 つまり
+Linux においては、 接続先が (新しいやり方の) 帯域外データを送ってきた場合、 (古いやり方の)
+緊急データは通常のデータとしてストリームに挿入されることになる (これは \fBSO_OOBINLINE\fP がセットされている場合でも同様である)。
 これは BSD ベースのスタックとは異なる。
 .PP
-.\"O Linux uses the BSD compatible interpretation of the urgent
-.\"O pointer field by default.
-.\"O This violates RFC\ 1122, but is
-.\"O required for interoperability with other stacks.
-.\"O It can be changed via
-.\"O .IR /proc/sys/net/ipv4/tcp_stdurg .
-Linux は、デフォルトでは urgent ポインタフィールドの解釈に
-BSD 互換の方法を用いる。これは RFC\ 1122 に反しているが、
-他のスタックと同時に動作させるにはやむを得ない。これは
-.I /proc/sys/net/ipv4/tcp_stdurg
-によって変更できる。
+Linux は、デフォルトでは urgent ポインタフィールドの解釈に BSD 互換の方法を用いる。これは RFC\ 1122 に反しているが、
+他のスタックと同時に動作させるにはやむを得ない。これは \fI/proc/sys/net/ipv4/tcp_stdurg\fP によって変更できる。
 
-.\"O It is possible to peek at out-of-band data using the
-.\"O .IR recv (2)
-.\"O .B MSG_PEEK
-.\"O flag.
-.BR recv (2)
-の
-.B MSG_PEEK
-フラグを使うと、帯域外データを覗き見することができる。
+\fBrecv\fP(2)  の \fBMSG_PEEK\fP フラグを使うと、帯域外データを覗き見することができる。
 
-.\"O Since version 2.4, Linux supports the use of
-.\"O .B MSG_TRUNC
-.\"O in the
-.\"O .I flags
-.\"O argument of
-.\"O .BR recv (2)
-.\"O (and
-.\"O .BR recvmsg (2)).
-Linux 2.4 以降では、
-.BR recv (2)
-(や
-.BR recvmsg (2))
-の
-.I flags
-引き数に
-.B MSG_TRUNC
-を使うことができる。
-.\"O This flag causes the received bytes of data to be discarded,
-.\"O rather than passed back in a caller-supplied buffer.
-.\"O Since Linux 2.4.4,
-.\"O .BR MSG_PEEK
-.\"O also has this effect when used in conjunction with
-.\"O .BR MSG_OOB
-.\"O to receive out-of-band data.
-このフラグを指定すると、受信データは、呼び出し元から渡されたバッファ
-にコピーされて返されるのではなく、廃棄されるようになる。
-Linux 2.4.4 以降では、
-.B MSG_PEEK
-を、帯域外データを受信するための
-.B MSG_OOB
+Linux 2.4 以降では、 \fBrecv\fP(2)  (や \fBrecvmsg\fP(2))  の \fIflags\fP 引き数に \fBMSG_TRUNC\fP
+を使うことができる。 このフラグを指定すると、受信データは、呼び出し元から渡されたバッファ にコピーされて返されるのではなく、廃棄されるようになる。
+Linux 2.4.4 以降では、 \fBMSG_PEEK\fP を、帯域外データを受信するための \fBMSG_OOB\fP
 と組み合わせて使った場合にも、これと同じ効果を持つようになっている。
-.\"O .SS Ioctlsl
 .SS ioctl
-.\"O These following
-.\"O .BR ioctl (2)
-.\"O calls return information in
-.\"O .IR value .
-.\"O The correct syntax is:
-以下の
-.BR ioctl (2)
-呼び出しは
-.I value
-に情報を入れて返す。
+以下の \fBioctl\fP(2) 呼び出しは \fIvalue\fP に情報を入れて返す。
 正しい書式は以下の通り。
 .PP
 .RS
 .nf
-.BI int " value";
-.IB error " = ioctl(" tcp_socket ", " ioctl_type ", &" value ");"
+\fBint\fP\fI value\fP\fB;\fP
+\fIerror\fP\fB = ioctl(\fP\fItcp_socket\fP\fB, \fP\fIioctl_type\fP\fB, &\fP\fIvalue\fP\fB);\fP
 .fi
 .RE
 .PP
-.\"O .I ioctl_type
-.\"O is one of the following:
-.I ioctl_type
-は以下のいずれか一つである:
-.TP
-.B SIOCINQ
-.\"O Returns the amount of queued unread data in the receive buffer.
-.\"O The socket must not be in LISTEN state, otherwise an error
-.\"O .RB ( EINVAL )
-.\"O is returned.
-受信バッファのキューにある、まだ読んでいないデータの量を返す。
-ソケットは LISTEN 状態にあってはならず、
-さもないとエラー
-.RB ( EINVAL )
-が返る。
-.TP
-.B SIOCATMARK
-.\"O Returns true (i.e.,
-.\"O .I value
-.\"O is nonzero) if the inbound data stream is at the urgent mark.
-受信データストリームが緊急マークの位置であれば、真を返す (つまり
-.I value
-が 0 以外)。
-.sp
-.\"O If the
-.\"O .B SO_OOBINLINE
-.\"O socket option is set, and
-.\"O .B SIOCATMARK
-.\"O returns true, then the
-.\"O next read from the socket will return the urgent data.
-.\"O If the
-.\"O .B SO_OOBINLINE
-.\"O socket option is not set, and
-.\"O .B SIOCATMARK
-.\"O returns true, then the
-.\"O next read from the socket will return the bytes following
-.\"O the urgent data (to actually read the urgent data requires the
-.\"O .B recv(MSG_OOB)
-.\"O flag).
-.B SO_OOBINLINE
-ソケットオプションが設定されていて、
-.B SIOCATMARK
-が真を返した場合、次のソケットからの読み込みでは緊急データが
-返される。
-.B SO_OOBINLINE
-ソケットオプションが設定されておらず、
-.B SIOCATMARK
-が真を返した場合、次のソケットからの読み込みでは緊急データに
-続くデータが返される (実際に緊急データを読み込むには
-.B recv(MSG_OOB)
-とフラグをつける必要がある)。
+\fIioctl_type\fP は以下のいずれか一つである:
+.TP 
+\fBSIOCINQ\fP
+.\" FIXME http://sources.redhat.com/bugzilla/show_bug.cgi?id=12002,
+.\" filed 2010-09-10, may cause SIOCINQ to be defined in glibc headers
+受信バッファのキューにある、まだ読んでいないデータの量を返す。ソケットは
+LISTEN 状態にあってはならず、さもないとエラー (\fBEINVAL\fP) が返る。
+\fBSIOCINQ\fP は \fI<linux/sockios.h>\fP で定義されている。
+代わりに、\fI<sys/ioctl.h>\fP で定義されている、同義語の \fBFIONREAD\fP
+を使うこともできる。
+.TP 
+\fBSIOCATMARK\fP
+受信データストリームが緊急マークの位置であれば、真を返す (つまり \fIvalue\fP が 0 以外)。
 
-.\"O Note that a read never reads across the urgent mark.
-.\"O If an application is informed of the presence of urgent data via
-.\"O .BR select (2)
-.\"O (using the
-.\"O .I exceptfds
-.\"O argument) or through delivery of a
-.\"O .B SIGURG
-.\"O signal,
-.\"O then it can advance up to the mark using a loop which repeatedly tests
-.\"O .B SIOCATMARK
-.\"O and performs a read (requesting any number of bytes) as long as
-.\"O .B SIOCATMARK
-.\"O returns false.
-データの一回の読み込みでは緊急マークを跨がっての読み込みは行われない。
-アプリケーションが緊急データの存在を
-.RI ( exceptfds
-引き数を使って)
-.BR select (2)
-経由または
-.B SIGURG
-シグナルの配送を通じて知らされた場合、
-.B SIOCATMARK
-のチェックと読み込み (何バイト読み込み要求をしてもよい) を
-.B SIOCATMARK
-が偽を返さなくなるまで繰り返し行うことで、緊急マークの位置まで
-読み進めることができる。
-.TP
-.B SIOCOUTQ
-.\"O Returns the amount of unsent data in the socket send queue.
-.\"O The socket must not be in LISTEN state, otherwise an error
-.\"O .RB ( EINVAL )
-.\"O is returned.
-ソケットの送信キューに残っている未送信データの量を返す。
-ソケットは LISTEN 状態にあってはならない。
-LISTEN 状態の場合にはエラー
-.RB ( EINVAL )
-となる。
-.\"O .SS Error Handling
+\fBSO_OOBINLINE\fP ソケットオプションが設定されていて、 \fBSIOCATMARK\fP
+が真を返した場合、次のソケットからの読み込みでは緊急データが 返される。 \fBSO_OOBINLINE\fP ソケットオプションが設定されておらず、
+\fBSIOCATMARK\fP が真を返した場合、次のソケットからの読み込みでは緊急データに 続くデータが返される (実際に緊急データを読み込むには
+\fBrecv(MSG_OOB)\fP とフラグをつける必要がある)。
+
+データの一回の読み込みでは緊急マークを跨がっての読み込みは行われない。 アプリケーションが緊急データの存在を (\fIexceptfds\fP
+引き数を使って)  \fBselect\fP(2)  経由または \fBSIGURG\fP シグナルの配送を通じて知らされた場合、 \fBSIOCATMARK\fP
+のチェックと読み込み (何バイト読み込み要求をしてもよい) を \fBSIOCATMARK\fP
+が偽を返さなくなるまで繰り返し行うことで、緊急マークの位置まで 読み進めることができる。
+.TP 
+\fBSIOCOUTQ\fP
+.\" FIXME http://sources.redhat.com/bugzilla/show_bug.cgi?id=12002,
+.\" filed 2010-09-10, may cause SIOCOUTQ to be defined in glibc headers
+ソケットの送信キューに残っている未送信データの量を返す。ソケットは LISTEN 状
+態にあってはならない。 LISTEN 状態の場合にはエラー (\fBEINVAL\fP) となる。
+\fBSIOCOUTQ\fP は \fI<linux/sockios.h>\fP で定義されている。
+代わりに、\fI<sys/ioctl.h>\fP で定義されている、同義語の \fBTIOCOUTQ\fP を
+使うこともできる。
 .SS エラー処理
-.\"O When a network error occurs, TCP tries to resend the packet.
-.\"O If it doesn't succeed after some time, either
-.\"O .B ETIMEDOUT
-.\"O or the last received error on this connection is reported.
-ネットワークエラーが起こると、 TCP はパケットの再送を試みる。
-何回かやっても成功しなければ、この接続に対して
-.B ETIMEOUT
+ネットワークエラーが起こると、 TCP はパケットの再送を試みる。 何回かやっても成功しなければ、この接続に対して \fBETIMEOUT\fP
 エラーか最後に受信したエラーが返される。
 .PP
-.\"O Some applications require a quicker error notification.
-.\"O This can be enabled with the
-.\"O .B IPPROTO_IP
-.\"O level
-.\"O .B IP_RECVERR
-.\"O socket option.
-.\"O When this option is enabled, all incoming
-.\"O errors are immediately passed to the user program.
-.\"O Use this option with care \(em it makes TCP less tolerant to routing
-.\"O changes and other normal network conditions.
-アプリケーションによっては、もっと早くエラーを知らせてほしい場合がある。
-これには
-.B IPPROTO_IP
-レベルの
-.B IP_RECVERR
-ソケットオプションを用いると良い。このオプションが有効になっていると、
-到着したエラーはすべてただちにユーザープログラムに渡される。
-このオプションは慎重に用いること \(em ルーティングの変更など、
-通常ありうるネットワーク状態に対して TCP をより脆弱にしてしまう。
-.\"O .SH ERRORS
+アプリケーションによっては、もっと早くエラーを知らせてほしい場合がある。 これには \fBIPPROTO_IP\fP レベルの \fBIP_RECVERR\fP
+ソケットオプションを用いると良い。このオプションが有効になっていると、 到着したエラーはすべてただちにユーザープログラムに渡される。
+このオプションは慎重に用いること \(em ルーティングの変更など、 通常ありうるネットワーク状態に対して TCP をより脆弱にしてしまう。
 .SH エラー
-.TP
-.B EAFNOTSUPPORT
-.\"O Passed socket address type in
-.\"O .I sin_family
-.\"O was not
-.\"O .BR AF_INET .
-.I sin_family
-に渡されたソケットアドレスのタイプが
-.B AF_INET
-ではなかった。
-.TP
-.B EPIPE
-.\"O The other end closed the socket unexpectedly or a read is
-.\"O executed on a shut down socket.
-接続先が予期しなかったかたちでソケットをクローズした。
-またはシャットダウンされたソケットに読み込みが実行された。
-.TP
-.B ETIMEDOUT
-.\"O The other end didn't acknowledge retransmitted data after some time.
+.TP 
+\fBEAFNOTSUPPORT\fP
+\fIsin_family\fP に渡されたソケットアドレスのタイプが \fBAF_INET\fP ではなかった。
+.TP 
+\fBEPIPE\fP
+接続先が予期しなかったかたちでソケットをクローズした。 またはシャットダウンされたソケットに読み込みが実行された。
+.TP 
+\fBETIMEDOUT\fP
 接続先が、何回かデータを再送しても反応しない。
 .PP
-.\"O Any errors defined for
-.\"O .BR ip (7)
-.\"O or the generic socket layer may also be returned for TCP.
-.BR ip (7)
-で定義されているエラーや、ジェネリックなソケット層におけるエラーも
-TCP に返されることがある。
-.\"O .SH VERSIONS
+\fBip\fP(7)  で定義されているエラーや、ジェネリックなソケット層におけるエラーも TCP に返されることがある。
 .SH バージョン
-.\"O Support for Explicit Congestion Notification, zero-copy
-.\"O .BR sendfile (2),
-.\"O reordering support and some SACK extensions
-.\"O (DSACK) were introduced in 2.4.
-.\"O Support for forward acknowledgement (FACK), TIME_WAIT recycling,
-.\"O and per-connection keepalive socket options were introduced in 2.3.
-Explicit Congestion Notification、zero-copy の
-.BR sendfile (2)、
-並び替えのサポート、SACK 拡張 (DSACK) などのサポートは
-2.4 で導入された。
-フォワード確認 (FACK)、TIME_WAIT リサイクル、接続ごとの keepalive
-に対するソケットオプションは 2.3 で導入された。
-.\"O .SH BUGS
+Explicit Congestion Notification、zero\-copy の \fBsendfile\fP(2)、 並び替えのサポート、SACK
+拡張 (DSACK) などのサポートは 2.4 で導入された。 フォワード確認 (FACK)、TIME_WAIT リサイクル、接続ごとの
+keepalive に対するソケットオプションは 2.3 で導入された。
 .SH バグ
-.\"O Not all errors are documented.
 まだ説明されていないエラーがある。
 .br
-.\"O IPv6 is not described.
-IPv6 に関する記述がない。
 .\" Only a single Linux kernel version is described
 .\" Info for 2.2 was lost. Should be added again,
 .\" or put into a separate page.
-.\"O .SH .\" AUTHORS
-.\" .SH 著者
-.\"O .\" This man page was originally written by Andi Kleen.
-.\"O .\" It was updated for 2.4 by Nivedita Singhvi with input from
-.\"O .\" Alexey Kuznetsov's Documentation/networking/ip-sysctl.txt
-.\"O .\" document.
-.\" この man ページは最初 Andi Kleen によって書かれた。
-.\" Alexey Kuznetsov の文書 Documentation/networking/ip-sysctl.txt
-.\" の情報を元に、Nivedita Singhvi が 2.4 向けに更新した。
-.\"O .SH "SEE ALSO"
+.\" .SH AUTHORS
+.\" This man page was originally written by Andi Kleen.
+.\" It was updated for 2.4 by Nivedita Singhvi with input from
+.\" Alexey Kuznetsov's Documentation/networking/ip-sysctl.txt
+.\" document.
+IPv6 に関する記述がない。
 .SH 関連項目
-.BR accept (2),
-.BR bind (2),
-.BR connect (2),
-.BR getsockopt (2),
-.BR listen (2),
-.BR recvmsg (2),
-.BR sendfile (2),
-.BR sendmsg (2),
-.BR socket (2),
-.BR ip (7),
-.BR socket (7)
+\fBaccept\fP(2), \fBbind\fP(2), \fBconnect\fP(2), \fBgetsockopt\fP(2), \fBlisten\fP(2),
+\fBrecvmsg\fP(2), \fBsendfile\fP(2), \fBsendmsg\fP(2), \fBsocket\fP(2), \fBip\fP(7),
+\fBsocket\fP(7)
 .sp
-.\"O RFC\ 793 for the TCP specification.
 RFC\ 793: TCP の仕様。
 .br
-.\"O RFC\ 1122 for the TCP requirements and a description of the Nagle algorithm.
 RFC\ 1122: TCP の要求事項と Nagle アルゴリズムの記述。
 .br
-.\"O RFC\ 1323 for TCP timestamp and window scaling options.
 RFC\ 1323: TCP のタイムスタンプ・ウィンドウスケーリング各オプション。
 .br
-.\"O RFC\ 1644 for a description of TIME_WAIT assassination hazards.
-RFC\ 1644: TIME_WAIT assassination hazard に関する記述。
+RFC\ 1337: TIME_WAIT assassination hazard に関する説明。
 .br
-.\"O RFC\ 3168 for a description of Explicit Congestion Notification.
-RFC\ 3168: Explicit Congestion Notification に関する記述。
+RFC\ 3168: Explicit Congestion Notification に関する説明。
 .br
-.\"O RFC\ 2581 for TCP congestion control algorithms.
 RFC\ 2581: TCP 輻輳制御アルゴリズム。
 .br
-.\"O RFC\ 2018 and RFC\ 2883 for SACK and extensions to SACK.
 RFC\ 2018 と RFC\ 2883: SACK とその拡張。
index 2e42e48..69e8c00 100644 (file)
 .\"
 .\" 28 Dec 2006 - Initial Creation
 .\"
-.\" Japanese Version Copyright (c) 2007  Akihiro MOTOKI
-.\"         all rights reserved.
-.\" Translated 2007-05-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.44
+.\"*******************************************************************
 .\"
-.TH TERMIO 7 2006-12-28 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH TERMIO 7 2006\-12\-28 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O termio \- System V terminal driver interface
 termio \- System V 端末ドライバインタフェース
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O .B termio
-.\"O is the name of the old System V terminal driver interface.
-.\"O This interface defined a
-.\"O .I termio
-.\"O structure used to store terminal settings, and a range of
-.\"O .BR ioctl (2)
-.\"O operations to get and set terminal attributes.
-.B termio
-は、古い System V 端末ドライバインタフェースの名前である。
-このインタフェースは、
-端末設定を保持するための
-.I termio
-構造体、および端末属性を取得・変更するための種々の
-.BR ioctl (2)
-操作を定義していた。
+\fBtermio\fP は、古い System V 端末ドライバインタフェースの名前である。 このインタフェースは、 端末設定を保持するための
+\fItermio\fP 構造体、および端末属性を取得・変更するための種々の \fBioctl\fP(2)  操作を定義していた。
 
-.\"O The
-.\"O .B termio
-.\"O interface is now obsolete: POSIX.1-1990 standardized a modified
-.\"O version of this interface, under the name
-.\"O .BR termios .
-.\"O The POSIX.1 data structure differs slightly from the
-.\"O System V version, and POSIX.1 defined a suite of functions
-.\"O to replace the various
-.\"O .BR ioctl (2)
-.\"O operations that existed in System V.
-.\"O (This was done because
-.\"O .BR ioctl (2)
-.\"O was unstandardized, and its variadic third argument
-.\"O does not allow argument type checking.)
-.B termio
-インタフェースは現在では時代遅れである。
-POSIX.1-1990 で、このインタフェースの修正版が
-.B termios
-という名前で標準化された。
-POSIX.1 のデータ構造は System V 版と少し違いがある。
-また、POSIX.1 は System V 版で存在した種々の
-.BR ioctl (2)
-操作を置き換える関数群を定義した
-(このようになったのは、
-.BR ioctl (2)
-が標準化されていなかったことと、
-.BR ioctl (2)
-の第三引き数が可変長引き数で型チェックができなかったのが理由である)。
+\fBtermio\fP インタフェースは現在では時代遅れである。 POSIX.1\-1990 で、このインタフェースの修正版が \fBtermios\fP
+という名前で標準化された。 POSIX.1 のデータ構造は System V 版と少し違いがある。 また、POSIX.1 は System V
+版で存在した種々の \fBioctl\fP(2)  操作を置き換える関数群を定義した (このようになったのは、 \fBioctl\fP(2)
+が標準化されていなかったことと、 \fBioctl\fP(2)  の第三引き数が可変長引き数で型チェックができなかったのが理由である)。
 
-.\"O If you're looking for page called "termio", then you can probably
-.\"O find most of the information that you seek in either
-.\"O .BR termios (3)
-.\"O or
-.\"O .BR tty_ioctl (4).
-"termio" という man page を探しているのであれば、
-探している情報のほとんどは
-.BR termios (3)
-か
-.BR tty_ioctl (4)
-のどちらかで見つかることだろう。
-.\"O .SH "SEE ALSO"
+"termio" という man page を探しているのであれば、 探している情報のほとんどは \fBtermios\fP(3)  か
+\fBtty_ioctl\fP(4)  のどちらかで見つかることだろう。
 .SH 関連項目
-.BR termios (3),
-.BR tty_ioctl (4)
+\fBtermios\fP(3), \fBtty_ioctl\fP(4)
index 36894eb..508375f 100644 (file)
 .\" 2008-06-24, mtk: added some details about where jiffies come into
 .\"     play; added section on high-resolution timers.
 .\"
-.\" Japanese Version Copyright (c) 2006 Yuichi SATO
-.\"         all rights reserved.
-.\" Translated 2006-07-23 by Yuichi SATO <ysato444@yahoo.co.jp>, LDP v2.36
-.\" Updated 2007-05-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.44
-.\" Updated 2008-08-10, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.05
+.\"*******************************************************************
 .\"
-.TH TIME 7 2010-02-25 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH TIME 7 2010\-02\-25 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O time \- overview of time and timers
 time \- 時間とタイマの概要
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O .SS "Real time and process time"
 .SS "実時間 (real time) とプロセス時間"
-.\"O .I "Real time"
-.\"O is defined as time measured from some fixed point,
-.\"O either from a standard point in the past
-.\"O (see the description of the Epoch and calendar time below),
-.\"O or from some point (e.g., the start) in the life of a process
-.\"O .RI ( "elapsed time" ).
-\fI実時間\fRは、特定の時点から計った時間と定義される。
-特定の時点とは、過去の標準的な時点
-(下記の紀元 (Epoch) とカレンダ時刻の説明を参照) や、
-プロセスの一生における何らかの時点 (例えば、開始時) である
-.RI ( "経過時間" )。
+\fI実時間\fPは、特定の時点から計った時間と定義される。 特定の時点とは、過去の標準的な時点 (下記の紀元 (Epoch) とカレンダ時刻の説明を参照)
+や、 プロセスの一生における何らかの時点 (例えば、開始時) である (\fI経過時間\fP)。
 
-.\"O .I "Process time"
-.\"O is defined as the amount of CPU time used by a process.
-.\"O This is sometimes divided into
-.\"O .I user
-.\"O and
-.\"O .I system
-.\"O components.
-\fIプロセス時間\fRは、プロセスによって使われた総 CPU 時間と定義される。
-多くの場合、\fIユーザ\fR時間と\fIシステム\fR時間に分けられる。
-.\"O User CPU time is the time spent executing code in user mode.
-.\"O System CPU time is the time spent by the kernel executing
-.\"O in system mode on behalf of the process (e.g., executing system calls).
-ユーザ CPU 時間は、コードをユーザモードで実行するのに使った時間である。
-システム CPU 時間は、そのプロセスのために
-カーネルがシステムモードで実行するのに使った時間である
-(例えば、システムコールを実行するのに使った時間)。
-.\"O The
-.\"O .BR time (1)
-.\"O command can be used to determine the amount of CPU time consumed
-.\"O during the execution of a program.
-.BR time (1)
-コマンドはプログラムの実行に費された総 CPU 時間を計るのに使用される。
-.\"O A program can determine the amount of CPU time it has consumed using
-.\"O .BR times (2),
-.\"O .BR getrusage (2),
-.\"O or
-.\"O .BR clock (3).
-プログラムは、自身が費した総 CPU 時間を
-.BR times (2),
-.BR getrusage (2),
-.BR clock (3)
-を使って計ることができる。
-.\"O .SS "The Hardware Clock"
+\fIプロセス時間\fPは、プロセスによって使われた総 CPU 時間と定義される。 多くの場合、\fIユーザ\fP時間と\fIシステム\fP時間に分けられる。 ユーザ
+CPU 時間は、コードをユーザモードで実行するのに使った時間である。 システム CPU 時間は、そのプロセスのために
+カーネルがシステムモードで実行するのに使った時間である (例えば、システムコールを実行するのに使った時間)。 \fBtime\fP(1)
+コマンドはプログラムの実行に費された総 CPU 時間を計るのに使用される。 プログラムは、自身が費した総 CPU 時間を \fBtimes\fP(2),
+\fBgetrusage\fP(2), \fBclock\fP(3)  を使って計ることができる。
 .SS ハードウェアクロック
-.\"O Most computers have a (battery-powered) hardware clock which the kernel
-.\"O reads at boot time in order to initialize the software clock.
-多くのコンピュータが (電池で駆動される) ハードウェアクロックを持っている。
-カーネルは起動時にソフトウェアクロックを初期化するために
-ハードウェアクロックを読み込む。
-.\"O For further details, see
-.\"O .BR rtc (4)
-.\"O and
-.\"O .BR hwclock (8).
-より詳しい情報は、
-.BR rtc (4)
-と
-.BR hwclock (8)
-を参照すること。
-.\"O .SS "The Software Clock, HZ, and Jiffies"
-.\"Osato: 以下では jiffies は単数形 jiffy に統一している。
+多くのコンピュータが (電池で駆動される) ハードウェアクロックを持っている。 カーネルは起動時にソフトウェアクロックを初期化するために
+ハードウェアクロックを読み込む。 より詳しい情報は、 \fBrtc\fP(4)  と \fBhwclock\fP(8)  を参照すること。
 .SS "ソフトウェアクロック, HZ, Jiffy"
-.\"O The accuracy of various system calls that set timeouts,
-.\"O (e.g.,
-.\"O .BR select (2),
-.\"O .BR sigtimedwait (2))
-.\"O .\" semtimedop(), mq_timedwait(), io_getevents(), poll() are the same
-.\"O .\" futexes and thus sem_timedwait() seem to use high-res timers.
-.\"O and measure CPU time (e.g.,
-.\"O .BR getrusage (2))
-.\"O is limited by the resolution of the
-.\"O .IR "software clock" ,
-.\"O a clock maintained by the kernel which measures time in
-.\"O .IR jiffies .
-.\"O The size of a jiffy is determined by the value of the kernel constant
-.\"O .IR HZ .
-タイムアウトを設定したり (例えば
-.BR select (2),
-.BR sigtimedwait (2))、
-.\" semtimedop(), mq_timedwait(), io_getevents(), poll() は同じ futex であり、
-.\" したがっって sem_timedwait() は高精度タイマを使用しているようである。
-CPU 時間を計測したり (例えば
-.BR getrusage (2)) する様々なシステムコールの精度は
-.I ソフトウェアクロック
-の分解能 (resolution) に制限される。
-ソフトウェアクロックとは、カーネルが管理する
-.I jiffy
-単位で時間を計測するクロックのことである。
-jiffy の大きさはカーネル定数
-.I HZ
-の値で決定される。
+.\" semtimedop(), mq_timedwait(), io_getevents(), poll() are the same
+.\" futexes and thus sem_timedwait() seem to use high-res timers.
+タイムアウトを設定したり (例えば \fBselect\fP(2), \fBsigtimedwait\fP(2))、 CPU 時間を計測したり (例えば
+\fBgetrusage\fP(2))\fBする様々なシステムコールの精度は\fP \fIソフトウェアクロック\fP の分解能 (resolution) に制限される。
+ソフトウェアクロックとは、カーネルが管理する \fIjiffy\fP 単位で時間を計測するクロックのことである。 jiffy の大きさはカーネル定数
+\fIHZ\fP の値で決定される。
 
-.\"O The value of
-.\"O .I HZ
-.\"O varies across kernel versions and hardware platforms.
-.I HZ
-の値はカーネルのバージョンとハードウェアプラットフォームで異なる。
-.\"O On i386 the situation is as follows:
-.\"O on kernels up to and including 2.4.x, HZ was 100,
-.\"O giving a jiffy value of 0.01 seconds;
-.\"O starting with 2.6.0, HZ was raised to 1000, giving a jiffy of
-.\"O 0.001 seconds.
-.\"O Since kernel 2.6.13, the HZ value is a kernel
-.\"O configuration parameter and can be 100, 250 (the default) or 1000,
-.\"O yielding a jiffies value of, respectively, 0.01, 0.004, or 0.001 seconds.
-i386 の場合は以下の通りである:
-2.4.x とそれより前のカーネルでは、HZ は 100 であったので、
-jiffy の値は 0.01 秒になっていた。
-2.6.0 以降では、HZ は 1000 に増やされたので、jiffy の値は 0.001 秒である。
-カーネル 2.6.13 以降では、HZ の値はカーネル設定パラメータになり、
-100, 250 (デフォルト), 1000 という値にできる。
-それぞれ jiffy の値は 0.01, 0.004, 0.001 秒になる。
-.\"O Since kernel 2.6.20, a further frequency is available:
-.\"O 300, a number that divides evenly for the common video
-.\"O frame rates (PAL, 25 HZ; NTSC, 30 HZ).
-カーネル 2.6.20 以降では、300 も利用できるようになっている。
-300 は一般的な映像フレームレートの公倍数である (PAL, 25HZ; NTSC, 30HZ)。
+\fIHZ\fP の値はカーネルのバージョンとハードウェアプラットフォームで異なる。 i386 の場合は以下の通りである: 2.4.x
+とそれより前のカーネルでは、HZ は 100 であったので、 jiffy の値は 0.01 秒になっていた。 2.6.0 以降では、HZ は 1000
+に増やされたので、jiffy の値は 0.001 秒である。 カーネル 2.6.13 以降では、HZ の値はカーネル設定パラメータになり、 100,
+250 (デフォルト), 1000 という値にできる。 それぞれ jiffy の値は 0.01, 0.004, 0.001 秒になる。 カーネル
+2.6.20 以降では、300 も利用できるようになっている。 300 は一般的な映像フレームレートの公倍数である (PAL, 25HZ; NTSC,
+30HZ)。
 
-.\"O The
-.\"O .BR times (2)
-.\"O system call is a special case.
-.\"O It reports times with a granularity defined by the kernel constant
-.\"O .IR USER_HZ .
-.\"O Userspace applications can determine the value of this constant using
-.\"O .IR sysconf(_SC_CLK_TCK) .
-.BR times (2)
-システムコールは特殊なケースであり、
-このシステムコールはカーネル定数
-.I USER_HZ
-で定義された粒度で時間を報告する。
-ユーザ空間のアプリケーションは
-.I sysconf(_SC_CLK_TCK)
-を使ってこの定数の値を知ることができる。
 .\" glibc gets this info with a little help from the ELF loader;
 .\" see glibc elf/dl-support.c and kernel fs/binfmt_elf.c.
 .\"
-.\"O .SS "High-Resolution Timers"
-.SS "高精度タイマ"
-.\"O Before Linux 2.6.21, the accuracy of timer and sleep system calls
-.\"O (see below) was also limited by the size of the jiffy.
-Linux 2.6.21 より前では、タイマやスリープ関連のシステムコールの精度も
-jiffy のサイズにより制限されていた。
+\fBtimes\fP(2)  システムコールは特殊なケースであり、 このシステムコールはカーネル定数 \fIUSER_HZ\fP
+で定義された粒度で時間を報告する。 ユーザ空間のアプリケーションは \fIsysconf(_SC_CLK_TCK)\fP
+を使ってこの定数の値を知ることができる。
+.SS 高精度タイマ
+Linux 2.6.21 より前では、タイマやスリープ関連のシステムコールの精度も jiffy のサイズにより制限されていた。
 
-.\"O Since Linux 2.6.21, Linux supports high-resolution timers (HRTs),
-.\"O optionally configurable via
-.\"O .BR CONFIG_HIGH_RES_TIMERS .
-.\"O On a system that supports HRTs, the accuracy of sleep and timer
-.\"O system calls is no longer constrained by the jiffy,
-.\"O but instead can be as accurate as the hardware allows
-.\"O (microsecond accuracy is typical of modern hardware).
-.\"O You can determine whether high-resolution timers are supported by
-.\"O checking the resolution returned by a call to
-.\"O .BR clock_getres (2)
-.\"O or looking at the "resolution" entries in
-.\"O .IR /proc/timer_list .
-Linux 2.6.21 以降では、Linux は高精度タイマ (high-resolution timers; HRTs)
-をサポートしており、
-.B CONFIG_HIGH_RES_TIMERS
-で制御できる。
-高精度タイマをサポートしているシステムでは、タイマとスリープ関連のシステムコール
-の精度はもはや jiffy に制約されることはなく、
-ハードウェアが許す限りの精度となる
-(最近のハードウェアではマイクロ秒単位の精度が一般的である)。
-高精度タイマがサポートされているかは、
-.BR clock_getres (2)
-を呼び出して分解能を確認するか、
-.I /proc/timer_list
+Linux 2.6.21 以降では、Linux は高精度タイマ (high\-resolution timers; HRTs)  をサポートしており、
+\fBCONFIG_HIGH_RES_TIMERS\fP で制御できる。 高精度タイマをサポートしているシステムでは、タイマとスリープ関連のシステムコール
+の精度はもはや jiffy に制約されることはなく、 ハードウェアが許す限りの精度となる (最近のハードウェアではマイクロ秒単位の精度が一般的である)。
+高精度タイマがサポートされているかは、 \fBclock_getres\fP(2)  を呼び出して分解能を確認するか、 \fI/proc/timer_list\fP
 内の "resolution" エントリを参照するかで判断できる。
 
-.\"O HRTs are not supported on all hardware architectures.
-.\"O (Support is provided on x86, arm, and powerpc, among others.)
-高精度タイマはすべてのハードウェアアーキテクチャでサポートされている
-訳ではない (対応しているアーキテクチャは x86, arm, powerpc である)。
-.\"O .SS "The Epoch"
-.SS "紀元"
-.\"O UNIX systems represent time in seconds since the
-.\"O .IR Epoch ,
-.\"O 1970-01-01 00:00:00 +0000 (UTC).
-UNIX システムは時刻を
-紀元 (1970-01-01 00:00:00 +0000 (UTC)) からの秒数で表現する。
+高精度タイマはすべてのハードウェアアーキテクチャでサポートされている 訳ではない (対応しているアーキテクチャは x86, arm, powerpc
+である)。
+.SS 紀元
+UNIX システムは時刻を 紀元 (1970\-01\-01 00:00:00 +0000 (UTC)) からの秒数で表現する。
 
-.\"O A program can determine the
-.\"O .I "calendar time"
-.\"O using
-.\"O .BR gettimeofday (2),
-.\"O which returns time (in seconds and microseconds) that have
-.\"O elapsed since the Epoch;
-プログラムは \fIカレンダ時刻\fR を
-.BR gettimeofday (2)
-を使って計ることができる。
-この関数は紀元からの経過時間を (秒とマイクロ秒で) 返す。
-.\"O .BR time (2)
-.\"O provides similar information, but only with accuracy to the
-.\"O nearest second.
-.\"O The system time can be changed using
-.\"O .BR settimeofday (2).
-.BR time (2)
-は同様の情報を提供するが、最も近い秒の精度しかない。
-システム時刻は
-.BR settimeofday (2)
-で変更できる。
-.\"O .SS "Broken-down time"
-.SS "要素別の時刻"
-.\"O Certain library functions use a structure of
-.\"O type
-.\"O .I tm
-.\"O to represent
-.\"O .IR "broken-down time" ,
-.\"O which stores time value separated out into distinct components
-.\"O (year, month, day, hour, minute, second, etc.).
-ライブラリ関数の中には
-.I tm
-型の構造体を使うものがある。
-この構造体は\fI要素別の時刻\fRを表し、
-時刻の値を別々の要素 (年・月・日・時・分・秒など) に分けて格納する。
-.\"O This structure is described in
-.\"O .BR ctime (3),
-.\"O which also describes functions that convert between calendar time and
-.\"O broken-down time.
-この構造体は
-.BR ctime (3)
-に記述されており、カレンダ時刻を要素別の時刻に変換する
-関数についても記述されている。
-.\"O Functions for converting between broken-down time and printable
-.\"O string representations of the time are described in
-.\"O .BR ctime (3),
-.\"O .BR strftime (3),
-.\"O and
-.\"O .BR strptime (3).
-要素別の時刻を表示可能な文字列に変換する関数については、
-.BR ctime (3),
-.BR strftime (3),
-.BR strptime (3)
-に記述されている。
-.\"O .SS "Sleeping and Setting Timers"
-.SS "タイマのスリープと設定"
-.\"O Various system calls and functions allow a program to sleep
-.\"O (suspend execution) for a specified period of time; see
-.\"O .BR nanosleep (2),
-.\"O .BR clock_nanosleep (2),
-.\"O and
-.\"O .BR sleep (3).
-様々なシステムコールと関数により、指定された一定の時間、
-プログラムはスリープ (実行を停止) することが可能である。
-.BR nanosleep (2),
-.BR clock_nanosleep (2),
-.BR sleep (3)
-を参照すること。
+プログラムは \fIカレンダ時刻\fP を \fBgettimeofday\fP(2)  を使って計ることができる。 この関数は紀元からの経過時間を
+(秒とマイクロ秒で) 返す。 \fBtime\fP(2)  は同様の情報を提供するが、最も近い秒の精度しかない。 システム時刻は
+\fBsettimeofday\fP(2)  で変更できる。
+.SS 要素別の時刻
+ライブラリ関数の中には \fItm\fP 型の構造体を使うものがある。 この構造体は\fI要素別の時刻\fPを表し、 時刻の値を別々の要素
+(年・月・日・時・分・秒など) に分けて格納する。 この構造体は \fBctime\fP(3)  に記述されており、カレンダ時刻を要素別の時刻に変換する
+関数についても記述されている。 要素別の時刻を表示可能な文字列に変換する関数については、 \fBctime\fP(3), \fBstrftime\fP(3),
+\fBstrptime\fP(3)  に記述されている。
+.SS タイマのスリープと設定
+様々なシステムコールと関数により、指定された一定の時間、 プログラムはスリープ (実行を停止) することが可能である。 \fBnanosleep\fP(2),
+\fBclock_nanosleep\fP(2), \fBsleep\fP(3)  を参照すること。
 
-.\"O Various system calls allow a process to set a timer that expires
-.\"O at some point in the future, and optionally at repeated intervals;
-.\"O see
-.\"O .BR alarm (2),
-.\"O .BR getitimer (2),
-.\"O .BR timerfd_create (2),
-.\"O and
-.\"O .BR timer_create (2).
-様々なシステムコールにより、プロセスは将来のある時点で
-有効期間が終了するタイマを設定できる。
-またオプションとして繰り返し間隔が指定できるものもある。
-.BR alarm (2),
-.BR getitimer (2),
-.BR timerfd_create (2),
-.BR timer_create (2)
+様々なシステムコールにより、プロセスは将来のある時点で 有効期間が終了するタイマを設定できる。 またオプションとして繰り返し間隔が指定できるものもある。
+\fBalarm\fP(2), \fBgetitimer\fP(2), \fBtimerfd_create\fP(2), \fBtimer_create\fP(2)
 を参照すること。
-.\"O .SH "SEE ALSO"
 .SH 関連項目
-.BR date (1),
-.BR time (1),
-.BR adjtimex (2),
-.BR alarm (2),
-.BR clock_gettime (2),
-.BR clock_nanosleep (2),
-.BR getitimer (2),
-.BR getrlimit (2),
-.BR getrusage (2),
-.BR gettimeofday (2),
-.BR nanosleep (2),
-.BR stat (2),
-.BR time (2),
-.BR timer_create (2),
-.BR timerfd_create (2),
-.BR times (2),
-.BR utime (2),
-.BR adjtime (3),
-.BR clock (3),
-.BR clock_getcpuclockid (3),
-.BR ctime (3),
-.BR pthread_getcpuclockid (3),
-.BR sleep (3),
-.BR strftime (3),
-.BR strptime (3),
-.BR timeradd (3),
-.BR usleep (3),
-.BR rtc (4),
-.BR hwclock (8)
+\fBdate\fP(1), \fBtime\fP(1), \fBadjtimex\fP(2), \fBalarm\fP(2), \fBclock_gettime\fP(2),
+\fBclock_nanosleep\fP(2), \fBgetitimer\fP(2), \fBgetrlimit\fP(2), \fBgetrusage\fP(2),
+\fBgettimeofday\fP(2), \fBnanosleep\fP(2), \fBstat\fP(2), \fBtime\fP(2),
+\fBtimer_create\fP(2), \fBtimerfd_create\fP(2), \fBtimes\fP(2), \fButime\fP(2),
+\fBadjtime\fP(3), \fBclock\fP(3), \fBclock_getcpuclockid\fP(3), \fBctime\fP(3),
+\fBpthread_getcpuclockid\fP(3), \fBsleep\fP(3), \fBstrftime\fP(3), \fBstrptime\fP(3),
+\fBtimeradd\fP(3), \fBusleep\fP(3), \fBrtc\fP(4), \fBhwclock\fP(8)
index 29fc835..bc5c830 100644 (file)
 .\" of the modification is added to the header.
 .\" $Id: udp.7,v 1.7 2000/01/22 01:55:05 freitag Exp $
 .\"
-.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
-.\" Translated 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated 2005-10-09, Kentaro Shirakata <argrath@ub32.org>
-.\" Updated 2007-01-05, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.43
-.\" Updated 2008-12-29, Akihiro MOTOKI, LDP v3.14
-.\" Updated 2010-04-10, Akihiro MOTOKI, LDP v3.24
+.\"*******************************************************************
 .\"
-.TH UDP  7 2009-09-30 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O udp \- User Datagram Protocol for IPv4
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH UDP 7 2010\-06\-13 Linux "Linux Programmer's Manual"
 .SH 名前
 udp \- IPv4 の ユーザーデータグラムプロトコル
-.\"O .SH SYNOPSIS
 .SH 書式
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .br
-.B #include <netinet/in.h>
+\fB#include <netinet/in.h>\fP
 .sp
-.B udp_socket = socket(AF_INET, SOCK_DGRAM, 0);
-.\"O .SH DESCRIPTION
+\fBudp_socket = socket(AF_INET, SOCK_DGRAM, 0);\fP
 .SH 説明
-.\"O This is an implementation of the User Datagram Protocol
-.\"O described in RFC\ 768.
-.\"O It implements a connectionless, unreliable datagram packet service.
-.\"O Packets may be reordered or duplicated before they arrive.
-.\"O UDP generates and checks checksums to catch transmission errors.
-これは RFC\ 768 で記述されている User Datagram Protocol の実装である。
-UDP はコネクションレスの、信頼性の低いデータパケットサービスである。
-パケットは到着前に並び替えられたり複製されたりする。
-UDP は転送エラーを検出するためにチェックサムを生成・チェックする。
+これは RFC\ 768 で記述されている User Datagram Protocol の実装である。 UDP
+はコネクションレスの、信頼性の低いデータパケットサービスである。 パケットは到着前に並び替えられたり複製されたりする。 UDP
+は転送エラーを検出するためにチェックサムを生成・チェックする。
 
-.\"O When a UDP socket is created,
-.\"O its local and remote addresses are unspecified.
-.\"O Datagrams can be sent immediately using
-.\"O .BR sendto (2)
-.\"O or
-.\"O .BR sendmsg (2)
-.\"O with a valid destination address as an argument.
-.\"O When
-.\"O .BR connect (2)
-.\"O is called on the socket, the default destination address is set and
-.\"O datagrams can now be sent using
-.\"O .BR send (2)
-.\"O or
-.\"O .BR write (2)
-.\"O without specifying a destination address.
-UDP ソケットが生成されるとき、
-ローカルアドレスやリモートアドレスは指定されない。
-正しい行き先アドレスを引数として
-.BR sendto (2)
-や
-.BR sendmsg (2)
-を呼べば、データグラムはただちに送信される。
-ソケットに対して
-.BR connect (2)
-を呼ぶと、デフォルトの行き先アドレスが設定され、
-.BR send (2)
-や
-.BR write (2)
-を使って、行き先アドレスの指定なしにデータグラムを送信できるようになる。
-.\"O It is still possible to send to other destinations by passing an
-.\"O address to
-.\"O .BR sendto (2)
-.\"O or
-.\"O .BR sendmsg (2).
-この場合でも、行き先アドレスを
-.BR sendto (2)
-や
-.BR sendmsg (2)
-に渡せば、デフォルト以外のアドレスに送信可能である。
-.\"O In order to receive packets, the socket can be bound to a local
-.\"O address first by using
-.\"O .BR bind (2).
-パケットを受信するために、まずソケットを
-.BR bind (2)
-を用いてローカルなアドレスにバインドさせることもできる。
-.\"O Otherwise the socket layer will automatically assign
-.\"O a free local port out of the range defined by
-.\"O .I /proc/sys/net/ipv4/ip_local_port_range
-.\"O and bind the socket to
-.\"O .BR INADDR_ANY .
-そうでない場合は、ソケット層は自動的に
-.I /proc/sys/net/ipv4/ip_local_port_range
-で定義されている範囲の外で空いているローカルなポートを割り当て、
-ソケットを
-.B INADDR_ANY
-にバインドする。
+UDP ソケットが生成されるとき、 ローカルアドレスやリモートアドレスは指定されない。 正しい行き先アドレスを引数として \fBsendto\fP(2)  や
+\fBsendmsg\fP(2)  を呼べば、データグラムはただちに送信される。 ソケットに対して \fBconnect\fP(2)
+を呼ぶと、デフォルトの行き先アドレスが設定され、 \fBsend\fP(2)  や \fBwrite\fP(2)
+を使って、行き先アドレスの指定なしにデータグラムを送信できるようになる。 この場合でも、行き先アドレスを \fBsendto\fP(2)  や
+\fBsendmsg\fP(2)  に渡せば、デフォルト以外のアドレスに送信可能である。 パケットを受信するために、まずソケットを \fBbind\fP(2)
+を用いてローカルなアドレスにバインドさせることもできる。 そうでない場合は、ソケット層は自動的に
+\fI/proc/sys/net/ipv4/ip_local_port_range\fP で定義されている範囲の外で空いているローカルなポートを割り当て、
+ソケットを \fBINADDR_ANY\fP にバインドする。
 
-.\"O All receive operations return only one packet.
-.\"O When the packet is smaller than the passed buffer, only that much
-.\"O data is returned, when it is bigger, the packet is truncated and the
-.\"O .B MSG_TRUNC
-.\"O flag is set.
-受信動作はパケットを一つだけ返す。渡したバッファよりもパケットが
-小さければ、そのパケットの大きさのデータだけが返される。
-逆にバッファよりも大きい場合はパケットは丸められ、
-.B MSG_TRUNC
-フラグがセットされる。
-.\"O .B MSG_WAITALL
-.\"O is not supported.
-.B MSG_WAITALL
+受信動作はパケットを一つだけ返す。渡したバッファよりもパケットが 小さければ、そのパケットの大きさのデータだけが返される。
+逆にバッファよりも大きい場合はパケットは丸められ、 \fBMSG_TRUNC\fP フラグがセットされる。 \fBMSG_WAITALL\fP
 はサポートしていない。
 
-.\"O IP options may be sent or received using the socket options described in
-.\"O .BR ip (7).
-.\"O They are only processed by the kernel when the appropriate
-.\"O .I /proc
-.\"O parameter
-.\"O is enabled (but still passed to the user even when it is turned off).
-.\"O See
-.\"O .BR ip (7).
-IP オプションは、
-.BR ip (7)
-に記述されているソケットオプションを用いて読み書きできる。
-これらは適切な
-.I /proc
-パラメータが有効な場合に限ってカーネルによって処理される
-(しかし無効になっている場合でもユーザーには渡される)。
-.BR ip (7)
-を参照のこと。
+IP オプションは、 \fBip\fP(7)  に記述されているソケットオプションを用いて読み書きできる。 これらは適切な \fI/proc\fP
+パラメータが有効な場合に限ってカーネルによって処理される (しかし無効になっている場合でもユーザーには渡される)。 \fBip\fP(7)  を参照のこと。
 
-.\"O When the
-.\"O .B MSG_DONTROUTE
-.\"O flag is set on sending, the destination address must refer to a local
-.\"O interface address and the packet is only sent to that interface.
-.B MSG_DONTROUTE
-フラグが送信時にセットされている場合には、
-行き先アドレスはローカルなインターフェースアドレスから
+\fBMSG_DONTROUTE\fP フラグが送信時にセットされている場合には、 行き先アドレスはローカルなインターフェースアドレスから
 参照できなければならない。パケットはそのインターフェースにしか送られない。
 
-.\"O By default, Linux UDP does path MTU (Maximum Transmission Unit) discovery.
-.\"O This means the kernel
-.\"O will keep track of the MTU to a specific target IP address and return
-.\"O .B EMSGSIZE
-.\"O when a UDP packet write exceeds it.
-.\"O When this happens, the application should decrease the packet size.
-.\"O Path MTU discovery can be also turned off using the
-.\"O .B IP_MTU_DISCOVER
-.\"O socket option or the
-.\"O .I /proc/sys/net/ipv4/ip_no_pmtu_disc
-.\"O file; see
-.\"O .BR ip (7)
-.\"O for details.
-.\"O When turned off, UDP will fragment outgoing UDP packets
-.\"O that exceed the interface MTU.
-.\"O However, disabling it is not recommended
-.\"O for performance and reliability reasons.
-デフォルトでは、Linux の UDP は Path MTU Discovery を行う。
-つまり、カーネルは特定の宛先 IP アドレスの MTU (Maximum Transmission Unit;
-最大転送単位) を記録し、UDP パケットの書き込みが MTU を超えた場合
-.B EMSGSIZE
-を返す。
-.B EMSGSIZE
-を返された場合、アプリケーションはパケットサイズを小さくすべきである。
-ソケットオプション
-.B IP_MTU_DISCOVER
-または
-.I /proc/sys/net/ipv4/ip_no_pmtu_disc
-ファイルを使って Path MTU Discovery を無効にすることもできる
-(詳細は
-.BR ip (7)
-を参照)。
-Path MTU Discovery を無効にした場合は、パケットサイズが
-インタフェースの MTU よりも大きいと UDP はそのパケットを
-フラグメント化して送出する。
-しかしながら、性能と信頼性の理由から Path MTU Discovery を
-無効にするのは推奨できない。
-.\"O .SS Address Format
+デフォルトでは、Linux の UDP は Path MTU Discovery を行う。 つまり、カーネルは特定の宛先 IP アドレスの MTU
+(Maximum Transmission Unit; 最大転送単位) を記録し、UDP パケットの書き込みが MTU を超えた場合
+\fBEMSGSIZE\fP を返す。 \fBEMSGSIZE\fP を返された場合、アプリケーションはパケットサイズを小さくすべきである。 ソケットオプション
+\fBIP_MTU_DISCOVER\fP または \fI/proc/sys/net/ipv4/ip_no_pmtu_disc\fP ファイルを使って Path
+MTU Discovery を無効にすることもできる (詳細は \fBip\fP(7)  を参照)。 Path MTU Discovery
+を無効にした場合は、パケットサイズが インタフェースの MTU よりも大きいと UDP はそのパケットを フラグメント化して送出する。
+しかしながら、性能と信頼性の理由から Path MTU Discovery を 無効にするのは推奨できない。
 .SS アドレスのフォーマット
-.\"O UDP uses the IPv4
-.\"O .I sockaddr_in
-.\"O address format described in
-.\"O .BR ip (7).
-UDP は IPv4 の
-.I sockaddr_in
-アドレスフォーマットを用いる。これは
-.BR ip (7)
-に記述されている。
-.\"O .SS Error Handling
+UDP は IPv4 の \fIsockaddr_in\fP アドレスフォーマットを用いる。これは \fBip\fP(7)  に記述されている。
 .SS エラー処理
-.\"O All fatal errors will be passed to the user as an error return even
-.\"O when the socket is not connected.
-.\"O This includes asynchronous errors
-.\"O received from the network.
-.\"O You may get an error for an earlier packet
-.\"O that was sent on the same socket.
-致命的なエラーは、たとえソケットが接続されていなくても、
-すべてエラー戻り値としてユーザーに渡される。
-これにはネットワークから受け取る非同期エラーも含まれる。
-同じソケットを使って送信した昔のパケットに関するエラーを受け取るかもしれない。
-.\"O This behavior differs from many other BSD socket implementations
-.\"O which don't pass any errors unless the socket is connected.
-.\"O Linux's behavior is mandated by
-.\"O .BR RFC\ 1122 .
-この振る舞いは他の BSD ソケットの実装の多くとは異なる。
-これらではソケットが接続されていない場合はエラーを全く返さない。
-Linux の振る舞いは
-.B RFC\ 1122
-での指定に従ったものである。
+致命的なエラーは、たとえソケットが接続されていなくても、 すべてエラー戻り値としてユーザーに渡される。
+これにはネットワークから受け取る非同期エラーも含まれる。 同じソケットを使って送信した昔のパケットに関するエラーを受け取るかもしれない。
+この振る舞いは他の BSD ソケットの実装の多くとは異なる。 これらではソケットが接続されていない場合はエラーを全く返さない。 Linux の振る舞いは
+\fBRFC\ 1122\fP での指定に従ったものである。
 
-.\"O For compatibility with legacy code, in Linux 2.0 and 2.2
-.\"O it was possible to set the
-.\"O .B SO_BSDCOMPAT
-.\"O .B SOL_SOCKET
-.\"O option to receive remote errors only when the socket has been
-.\"O connected (except for
-.\"O .B EPROTO
-.\"O and
-.\"O .BR EMSGSIZE ).
-.\"O Locally generated errors are always passed.
-.\"O Support for this socket option was removed in later kernels; see
-.\"O .BR socket (7)
-.\"O for further information.
-Linux 2.0 と 2.2 では、古いコードとの互換性のために、
-.B SO_BSDCOMPAT
-.B SOL_SOCKET
-オプションを設定すれば、ソケットが接続されている
-場合に限ってリモートのエラーを受信するようにできた
-.RB ( EPROTO " と " EMSGSIZE
-を除く)。
-ローカルで生成されたエラーは常に渡される。
-このソケットオプションのサポートはそれ以降のバージョンの Linux で
-削除された。詳細は
-.BR socket (7)
-を参照。
+Linux 2.0 と 2.2 では、古いコードとの互換性のために、 \fBSO_BSDCOMPAT\fP \fBSOL_SOCKET\fP
+オプションを設定すれば、ソケットが接続されている 場合に限ってリモートのエラーを受信するようにできた (\fBEPROTO\fP と \fBEMSGSIZE\fP
+を除く)。 ローカルで生成されたエラーは常に渡される。 このソケットオプションのサポートはそれ以降のバージョンの Linux で 削除された。詳細は
+\fBsocket\fP(7)  を参照。
 
-.\"O When the
-.\"O .B IP_RECVERR
-.\"O option is enabled, all errors are stored in the socket error queue
-.\"O and can be received by
-.\"O .BR recvmsg (2)
-.\"O with the
-.\"O .B MSG_ERRQUEUE
-.\"O flag set.
-.B IP_RECVERR
-オプションが有効になっていると、
-すべてのエラーはソケットのエラーキューに保存される。
-これは
-.B MSG_ERRQUEUE
-フラグをセットして
-.BR recvmsg (2)
-を呼べば受信できる。
-.\"O .SS /proc interfaces
-.SS /proc インタフェース
-.\"O System-wide UDP parameter settings can be accessed by files in the directory
-.\"O .IR /proc/sys/net/ipv4/ .
-システム全体の UDP パラメータ設定には、
-.I /proc/sys/net/ipv4/
-ディレクトリ内のファイルの読み書きでアクセスできる。
-.TP
-.\"O .IR udp_mem " (since Linux 2.6.25)"
-.IR udp_mem " (Linux 2.6.25 以降)"
-.\"O This is a vector of three integers governing the number
-.\"O of pages allowed for queueing by all UDP sockets.
-これは 3 つの整数からなるベクトル値で、
-UDP の全ソケットのキューで利用可能なページ数を制御する。
+\fBIP_RECVERR\fP オプションが有効になっていると、 すべてのエラーはソケットのエラーキューに保存される。 これは
+\fBMSG_ERRQUEUE\fP フラグをセットして \fBrecvmsg\fP(2)  を呼べば受信できる。
+.SS "/proc インタフェース"
+システム全体の UDP パラメータ設定には、 \fI/proc/sys/net/ipv4/\fP ディレクトリ内のファイルの読み書きでアクセスできる。
+.TP 
+\fIudp_mem\fP (Linux 2.6.25 以降)
+これは 3 つの整数からなるベクトル値で、 UDP の全ソケットのキューで利用可能なページ数を制御する。
 .RS
-.TP 10
-.I min
-.\"O Below this number of pages, UDP is not bothered about its
-.\"O memory appetite.
-.\"O When the amount of memory allocated by UDP exceeds
-.\"O this number, UDP starts to moderate memory usage.
-このページ数より少なければ、UDP はそのメモリ使用に関して
-干渉されない。
-UDP に割り当てられたメモリ総量がこの値を超過すると、
-UDP はメモリ使用量を調整し始める。
-.TP
-.I pressure
-.\"O This value was introduced to follow the format of
-.\"O .IR tcp_mem
-.\"O (see
-.\"O .BR tcp (7)).
-この値は
-.I tcp_mem
-の形式
-.RB ( tcp (7)
-参照) と合わせるために導入された
-.TP
-.I max
-.\"O Number of pages allowed for queueing by all UDP sockets.
+.TP  10
+\fImin\fP
+このページ数より少なければ、UDP はそのメモリ使用に関して 干渉されない。 UDP に割り当てられたメモリ総量がこの値を超過すると、 UDP
+はメモリ使用量を調整し始める。
+.TP 
+\fIpressure\fP
+この値は \fItcp_mem\fP の形式 (\fBtcp\fP(7)  参照) と合わせるために導入された
+.TP 
+\fImax\fP
 UDP の全ソケットのキューで利用可能なページ数。
 .RE
 .IP
-.\"O Defaults values for these three items are
-.\"O calculated at boot time from the amount of available memory.
-これらの 3 つの値のデフォルト値は、
-ブート時に利用可能なメモリ総量から計算される。
-.TP
-.\"O .IR udp_rmem_min " (integer; default value: PAGE_SIZE; since Linux 2.6.25)"
-.IR udp_rmem_min " (integer; デフォルト値: PAGE_SIZE; Linux 2.6.25 以降)"
-.\"O Minimal size, in bites, of receive buffers used by UDP sockets in moderation.
-.\"O Each UDP socket is able to use the size for receiving data,
-.\"O even if total pages of UDP sockets exceed
-.\"O .I udp_mem
-.\"O pressure.
-メモリ使用量の調整中に、UDP ソケットが使用できる受信バッファの最小値
-(バイト単位)。
-UDP の全ソケットのページ使用量の合計が
-.I udp_mem
-pressure を超過している場合であっても、
-各 UDP ソケットはデータの受信にこのサイズ分だけは使用することができる。
-.TP
-.\"O .IR udp_wmem_min " (integer; default value: PAGE_SIZE; since Linux 2.6.25)"
-.IR udp_wmem_min " (integer; デフォルト値: PAGE_SIZE; Linux 2.6.25 以降)"
-.\"O Minimal size, in bytes, of send buffer used by UDP sockets in moderation.
-.\"O Each UDP socket is able to use the size for sending data,
-.\"O even if total pages of UDP sockets exceed
-.\"O .I udp_mem
-.\"O pressure.
-メモリ使用量の調整中に、UDP ソケットが使用できる送信バッファの最小値
-(バイト単位)。
-UDP の全ソケットのページ使用量の合計が
-.I udp_mem
-pressure を超過している場合であっても、
-各 UDP ソケットはデータの送信にこのサイズ分だけは使用することができる。
-.\"O \"O .SS "Socket Options"
+これらの 3 つの値のデフォルト値は、 ブート時に利用可能なメモリ総量から計算される。
+.TP 
+\fIudp_rmem_min\fP (integer; デフォルト値: PAGE_SIZE; Linux 2.6.25 以降)
+メモリ使用量の調整中に、UDP ソケットが使用できる受信バッファの最小値 (バイト単位)。 UDP の全ソケットのページ使用量の合計が
+\fIudp_mem\fP pressure を超過している場合であっても、 各 UDP ソケットはデータの受信にこのサイズ分だけは使用することができる。
+.TP 
+\fIudp_wmem_min\fP (integer; デフォルト値: PAGE_SIZE; Linux 2.6.25 以降)
+メモリ使用量の調整中に、UDP ソケットが使用できる送信バッファの最小値 (バイト単位)。 UDP の全ソケットのページ使用量の合計が
+\fIudp_mem\fP pressure を超過している場合であっても、 各 UDP ソケットはデータの送信にこのサイズ分だけは使用することができる。
 .SS ソケットオプション
-.\"O To set or get a UDP socket option, call
-.\"O .BR getsockopt (2)
-.\"O to read or
-.\"O .BR setsockopt (2)
-.\"O to write the option with the option level argument set to
-.\"O .BR IPPROTO_UDP .
-UDP ソケットオプションを設定または取得するには、
-取得には
-.BR getsockopt (2)
-を、設定には
-.BR setsockopt (2)
-をオプションレベル引数に
-.B IPPROTO_UDP
-を指定して呼び出す。
-.TP
-.\"O .BR UDP_CORK " (since Linux 2.5.44)"
-.BR UDP_CORK " (Linux 2.5.44 以降)"
-.\"O If this option is enabled, then all data output on this socket
-.\"O is accumulated into a single datagram that is transmitted when
-.\"O the option is disabled.
-.\"O This option should not be used in code intended to be
-.\"O portable.
-このオプションが指定されると、このソケットの全てのデータ出力は
-一つのデータグラムに蓄積され、このオプションが無効化された時に
-送信される。
-このオプションは移植性を考慮したコードでは用いるべきではない。
+UDP ソケットオプションを設定または取得するには、 取得には \fBgetsockopt\fP(2)  を、設定には \fBsetsockopt\fP(2)
+をオプションレベル引数に \fBIPPROTO_UDP\fP を指定して呼び出す。
+.TP 
+\fBUDP_CORK\fP (Linux 2.5.44 以降)
 .\" FIXME document UDP_ENCAP (new in kernel 2.5.67)
 .\" From include/linux/udp.h:
 .\" /* UDP encapsulation types */
 .\" #define UDP_ENCAP_ESPINUDP_NON_IKE      1 /* draft-ietf-ipsec-nat-t-ike-00/01 */
 .\" #define UDP_ENCAP_ESPINUDP      2 /* draft-ietf-ipsec-udp-encaps-06 */
 .\" #define UDP_ENCAP_L2TPINUDP     3 /* rfc2661 */
-.\"O .SS Ioctls
+このオプションが指定されると、このソケットの全てのデータ出力は 一つのデータグラムに蓄積され、このオプションが無効化された時に 送信される。
+このオプションは移植性を考慮したコードでは用いるべきではない。
 .SS ioctl
-.\"O These ioctls can be accessed using
-.\"O .BR ioctl (2).
-以下に示す ioctl は
-.BR ioctl (2)
-を使ってアクセスできる。
-.\"O The correct syntax is:
-正しい文法は以下の通り。
+以下に示す ioctl は \fBioctl\fP(2)  を使ってアクセスできる。 正しい文法は以下の通り。
 .PP
 .RS
 .nf
-.BI int " value";
-.IB error " = ioctl(" udp_socket ", " ioctl_type ", &" value ");"
+\fBint\fP\fI value\fP\fB;\fP
+\fIerror\fP\fB = ioctl(\fP\fIudp_socket\fP\fB, \fP\fIioctl_type\fP\fB, &\fP\fIvalue\fP\fB);\fP
 .fi
 .RE
-.TP
-.BR FIONREAD " (" SIOCINQ )
-.\"O Gets a pointer to an integer as argument.
-.\"O Returns the size of the next pending datagram in the integer in bytes,
-.\"O or 0 when no datagram is pending.
-integer のポインタを引数として取る。
-次に待機しているデータグラムのサイズをバイト単位の整数で返す。
-待機しているデータグラムがない場合は 0 を返す。
-.TP
-.BR TIOCOUTQ " (" SIOCOUTQ )
-.\"O Returns the number of data bytes in the local send queue.
-.\"O Only supported with Linux 2.4 and above.
-ローカル送信キューにあるデータサイズをバイト単位で返す。
-Linux 2.4 以上でのみ対応している。
+.TP 
+\fBFIONREAD\fP (\fBSIOCINQ\fP)
+.\" See http://www.securiteam.com/unixfocus/5KP0I15IKO.html
+.\" "GNUnet DoS (UDP Socket Unreachable)", 14 May 2006
+整数へのポインタを引き数に取り、そのポインタに、次の処理待ちのデータグラムの
+サイズをバイト単位で返す。処理待ちのデータグラムがない場合は 0 を返す。
+\fB警告\fP: \fBFIONREAD\fP を使った場合、処理待ちのデータグラムがない場合と、
+次の処理待ちデータグラムが 0 バイトのデータの場合を区別することができない。
+この両者を区別したい場合は、\fBselect\fP(2), \fBpoll\fP(2), \fBepoll\fP(7)
+を使う方が安全である。
+.TP 
+\fBTIOCOUTQ\fP (\fBSIOCOUTQ\fP)
+ローカル送信キューにあるデータサイズをバイト単位で返す。 Linux 2.4 以上でのみ対応している。
 .PP
-.\"O In addition all ioctls documented in
-.\"O .BR ip (7)
-.\"O and
-.\"O .BR socket (7)
-.\"O are supported.
-さらに、
-.BR ip (7)
-と
-.BR socket (7)
-で述べられている全ての ioctl も対応している。
-.\"O .SH ERRORS
+さらに、 \fBip\fP(7)  と \fBsocket\fP(7)  で述べられている全ての ioctl も対応している。
 .SH エラー
-.\"O All errors documented for
-.\"O .BR socket (7)
-.\"O or
-.\"O .BR ip (7)
-.\"O may be returned by a send or receive on a UDP socket.
-.BR socket (7)
-や
-.BR ip (7)
-に記述されている全てのエラーが、
-UDP ソケットの送受信で返される可能性がある。
-.TP
-.B ECONNREFUSED
-.\"O No receiver was associated with the destination address.
-.\"O This might be caused by a previous packet sent over the socket.
-行き先アドレスに関連づけられている受信者がいない。
-これは以前のパケットがそのパケットを
-上書き送信してしまっているからであることが多い。
-.\"O .SH VERSIONS
+\fBsocket\fP(7)  や \fBip\fP(7)  に記述されている全てのエラーが、 UDP ソケットの送受信で返される可能性がある。
+.TP 
+\fBECONNREFUSED\fP
+行き先アドレスに関連づけられている受信者がいない。 これは以前のパケットがそのパケットを 上書き送信してしまっているからであることが多い。
 .SH バージョン
-.\"O .B IP_RECVERR
-.\"O is a new feature in Linux 2.2.
-.B IP_RECVERR
-は Linux 2.2 の新しい機能である。
-.\"O .\" .SH CREDITS
-.\" .SH 著者
-.\"O .\" This man page was written by Andi Kleen.
-.\" この man ページは Andi Kleen が書いた。
-.\"O .SH SEE ALSO
+.\" .SH CREDITS
+.\" This man page was written by Andi Kleen.
+\fBIP_RECVERR\fP は Linux 2.2 の新しい機能である。
 .SH 関連項目
-.BR ip (7),
-.BR raw (7),
-.BR socket (7),
-.BR udplite (7)
+\fBip\fP(7), \fBraw\fP(7), \fBsocket\fP(7), \fBudplite\fP(7)
 
-.\"O RFC\ 768 for the User Datagram Protocol.
 RFC\ 768 : User Datagram Protocol
 .br
-.\"O RFC\ 1122 for the host requirements.
 RFC\ 1122 : ホストの必要条件
 .br
-.\"O RFC\ 1191 for a description of path MTU discovery.
 RFC\ 1191 : path MTU discovery の記述
index 97b5ce8..ee2ae87 100644 (file)
 .\"
 .\" $Id: udplite.7,v 1.12 2008/07/23 15:22:22 gerrit Exp gerrit $
 .\"
-.\" Japanese Version Copyright (c) 2008  Akihiro MOTOKI
-.\"         all rights reserved.
-.\" Translated 2008-08-21, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.07
-.\" 
-.TH UDPLITE  7 2008-12-03 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH UDPLITE 7 2008\-12\-03 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O udplite \- Lightweight User Datagram Protocol
 udplite \- 軽量なユーザーデータグラムプロトコル
-.\"O .SH SYNOPSIS
 .SH 書式
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .br
 .\" FIXME . see #defines under `BUGS',
 .\"        when glibc supports this, add
 .\"        #include <netinet/udplite.h>
 .sp
-.B sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDPLITE);
-.\"O .SH DESCRIPTION
+\fBsockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDPLITE);\fP
 .SH 説明
-.\"O This is an implementation of the Lightweight User Datagram Protocol
-.\"O (UDP-Lite), as described in RFC\ 3828.
-これは RFC\ 3828 に書かれている軽量なユーザーデータグラムプロトコル
-(Lightweight User Datagram Protocol; UDP-Lite) の実装である。
+これは RFC\ 3828 に書かれている軽量なユーザーデータグラムプロトコル (Lightweight User Datagram Protocol;
+UDP\-Lite) の実装である。
 
-.\"O UDP-Lite is an extension of UDP (RFC\ 768) to support variable-length
-.\"O checksums.
-.\"O This has advantages for some types of multimedia transport that
-.\"O may be able to make use of slightly damaged datagrams,
-.\"O rather than having them discarded by lower-layer protocols.
-UDP-Lite は UDP (RFC\ 768) の拡張で、可変長のチェックサムをサポートしている。
-このプロトコルが効果を発揮するのは、少しだけ壊れたデータグラムがあった場合に、
-そのデータグラムを下位レイヤーのプロトコルに廃棄させるのではなく、
+UDP\-Lite は UDP (RFC\ 768) の拡張で、可変長のチェックサムをサポートしている。
+このプロトコルが効果を発揮するのは、少しだけ壊れたデータグラムがあった場合に、 そのデータグラムを下位レイヤーのプロトコルに廃棄させるのではなく、
 それを利用することができるような、ある種のマルチメディア転送においてである。
 
-.\"O The variable-length checksum coverage is set via a
-.\"O .BR setsockopt (2)
-.\"O option.
-.\"O If this option is not set, the only difference to UDP is
-.\"O in using a different IP protocol identifier (IANA number 136).
-可変長のチェックサムの対象範囲は
-.BR setsockopt (2)
-オプション経由で設定される。
-このオプションが設定されていない場合、UDP と異なるのは
-違う IP プロトコル識別子 (IANA 番号 136) を使用する点だけである。
+可変長のチェックサムの対象範囲は \fBsetsockopt\fP(2)  オプション経由で設定される。 このオプションが設定されていない場合、UDP
+と異なるのは 違う IP プロトコル識別子 (IANA 番号 136) を使用する点だけである。
 
-.\"O The UDP-Lite implementation is a full extension of
-.\"O .BR udp (7),
-.\"O i.e., it shares the same API and API behaviour, and in addition
-.\"O offers two socket options to control the checksum coverage.
-UDP-Lite の実装は
-.BR udp (7)
-の完全な拡張、すなわち API と API の動作は同じである。
-これに加えて、2 つのソケットオプションがチェックサムの対象範囲を
-制御するために提供されている。
-.\"O .SS "Address Format"
+UDP\-Lite の実装は \fBudp\fP(7)  の完全な拡張、すなわち API と API の動作は同じである。 これに加えて、2
+つのソケットオプションがチェックサムの対象範囲を 制御するために提供されている。
 .SS アドレスのフォーマット
-.\"O UDP-Litev4 uses the
-.\"O .I sockaddr_in
-.\"O address format described in
-.\"O .BR ip (7).
-.\"O UDP-Litev6 uses the
-.\"O .I sockaddr_in6
-.\"O address format described in
-.\"O .BR ipv6 (7).
-UDP-Litev4 は
-.BR ip (7)
-で説明されている
-.I sockaddr_in
-アドレスを使用する。
-UDP-Litev6 は
-.BR ipv6 (7)
-で説明されている
-.I sockaddr_in6
-アドレスを使用する。
-.\"O .SS "Socket Options"
+UDP\-Litev4 は \fBip\fP(7)  で説明されている \fIsockaddr_in\fP アドレスを使用する。 UDP\-Litev6 は
+\fBipv6\fP(7)  で説明されている \fIsockaddr_in6\fP アドレスを使用する。
 .SS ソケットオプション
-.\"O To set or get a UDP-Lite socket option, call
-.\"O .BR getsockopt (2)
-.\"O to read or
-.\"O .BR setsockopt (2)
-.\"O to write the option with the option level argument set to
-.\"O .BR IPPROTO_UDPLITE .
-.\"O In addition, all
-.\"O .B IPPROTO_UDP
-.\"O socket options are valid on a UDP-Lite socket.
-.\"O See
-.\"O .BR udp (7)
-.\"O for more information.
-UDP-Lite のソケットオプションを設定/取得するには、
-オプションレベル引き数に
-.B IPPROTO_UDPLITE
-を指定して、取得時には
-.BR getsockopt (2)
-を、設定時には
-.BR setsockopt (2)
-を呼び出す。さらに、全ての
-.B IPPROTO_UDP
-のソケットオプションが UDP-Lite ソケットでも使用できる。
-詳細は
-.BR udp (7)
-を参照のこと。
+UDP\-Lite のソケットオプションを設定/取得するには、 オプションレベル引き数に \fBIPPROTO_UDPLITE\fP を指定して、取得時には
+\fBgetsockopt\fP(2)  を、設定時には \fBsetsockopt\fP(2)  を呼び出す。さらに、全ての \fBIPPROTO_UDP\fP
+のソケットオプションが UDP\-Lite ソケットでも使用できる。 詳細は \fBudp\fP(7)  を参照のこと。
 
-.\"O The following two options are specific to UDP-Lite.
-以下の 2 つが UDP-Lite に固有のオプションである。
-.TP
-.BR UDPLITE_SEND_CSCOV
-.\"O This option sets the sender checksum coverage and takes an
-.\"O .I int
-.\"O as argument, with a checksum coverage value in the range 0..2^16-1.
-このオプションは送信側のチェックサムの対象範囲を設定する。
-.I int
-型を引き数として取り、設定可能な値の範囲は 0 から 2^16-1 までである。
+以下の 2 つが UDP\-Lite に固有のオプションである。
+.TP 
+\fBUDPLITE_SEND_CSCOV\fP
+このオプションは送信側のチェックサムの対象範囲を設定する。 \fIint\fP 型を引き数として取り、設定可能な値の範囲は 0 から 2^16\-1
+までである。
 
-.\"O A value of 0 means that the entire datagram is always covered.
-.\"O Values from 1-7 are illegal (RFC\ 3828, 3.1) and are rounded up to
-.\"O the minimum coverage of 8.
-値 0 はデータグラム全体が常にチェックサムの対象となることを意味する。
-値 1〜7 は不正であり (RFC\ 3828 の 3.1 章)、範囲の設定として最小値である
-8 に切り上げられる。
+値 0 はデータグラム全体が常にチェックサムの対象となることを意味する。 値 1〜7 は不正であり (RFC\ 3828 の 3.1
+章)、範囲の設定として最小値である 8 に切り上げられる。
 
-.\"O With regard to IPv6 jumbograms (RFC\ 2675), the UDP-Litev6 checksum
-.\"O coverage is limited to the first 2^16-1 octets, as per RFC\ 3828, 3.5.
-.\"O Higher values are therefore silently truncated to 2^16-1.
-.\"O If in doubt, the current coverage value can always be queried using
-.\"O .BR getsockopt (2).
-IPv6 の jumbograms (巨大なデータグラム; RFC\ 2675) の場合には、
-UDP-Litev6 のチェックサムの対象範囲は、RFC\ 3828 の 3.5 章にあるように、
-先頭から 2^16-1 オクテットまでに限定される。
-そのため、それより大きな値は 2^16-1 に黙って切り詰められる。
-現在の対象範囲の値を知りたければ、いつでも
-.BR getsockopt (2)
+IPv6 の jumbograms (巨大なデータグラム; RFC\ 2675) の場合には、 UDP\-Litev6
+のチェックサムの対象範囲は、RFC\ 3828 の 3.5 章にあるように、 先頭から 2^16\-1 オクテットまでに限定される。
+そのため、それより大きな値は 2^16\-1 に黙って切り詰められる。 現在の対象範囲の値を知りたければ、いつでも \fBgetsockopt\fP(2)
 を使って値を問い合わせることができる。
-.TP
-.BR UDPLITE_RECV_CSCOV
-.\"O This is the receiver-side analogue and uses the same argument format
-.\"O and value range as
-.\"O .BR UDPLITE_SEND_CSCOV .
-.\"O This option is not required to enable traffic with partial checksum
-.\"O coverage.
-.\"O Its function is that of a traffic filter: when enabled, it
-.\"O instructs the kernel to drop all packets which have a coverage
-.\"O .I less
-.\"O than the specified coverage value.
-これは受信側のチェックサムの対象範囲を設定するもので、
-使用される引き数形式と値の範囲は
-.B UDPLITE_SEND_CSCOV
-と同じである。
-このオプションは、部分的なチェックサム対象範囲を持つトラフィックを
-有効にするのに必要なわけではなく、トラフィックフィルターとして機能する。
-このオプションが有効にすると、カーネルは指定されたチェックサム対象範囲
-よりも「短かい」対象範囲を持つパケットを全て廃棄するようになる。
+.TP 
+\fBUDPLITE_RECV_CSCOV\fP
+これは受信側のチェックサムの対象範囲を設定するもので、 使用される引き数形式と値の範囲は \fBUDPLITE_SEND_CSCOV\fP と同じである。
+このオプションは、部分的なチェックサム対象範囲を持つトラフィックを 有効にするのに必要なわけではなく、トラフィックフィルターとして機能する。
+このオプションが有効にすると、カーネルは指定されたチェックサム対象範囲 よりも「短かい」対象範囲を持つパケットを全て廃棄するようになる。
 
-.\"O When the value of
-.\"O .B UDPLITE_RECV_CSCOV
-.\"O exceeds the actual packet coverage, incoming packets are silently dropped,
-.\"O but may generate a warning message in the system log.
-.B UDPLITE_RECV_CSCOV
-の値が実際のパケットのチェックサム対象範囲よりも大きい場合、
-受信したパケットは黙って廃棄される。
-ただし、システムログに対して警告メッセージが生成されるかもしれない。
 .\" SO_NO_CHECK exists and is supported by UDPv4, but is
 .\" commented out in socket(7), hence also commented out here
 .\".PP
@@ -191,49 +86,31 @@ UDP-Litev6 のチェックサムの対象範囲は、RFC\ 3828 の 3.5 章にあ
 .\".B SO_NO_CHECK
 .\"option from
 .\".BR socket (7).
-.\"O .SH ERRORS
+\fBUDPLITE_RECV_CSCOV\fP の値が実際のパケットのチェックサム対象範囲よりも大きい場合、 受信したパケットは黙って廃棄される。
+ただし、システムログに対して警告メッセージが生成されるかもしれない。
 .SH エラー
-.\"O All errors documented for
-.\"O .BR udp (7)
-.\"O may be returned.
-.\"O UDP-Lite does not add further errors.
-.BR udp (7)
-について書かれている全てのエラーは返る可能性がある。
-UDP-Lite 自体は新たなエラーは追加していない。
-.\"O .SH BUGS
+\fBudp\fP(7)  について書かれている全てのエラーは返る可能性がある。 UDP\-Lite 自体は新たなエラーは追加していない。
 .SH バグ
 .\" FIXME . remove this section once glibc supports UDP-Lite
-.\"O Where glibc support is missing, the following definitions are needed:
 glibc によるサポートがない場合は、以下の定義を行う必要がある。
 .in +4n
 .nf
 
-#define IPPROTO_UDPLITE     136
 .\" The following two are defined in the kernel in linux/net/udplite.h
+#define IPPROTO_UDPLITE     136
 #define UDPLITE_SEND_CSCOV  10
 #define UDPLITE_RECV_CSCOV  11
 .fi
 .in
-.\"O .SH FILES
 .SH ファイル
-.I /proc/net/snmp
-.\"O \- basic UDP-Litev4 statistics counters.
-\- UDP-Litev4 の基本的な統計情報カウンター。
+\fI/proc/net/snmp\fP \- UDP\-Litev4 の基本的な統計情報カウンター。
 .br
-.I /proc/net/snmp6
-.\"O \- basic UDP-Litev6 statistics counters.
-\- UDP-Litev6 の基本的な統計情報カウンター。
-.\"O .SH VERSIONS
+\fI/proc/net/snmp6\fP \- UDP\-Litev6 の基本的な統計情報カウンター。
 .SH バージョン
-.\"O UDP-Litev4/v6 first appeared in Linux 2.6.20.
-UDP-Litev4/v6 は Linux 2.6.20 で初めて登場した。
-.\"O .SH "SEE ALSO"
+UDP\-Litev4/v6 は Linux 2.6.20 で初めて登場した。
 .SH 関連項目
-.BR ip (7),
-.BR ipv6 (7),
-.BR socket (7),
-.BR udp (7)
+\fBip\fP(7), \fBipv6\fP(7), \fBsocket\fP(7), \fBudp\fP(7)
 
-RFC\ 3828 for the Lightweight User Datagram Protocol (UDP-Lite)
+RFC\ 3828 for the Lightweight User Datagram Protocol (UDP\-Lite)
 .br
-.I Documentation/networking/udplite.txt
+\fIDocumentation/networking/udplite.txt\fP
index ca17cf2..29aa4d8 100644 (file)
 .\"     address that can appear in the sockaddr_un structure: pathname,
 .\"     unnamed, and abstract.
 .\"
-.\" Japanese Version Copyright (c) 1999 Shouichi Saito and
-.\"     NAKANO Takeo all rights reserved.
-.\" Translated 1999-12-06, NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\"     based on the work by Shouichi Saito <ss236rx@ymg.urban.ne.jp>
-.\" Updated 2003-01-07, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" Updated 2005-02-21, Akihiro MOTOKI
-.\" Updated 2005-12-26, Akihiro MOTOKI
-.\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05
+.\"*******************************************************************
 .\"
-.\"WORD                abstract namespace              抽象名前空間
-.\"WORD         anonymous socket               名前無しソケット
-.\"WORD                credential                      信任状
-.\"WORD                ancillary message               補助メッセージ
-.\"WORD                file descriptor                 ファイルディスクリプタ
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\" 訳注: 訳す際も Unix は capitalize しておくこと。
-.\"       LDP_man-pages 1.66→2.01 において unix → Unix の変更があり、
-.\"       意図的な表記と思われる。
-.\"
-.TH UNIX  7 2008-12-01 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.TH UNIX 7 2102\-04\-16 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O unix, AF_UNIX, AF_LOCAL \- Sockets for local
-.\"O interprocess communication
-unix, AF_UNIX, AF_LOCAL \- ローカルな
-プロセス間通信用のソケット
-.\"O .SH SYNOPSIS
+unix, AF_UNIX, AF_LOCAL \- ローカルな プロセス間通信用のソケット
 .SH 書式
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .br
-.B #include <sys/un.h>
+\fB#include <sys/un.h>\fP
 
-.IB unix_socket " = socket(AF_UNIX, type, 0);"
+\fIunix_socket\fP\fB = socket(AF_UNIX, type, 0);\fP
 .br
-.IB error " = socketpair(AF_UNIX, type, 0, int *" sv ");"
-.\"O .SH DESCRIPTION
+\fIerror\fP\fB = socketpair(AF_UNIX, type, 0, int *\fP\fIsv\fP\fB);\fP
 .SH 説明
-.\"O The
-.\"O .B AF_UNIX
-.\"O (also known as
-.\"O .BR AF_LOCAL )
-.\"O socket family is used to communicate between processes on the same machine
-.\"O efficiently.
-.\"O Traditionally, Unix sockets can be either unnamed,
-.\"O or bound to a file system pathname (marked as being of type socket).
-.B AF_UNIX
-.RB ( AF_LOCAL
-とも言われる) ソケットファミリーは、同じマシン上でプロセス同士が
-効率的に通信するために用いられる。 
-伝統的に、Unix ソケットは、名前なしにもできるし、
-(ソケット型であると印のついた) ファイルシステムのパス名に
-結び付けることもできる。
-.\"O Linux also supports an abstract namespace which is independent of the
-.\"O file system.
-さらに Linux では、ファイルシステムに依存しない
-抽象名前空間 (abstract namespace) もサポートしている。
+\fBAF_UNIX\fP (\fBAF_LOCAL\fP とも言われる) ソケットファミリーは、同じマシン上で
+プロセス同士が 効率的に通信するために用いられる。伝統的に、UNIX ドメイン
+ソケットは、名前なしにもできるし、 (ソケット型であると印のついた) ファイル
+システムのパス名に 結び付けることもできる。さらに Linux では、ファイル
+システムに依存しない抽象名前空間 (abstract namespace) もサポートしている。
 
-.\"O Valid types are:
-.\"O .BR SOCK_STREAM ,
-.\"O for a stream-oriented socket and
-.\"O .BR SOCK_DGRAM ,
-.\"O for a datagram-oriented socket that preserves message boundaries
-.\"O (as on most Unix implementations, Unix domain datagram
-.\"O sockets are always reliable and don't reorder datagrams);
-.\"O and (since Linux 2.6.4)
-.\"O .BR SOCK_SEQPACKET ,
-.\"O for a connection-oriented socket that preserves message boundaries
-.\"O and delivers messages in the order that they were sent.
-.\" MOTOKI: 見やすいように .TP 形式に変更
-有効なタイプは以下の通りである:
-.TP
-.B SOCK_STREAM
-ストリーム指向のソケット
-.TP
-.B SOCK_DGRAM
-メッセージ境界を保存するデータグラム指向のソケット
-(ほとんどの Unix の実装では、Unix ドメイン・データグラム・ソケットは
-常に信頼でき、データグラムの並び替えは行わない)
-.TP
-.B SOCK_SEQPACKET
-(Linux 2.6.4 以降で利用できる)
-メッセージ境界を保存し、送信された順序でメッセージを届ける接続指向ソケット
+有効なタイプを以下に示す。 \fBSOCK_STREAM\fP はストリーム指向のソケットである。
+\fBSOCK_DGRAM\fP はメッセージ境界を保存するデータグラム指向のソケットである
+(ほとんどの UNIX の実装では、UNIX ドメイン・データグラム・ソケットは 常に
+信頼でき、データグラムの並び替えは行わない)。
+\fBSOCK_SEQPACKET\fP はメッセージ境界を保存し、送信された順序でメッセージを
+届ける接続指向ソケット である (Linux 2.6.4 以降で利用できる)。
 
-.\"O Unix sockets support passing file descriptors or process credentials
-.\"O to other processes using ancillary data.
-Unix ソケットでは、補助データを使って
-ファイルディスクリプタやプロセスの信任状 (credential) を
-送受信することもできる。
-.\"O .SS Address Format
+UNIX ドメインソケットでは、補助データを使って ファイルディスクリプタや
+プロセスの信任状 (credential) を 送受信することもできる。
 .SS アドレスのフォーマット
-.\"O A Unix domain socket address is represented in the following structure:
-Unix ドメインソケットのアドレスは以下の構造体で表現される。
+UNIX ドメインソケットのアドレスは以下の構造体で表現される。
 .in +4n
 .nf
 
@@ -116,307 +58,85 @@ struct sockaddr_un {
 .fi
 .in
 .PP
-.\"O .I sun_family
-.\"O always contains
-.\"O .BR AF_UNIX .
-.I sun_family
-には必ず
-.B AF_UNIX
-が入っている。
+\fIsun_family\fP には必ず \fBAF_UNIX\fP が入っている。
 
-.\"O Three types of address are distinguished in this structure:
 この構造体では 3 種類のアドレスが区別される。
 .IP * 3
-.\"O .IR pathname :
-.\"O a Unix domain socket can be bound to a null-terminated file
-.\"O system pathname using
-.\"O .BR bind (2).
-.\"O When the address of the socket is returned by
-.\"O .BR getsockname (2),
-.\"O .BR getpeername (2),
-.\"O and
-.\"O .BR accept (2),
-.\"O its length is
-.\"O .IR "sizeof(sa_family_t) + strlen(sun_path) + 1" ,
-.\"O and
-.\"O .I sun_path
-.\"O contains the null-terminated pathname.
-.IR "pathname (パス名)" :
-.BR bind (2)
-を使って、Unix ドメインソケットを NULL 終端されたファイルシステム上の
-パス名に結び付けることができる。
-.BR getsockname (2),
-.BR getpeername (2),
-.BR accept (2)
-がソケットのアドレスを返す際には、
-その長さは
-.I "sizeof(sa_family_t) + strlen(sun_path) + 1"
-であり、
-.I sun_path
-に NULL 終端されたパス名が格納される。
+\fIpathname (パス名)\fP: \fBbind\fP(2) を使って、UNIX ドメインソケットを NULL 終端
+されたファイルシステム上の パス名に結び付けることができる。
+\fBgetsockname\fP(2), \fBgetpeername\fP(2), \fBaccept\fP(2) がソケットのアドレスを
+返す際には、その長さは
+\fIoffsetof(struct sockaddr_un, sun_path) + strlen(sun_path) + 1\fP
+であり、 \fIsun_path\fP に NULL 終端されたパス名が格納される。
 .IP *
-.\"O .IR unnamed :
-.\"O A stream socket that has not been bound to a pathname using
-.\"O .BR bind (2)
-.\"O has no name.
-.\"O Likewise, the two sockets created by
-.\"O .BR socketpair (2)
-.\"O are unnamed.
-.\"O When the address of an unnamed socket is returned by
-.\"O .BR getsockname (2),
-.\"O .BR getpeername (2),
-.\"O and
-.\"O .BR accept (2),
-.\"O its length is
-.\"O .IR "sizeof(sa_family_t)" ,
-.\"O and
-.\"O .I sun_path
-.\"O should not be inspected.
-.\"O .\" There is quite some variation across implementations: FreeBSD
-.\"O .\" says the length is 16 bytes, HP-UX 11 says it's zero bytes.
-.IR "unnamed (名前なし)" :
-.BR bind (2)
-を使ってパス名に結び付けることができないストリーム型のソケットは
-名前を持たない。同様に、
-.BR socketpair (2)
-で作成される 2 つのソケットも名前を持たない。
-.BR getsockname (2),
-.BR getpeername (2),
-.BR accept (2)
-が名前なしのソケットのアドレスを返す際には、
-その長さは
-.I "sizeof(sa_family_t)"
-であり、
-.I sun_path
-は検査すべきではない。
-.\" 実装ごとにかなりの違いが存在する。
-.\" FreeBSD では長さは 16 バイトとなり、HP-UX では長さは 0 バイトとなる。
+.\" There is quite some variation across implementations: FreeBSD
+.\" says the length is 16 bytes, HP-UX 11 says it's zero bytes.
+\fIunnamed (名前なし)\fP: \fBbind\fP(2)  を使ってパス名に結び付けることができないストリーム型のソケットは 名前を持たない。同様に、
+\fBsocketpair\fP(2)  で作成される 2 つのソケットも名前を持たない。 \fBgetsockname\fP(2),
+\fBgetpeername\fP(2), \fBaccept\fP(2)  が名前なしのソケットのアドレスを返す際には、 その長さは
+\fIsizeof(sa_family_t)\fP であり、 \fIsun_path\fP は検査すべきではない。
 .IP *
-.\"O .IR abstract :
-.\"O an abstract socket address is distinguished by the fact that
-.\"O .IR sun_path[0]
-.\"O is a null byte ('\\0').
-.\"O All of the remaining bytes in
-.\"O .I sun_path
-.\"O define the "name" of the socket.
-.\"O (Null bytes in the name have no special significance.)
-.\"O The name has no connection with file system pathnames.
-.IR "abstract (抽象)" :
-抽象ソケットアドレスは、
-.I sun_path[0]
-がヌルバイト ('\\0') であることから区別できる。
-.I sun_path
-の残りの全バイトによりソケットの「名前」が定義される
-(名前中のヌルバイトには特別な意味はない)。
-この名前はファイルシステムのパス名とは何の関係もない。
-.\"O The socket's address in this namespace is given by the rest of the
-.\"O bytes in
-.\"O .IR sun_path .
-.\"O When the address of an abstract socket is returned by
-.\"O .BR getsockname (2),
-.\"O .BR getpeername (2),
-.\"O and
-.\"O .BR accept (2),
-.\"O its length is
-.\"O .IR "sizeof(struct sockaddr_un)" ,
-.\"O and
-.\"O .I sun_path
-.\"O contains the abstract name.
-.\"O The abstract socket namespace is a nonportable Linux extension.
-この名前空間におけるソケットのアドレスは、
-.I sun_path
-の残りのバイトで表される。
-.BR getsockname (2),
-.BR getpeername (2),
-.BR accept (2)
-が抽象ソケットのアドレスを返す際には、その長さは
-.I "sizeof(struct sockaddr_un)"
-であり、
-.I sun_path
-に抽象名前空間の名前が格納される。
+\fIabstract (抽象)\fP: 抽象ソケットアドレスは、 \fIsun_path[0]\fP が NULL バイト
+(\(aq\e0\(aq) であることで区別される。この名前空間におけるソケットのアドレス
+は、 \fIsun_path\fP の残りのバイトの、アドレス構造体の指定された長さの範囲で表さ
+れる (名前中の NULL バイトには特別な意味はない)。この名前はファイルシステムの
+パス名とは何の関係もない。 \fBgetsockname\fP(2), \fBgetpeername\fP(2),
+\fBaccept\fP(2) が抽象ソケットのアドレスを返す際には、返される \fIaddrlen\fP は
+\fIsizeof(sa_family_t)\fP より大きく (つまり 2 より大きく)、ソケットの名前は
+\fIsun_path\fP の最初の \fI(addrlen \- sizeof(sa_family_t))\fP バイトに格納される。
 ソケットの抽象名前空間は Linux による拡張であり、移植性はない。
-.\"O .SS Socket Options
 .SS ソケットオプション
-.\"O For historical reasons these socket options are specified with a
-.\"O .B SOL_SOCKET
-.\"O type even though they are
-.\"O .B AF_UNIX
-.\"O specific.
-.\"O They can be set with
-.\"O .BR setsockopt (2)
-.\"O and read with
-.\"O .BR getsockopt (2)
-.\"O by specifying
-.\"O .B SOL_SOCKET
-.\"O as the socket family.
-歴史的な理由により、これらのオプションは
-たとえ
-.B AF_UNIX
-固有のオプションであっても
-.B SOL_SOCKET
-型で指定する。
-ソケットファミリーとして
-.B SOL_SOCKET
-を指定すると、
-.BR setsockopt (2)
-でオプションが設定でき、
-.BR getsockopt (2)
-で取得ができる。
-.\" NAKANO added this TP
-.TP
-.B SO_PASSCRED
-.\"O Enables the receiving of the credentials of the sending process
-.\"O ancillary message.
-.\"O When this option is set and the socket is not yet connected
-.\"O a unique name in the abstract namespace will be generated automatically.
-.\"O Expects an integer boolean flag.
-送信プロセスの補助メッセージとして信任状を受信できるようにする。
-このオプションがセットされていて、まだソケットが接続されていないと、
-抽象名前空間に他と重ならない名前が自動的に生成される。
-ブール整数値のフラグを取る。
-.\"O .SS Sockets API
-.SS ソケット API
-.\"O The following paragraphs describe domain-specific details and
-.\"O unsupported features of the sockets API for Unix domain sockets on Linux.
-この節では、Linux の Unix ドメイン・ソケットでの、
-ドメイン固有の詳細仕様とソケット API でサポートされていない機能に
-ついて説明する。
+歴史的な理由により、これらのオプションは たとえ \fBAF_UNIX\fP 固有のオプションであっても \fBSOL_SOCKET\fP 型で指定する。
+ソケットファミリーとして \fBSOL_SOCKET\fP を指定すると、 \fBsetsockopt\fP(2)  でオプションが設定でき、
+\fBgetsockopt\fP(2)  で取得ができる。
+.TP 
+\fBSO_PASSCRED\fP
+送信プロセスの補助メッセージで信任状を受信できるようにする。このオプションが
+セットされていて、まだソケットが接続されていないと、抽象名前空間に他と重なら
+ない名前が自動的に生成される。ブール整数値のフラグを取る。
+.SS "自動バインド (autobind) 機能"
+.\" i.e. sizeof(short)
+\fBbind\fP(2) 呼び出しで \fIsizeof(sa_family_t)\fP として \fIaddrlen\fP を指定するか、
+アドレスに明示的にバインドされていないソケットに対して
+\fBSO_PASSCRED\fP ソケットオプションが指定されていた場合、
+そのソケットは抽象アドレスに自動的にバインドされる。
+このアドレスは、1 個の NULL バイトの後に、文字集合 \fI[0\-9a\-f]\fP のバイトが
+5 個続く形式である。したがって、自動的にバインドされるアドレス数には
+2^20 個という上限が存在する。
+(Linux 2.1.15 以降で、自動バインド機能が追加されたときには、
+8 バイトが使われており、自動バインドアドレス数の上限は 2^32 であった。
+Linux 2.3.15 で 5 バイトに変更された。)
+.SS "ソケット API"
+この節では、Linux の UNIX ドメインソケットでの、ドメイン固有の詳細仕様と
+ソケット API でサポートされていない機能について説明する。
 
-.\"O Unix domain sockets do not support the transmission of
-.\"O out-of-band data (the
-.\"O .B MSG_OOB
-.\"O flag for
-.\"O .BR send (2)
-.\"O and
-.\"O .BR recv (2)).
-Unix ドメイン・ソケットでは、帯域外データ (out-of-band data) の
-送信
-.RB ( send (2)
-と
-.BR recv (2)
-の
-.B MSG_OOB
-フラグ) はサポートされていない。
+UNIX ドメインソケットでは、帯域外データ (out\-of\-band data) の 送信
+(\fBsend\fP(2) と \fBrecv\fP(2) の \fBMSG_OOB\fP フラグ) はサポートされていない。
 
-.\"O The
-.\"O .BR send (2)
-.\"O .B MSG_MORE
-.\"O flag is not supported by Unix domain sockets.
-.BR send (2)
-.B MSG_MORE
-フラグは Unix ドメイン・ソケットではサポートされていない。
+\fBsend\fP(2) \fBMSG_MORE\fP フラグは UNIX ドメインソケットではサポートされていない。
 
-.\"O The use of
-.\"O .B MSG_TRUNC
-.\"O in the
-.\"O .I flags
-.\"O argument of
-.\"O .BR recv (2)
-.\"O is not supported by Unix domain sockets.
-.BR recv (2)
-の
-.I flags
-引き数での
-.B MSG_TRUNC
-の使用は Unix ドメイン・ソケットではサポートされていない。
+\fBrecv\fP(2) の \fIflags\fP 引き数での \fBMSG_TRUNC\fP の使用は UNIX ドメイン
+ソケットではサポートされていない。
 
-.\"O The
-.\"O .B SO_SNDBUF
-.\"O socket option does have an effect for Unix domain sockets, but the
-.\"O .B SO_RCVBUF
-.\"O option does not.
-.\"O For datagram sockets, the
-.\"O .B SO_SNDBUF
-.\"O value imposes an upper limit on the size of outgoing datagrams.
-.\"O This limit is calculated as the doubled (see
-.\"O .BR socket (7))
-.\"O option value less 32 bytes used for overhead.
-.B SO_SNDBUF
-ソケットオプションは Unix ドメイン・ソケットで効果を持つが、
-.B SO_RCVBUF
-は効果がない。
-データグラム・ソケットでは、
-.B SO_SNDBUF
-の値が出力データグラムの上限サイズとなる。
-実際の上限値は、
-.B SO_SNDBUF
-オプションとして設定された値の 2倍
-.RB ( socket (7)
-参照) からオーバヘッドとして使用される 32 バイトを引いた値となる。
-.\"O .SS Ancillary Messages
+\fBSO_SNDBUF\fP ソケットオプションは UNIX ドメインソケットで効果を持つが、
+\fBSO_RCVBUF\fP は効果がない。 データグラム・ソケットでは、 \fBSO_SNDBUF\fP の値が
+出力データグラムの上限サイズとなる。 実際の上限値は、 \fBSO_SNDBUF\fP オプション
+として設定された値の 2倍 (\fBsocket\fP(7) 参照) からオーバヘッドとして使用される
+32 バイトを引いた値となる。
 .SS 補助メッセージ
-.\"O Ancillary data is sent and received using
-.\"O .BR sendmsg (2)
-.\"O and
-.\"O .BR recvmsg (2).
-補助データを送受するには、
-.BR sendmsg (2)
-や
-.BR recvmsg (2)
-を使用する。
-.\"O For historical reasons the ancillary message types listed below
-.\"O are specified with a
-.\"O .B SOL_SOCKET
-.\"O type even though they are
-.\"O .B AF_UNIX
-.\"O specific.
-歴史的な理由により、以下に示す補助メッセージの型は
-たとえ
-.B AF_UNIX
-固有のものであっても
-.B SOL_SOCKET
-型で指定する。
-.\"O To send them set the
-.\"O .I cmsg_level
-.\"O field of the struct
-.\"O .I cmsghdr
-.\"O to
-.\"O .B SOL_SOCKET
-.\"O and the
-.\"O .I cmsg_type
-.\"O field to the type.
-.\"O For more information see
-.\"O .BR cmsg (3).
-これらを送るには、構造体
-.I cmsghdr
-の
-.I cmsg_level
-フィールドに
-.B SOL_SOCKET
-をセットし、
-.I cmsg_type
-フィールドにタイプをセットする。
-詳細は
-.BR cmsg (3)
-を見よ。
-.TP
-.B SCM_RIGHTS
-.\"O Send or receive a set of open file descriptors from another process.
-.\"O The data portion contains an integer array of the file descriptors.
-.\"O The passed file descriptors behave as though they have been created with
-.\"O .BR dup (2).
-他のプロセスでオープンされたファイルディスクリプタのセットを送受信する。
-データ部分にファイルディスクリプタの整数配列が入っている。
-渡されたファイルディスクリプタは、あたかも
-.BR dup (2)
-で生成されたかのように振る舞う。
-.TP
-.B SCM_CREDENTIALS
-.\"O Send or receive Unix credentials.
-.\"O This can be used for authentication.
-.\"O The credentials are passed as a
-.\"O .I struct ucred
-.\"O ancillary message.
-.\"O Thus structure is defined in
-.\"O .I <sys/socket.h>
-.\"O as follows:
-Unix 信任状を送受信する。これは認証に用いることができる。
-信任状は、
-.I struct ucred
-の補助メッセージとして渡される。
-この構造体は
-.I <sys/socket.h>
-で以下のように定義されている。
+補助データを送受するには、 \fBsendmsg\fP(2)  や \fBrecvmsg\fP(2)  を使用する。
+歴史的な理由により、以下に示す補助メッセージの型は たとえ \fBAF_UNIX\fP 固有のものであっても \fBSOL_SOCKET\fP 型で指定する。
+これらを送るには、構造体 \fIcmsghdr\fP の \fIcmsg_level\fP フィールドに \fBSOL_SOCKET\fP をセットし、
+\fIcmsg_type\fP フィールドにタイプをセットする。 詳細は \fBcmsg\fP(3)  を見よ。
+.TP 
+\fBSCM_RIGHTS\fP
+他のプロセスでオープンされたファイルディスクリプタのセットを送受信する。 データ部分にファイルディスクリプタの整数配列が入っている。
+渡されたファイルディスクリプタは、あたかも \fBdup\fP(2)  で生成されたかのように振る舞う。
+.TP 
+\fBSCM_CREDENTIALS\fP
+UNIX 信任状を送受信する。これは認証に用いることができる。
+信任状は \fIstruct ucred\fP の補助メッセージとして渡される。
+この構造体は \fI<sys/socket.h>\fP で以下のように定義されている。
 
 .in +4n
 .nf
@@ -428,247 +148,123 @@ struct ucred {
 .fi
 .in
 
-.\"O Since glibc 2.8, the
-.\"O .B _GNU_SOURCE
-.\"O feature test macro must be defined in order to obtain the definition
-.\"O of this structure.
-glibc 2.8 以降では、この構造体の定義を得るためには機能検査マクロ
-.B _GNU_SOURCE
-を定義しなければならない。
+glibc 2.8 以降では、この構造体の定義を得るためには
+(\fIどの\fPヘッダファイルをインクルードするよりも前に)
+機能検査マクロ \fB_GNU_SOURCE\fP を定義しなければならない。
 
-.\"O The credentials which the sender specifies are checked by the kernel.
-.\"O A process with effective user ID 0 is allowed to specify values that do
-.\"O not match its own.
-送信側が指定した信任状は、カーネルがチェックする。
-実効ユーザー ID が 0 のプロセスには、
-自分自身以外の値を指定する事が許される。
-.\"O The sender must specify its own process ID (unless it has the capability
-.\"O .BR CAP_SYS_ADMIN ),
-.\"O its user ID, effective user ID, or saved set-user-ID (unless it has
-.\"O .BR CAP_SETUID ),
-.\"O and its group ID, effective group ID, or saved set-group-ID
-.\"O (unless it has
-.\"O .BR CAP_SETGID ).
-送信側は以下の 3 つを指定しなければならない。
-1) 自分自身のプロセス ID
-.RB ( CAP_SYS_ADMIN
-権限を持っていない場合)、
-2) 自分自身のユーザー ID あるいは実効ユーザー ID か保存 set-user-ID
-.RB ( CAP_SETUID
-権限を持っていない場合)、
-3) 自分自身のグループ ID あるいは実行グループ ID か保存 set-group-ID
-.RB ( CAP_SETGID
-を持っていない場合)。
-.\"O To receive a
-.\"O .I struct ucred
-.\"O message the
-.\"O .B SO_PASSCRED
-.\"O option must be enabled on the socket.
-.I struct ucred
-メッセージを受信するためには、ソケットに対し
-.B SO_PASSCRED
-オプションを有効にしなくてはならない。
-.\"O .SH ERRORS
+送信側が指定した信任状は、カーネルがチェックする。 実効ユーザー ID が 0 のプロセスには、 自分自身以外の値を指定する事が許される。
+送信側は以下の 3 つを指定しなければならない。 1) 自分自身のプロセス ID (\fBCAP_SYS_ADMIN\fP 権限を持っていない場合)、 2)
+自分自身のユーザー ID あるいは実効ユーザー ID か保存 set\-user\-ID (\fBCAP_SETUID\fP 権限を持っていない場合)、 3)
+自分自身のグループ ID あるいは実行グループ ID か保存 set\-group\-ID (\fBCAP_SETGID\fP を持っていない場合)。
+\fIstruct ucred\fP メッセージを受信するためには、ソケットに対し \fBSO_PASSCRED\fP オプションを有効にしなくてはならない。
+.SS ioctl
+以下の \fBioctl\fP(2) 呼び出しは \fIvalue\fP に情報を入れて返す。
+正しい書式は以下の通り。
+.PP
+.RS
+.nf
+\fBint\fP\fI value\fP\fB;\fP
+\fIerror\fP\fB = ioctl(\fP\fIunix_socket\fP\fB, \fP\fIioctl_type\fP\fB, &\fP\fIvalue\fP\fB);\fP
+.fi
+.RE
+.PP
+\fIioctl_type\fP には以下を指定できる:
+.TP 
+\fBSIOCINQ\fP
+.\" FIXME http://sources.redhat.com/bugzilla/show_bug.cgi?id=12002,
+.\" filed 2010-09-10, may cause SIOCINQ to be defined in glibc headers
+.\" SIOCOUTQ also has an effect for UNIX domain sockets, but not
+.\" quite what userland might expect. It seems to return the number
+.\" of bytes allocated for buffers containing pending output.
+.\" That number is normally larger than the number of bytes of pending
+.\" output. Since this info is, from userland's point of view, imprecise,
+.\" and it may well change, probably best not to document this now.
+受信バッファのキューにある、まだ読んでいないデータの量を返す。ソケットは
+LISTEN 状態にあってはならず、さもないとエラー (\fBEINVAL\fP) が返る。
+\fBSIOCINQ\fP は \fI<linux/sockios.h>\fP で定義されている。
+代わりに、\fI<sys/ioctl.h>\fP で定義されている、同義語の \fBFIONREAD\fP
+を使うこともできる。
 .SH エラー
-.TP
-.B EADDRINUSE
-.\"O Selected local address is already taken or file system socket
-.\"O object already exists.
-選択したソケットが既に用いられていた。または、
-ファイルシステムのソケットオブジェクトが既に存在していた。
-.TP
-.B ECONNREFUSED
-.\"O .BR connect (2)
-.\"O called with a socket object that isn't listening.
-.\"O This can happen when
-.\"O the remote socket does not exist or the filename is not a socket.
-listen 状態にないソケットオブジェクトに対して
-.BR connect (2)
-が呼ばれた。リモートソケットが存在していなかった、
-ファイル名がソケットではなかった、などのときに起こる。
-.TP
-.B ECONNRESET
-.\"O Remote socket was unexpectedly closed.
+.TP 
+\fBEADDRINUSE\fP
+指定したローカルアドレスが既に使用されているか、ファイルシステムの
+ソケットオブジェクトが既に存在している。
+.TP 
+\fBECONNREFUSED\fP
+\fBconnect\fP(2) により指定されたリモートアドレスが接続待ちソケットではなかった。
+ターゲットアドレスがソケットではない場合にもこのエラーが発生する。
+.TP 
+\fBECONNRESET\fP
 リモートソケットが予期しないかたちでクローズされた。
-.TP
-.B EFAULT
-.\"O User memory address was not valid.
+.TP 
+\fBEFAULT\fP
 ユーザーメモリアドレスが不正。
-.TP
-.B EINVAL
-.\"O Invalid argument passed.
-.\"O A common cause is the missing setting of AF_UNIX
-.\"O in the
-.\"O .I sun_type
-.\"O field of passed addresses or the socket being in an
-.\"O invalid state for the applied operation.
-渡した引数が不正。よくある原因は、
-渡したアドレスの
-.I sun_type
-フィールドに AF_UNIX を設定しなかった、
-行おうとした操作に対してソケットの状態が有効ではなかった、など。
-.TP
-.B EISCONN
-.\"O .BR connect (2)
-.\"O called on an already connected socket or a target address was
-.\"O specified on a connected socket.
-既に接続されているソケットに対して
-.BR connect (2)
-が呼ばれた。または、指定したターゲットアドレスが
-既に接続済みのソケットだった。
-.TP
-.B ENOMEM
-.\"O Out of memory.
+.TP 
+\fBEINVAL\fP
+渡した引数が不正。よくある原因としては、渡したアドレスの \fIsun_type\fP フィール
+ドに \fBAF_UNIX\fP が指定されていなかった、行おうとした操作に対してソケットが有
+効な状態ではなかった、など。
+.TP 
+\fBEISCONN\fP
+既に接続されているソケットに対して \fBconnect\fP(2)  が呼ばれた。または、指定したターゲットアドレスが 既に接続済みのソケットだった。
+.TP 
+\fBENOENT\fP
+\fBconnect\fP(2) に指定されたリモートアドレスのパス名が存在しなかった。
+.TP 
+\fBENOMEM\fP
 メモリが足りない。
-.TP
-.B ENOTCONN
-.\"O Socket operation needs a target address, but the socket is not connected.
-ソケット操作にターゲットアドレスが必要だが、
-このソケットは接続されていない。
-.TP
-.B EOPNOTSUPP
-.\"O Stream operation called on non-stream oriented socket or tried to
-.\"O use the out-of-band data option.
-ストリーム指向でないソケットに対してストリーム操作が呼び出された。
-または帯域外データオプションを用いようとした。
-.TP
-.B EPERM
-.\"O The sender passed invalid credentials in the
-.\"O .IR "struct ucred" .
-送信者が
-.I struct ucred
-に不正な信任状を渡した。
-.TP
-.B EPIPE
-.\"O Remote socket was closed on a stream socket.
-.\"O If enabled, a
-.\"O .B SIGPIPE
-.\"O is sent as well.
-.\"O This can be avoided by passing the
-.\"O .B MSG_NOSIGNAL
-.\"O flag to
-.\"O .BR sendmsg (2)
-.\"O or
-.\"O .BR recvmsg (2).
-リモートソケットがストリームソケット上でクローズされた。
-可能な場合は
-.B SIGPIPE
-も同時に送られる。これを避けるには
-.B MSG_NOSIGNAL
-フラグを
-.BR sendmsg (2)
-や
-.BR recvmsg (2)
-に渡す。
-.TP
-.B EPROTONOSUPPORT
-.\"O Passed protocol is not AF_UNIX.
-渡されたプロトコルが AF_UNIX でない。
-.TP
-.B EPROTOTYPE
-.\"O Remote socket does not match the local socket type
-.\"O .RB ( SOCK_DGRAM
-.\"O vs.
-.\"O .BR SOCK_STREAM )
-リモートソケットとローカルソケットのタイプが一致していなかった
-.RB ( SOCK_DGRAM
-と
-.BR SOCK_STREAM )。
-.TP
-.B ESOCKTNOSUPPORT
-.\"O Unknown socket type.
+.TP 
+\fBENOTCONN\fP
+ソケット操作にターゲットアドレスが必要だが、 このソケットは接続されていない。
+.TP 
+\fBEOPNOTSUPP\fP
+ストリーム指向でないソケットに対してストリーム操作が呼び出された。 または帯域外データオプションを用いようとした。
+.TP 
+\fBEPERM\fP
+送信者が \fIstruct ucred\fP に不正な信任状を渡した。
+.TP 
+\fBEPIPE\fP
+リモートソケットがストリームソケット上でクローズされた。 可能な場合は \fBSIGPIPE\fP も同時に送られる。これを避けるには
+\fBMSG_NOSIGNAL\fP フラグを \fBsendmsg\fP(2)  や \fBrecvmsg\fP(2)  に渡す。
+.TP 
+\fBEPROTONOSUPPORT\fP
+渡されたプロトコルが \fBAF_UNIX\fP でない。
+.TP 
+\fBEPROTOTYPE\fP
+リモートソケットとローカルソケットのタイプが一致していなかった (\fBSOCK_DGRAM\fP と \fBSOCK_STREAM\fP)。
+.TP 
+\fBESOCKTNOSUPPORT\fP
 未知のソケットタイプ。
 .PP
-.\"O Other errors can be generated by the generic socket layer or
-.\"O by the file system while generating a file system socket object.
-.\"O See the appropriate manual pages for more information.
-他にも汎用のソケット層でエラーが起こったり、
-ファイルシステム上にソケットオブジェクトを作ろうとした場合に
-ファイルシステムのエラーが起こることがある。
+他にも汎用のソケット層でエラーが起こったり、 ファイルシステム上にソケットオブジェクトを作ろうとした場合に ファイルシステムのエラーが起こることがある。
 それぞれの詳細は適切な man ページを参照すること。
-.\"O .SH VERSIONS
 .SH バージョン
-.\"O .B SCM_CREDENTIALS
-.\"O and the abstract namespace were introduced with Linux 2.2 and should not
-.\"O be used in portable programs.
-.B SCM_CREDENTIALS
-と抽象名前空間は、Linux 2.2 で導入された。
-移植性が必要なプログラムでは使うべきではない。
-.\"O (Some BSD-derived systems also support credential passing,
-.\"O but the implementation details differ.)
-(BSD 由来のシステムの中にも信任状の送受信をサポートしているものがあるが、
-その実装の詳細はシステムによって異なる)
-.\"O .SH NOTES
+\fBSCM_CREDENTIALS\fP と抽象名前空間は、Linux 2.2 で導入された。 移植性が必要なプログラムでは使うべきではない。 (BSD
+由来のシステムの中にも信任状の送受信をサポートしているものがあるが、 その実装の詳細はシステムによって異なる)
 .SH 注意
-.\"O In the Linux implementation, sockets which are visible in the
-.\"O file system honor the permissions of the directory they are in.
-.\"O Their owner, group and their permissions can be changed.
-.\"O Creation of a new socket will fail if the process does not have write and
-.\"O search (execute) permission on the directory the socket is created in.
-.\"O Connecting to the socket object requires read/write permission.
-.\"O This behavior differs from many BSD-derived systems which
-.\"O ignore permissions for Unix sockets.
-.\"O Portable programs should not rely on
-.\"O this feature for security.
-Linux の実装では、ファイルシステム上から見えるソケットは、
-それらが置かれているディレクトリのパーミッションに従う。
-ソケットの所有者、グループ、パーミッションは変更できる。
-新しいソケットを作るとき、作ろうとするディレクトリに対して
-プロセスが書き込みと検索 (実行) 権限を持っていなければ、作成に失敗する。
-ソケットオブジェクトに接続するには、 read/write 権限が必要である。
-この動作は、多くの BSD 由来のシステムとは異なっている
-(BSD では Unix ソケットに対してはパーミッションを無視する)。
-移植性の必要なプログラムでは、
-セキュリティをこの仕様に依存してはならない。
+Linux の実装では、ファイルシステム上から見えるソケットは、それらが置かれてい
+るディレクトリのパーミッションに従う。ソケットの所有者、グループ、パーミッショ
+ンは変更できる。新しいソケットを作るとき、作ろうとするディレクトリに対して プ
+ロセスが書き込みと検索 (実行) 権限を持っていなければ、作成に失敗する。ソケッ
+トオブジェクトに接続するには、 read/write 権限が必要である。この動作は、多く
+の BSD 由来のシステムとは異なっている (BSD では UNIX ドメインソケットに対して
+はパーミッションを無視する)。 移植性の必要なプログラムでは、セキュリティをこ
+の仕様に依存してはならない。
 
-.\"O Binding to a socket with a filename creates a socket
-.\"O in the file system that must be deleted by the caller when it is no
-.\"O longer needed (using
-.\"O .BR unlink (2)).
-ファイル名を指定してソケットにバインドすると、
-ファイルシステムにソケットが生成される。
-これは必要なくなったときに呼びだしたユーザーが削除しなければならない
-.RB ( unlink (2)
-を用いる)。
-.\"O The usual Unix close-behind semantics apply; the socket can be unlinked
-.\"O at any time and will be finally removed from the file system when the last
-.\"O reference to it is closed.
-Unix で通常使われる「背後で閉じる方式」が適用される。
-ソケットはいつでも unlink することができ、最後の参照が
+ファイル名を指定してソケットにバインドすると、ファイルシステムにソケットが
+生成される。これは必要なくなったときに呼びだしたユーザーが削除しなければ
+ならない (\fBunlink\fP(2) を用いる)。 UNIX で通常使われる「背後で閉じる方式」
+が適用される。ソケットはいつでも unlink することができ、最後の参照が
 クローズされたときにファイルシステムから削除される。
 
-.\"O To pass file descriptors or credentials over a
-.\"O .BR SOCK_STREAM ,
-.\"O you need
-.\"O to send or receive at least one byte of nonancillary data in the same
-.\"O .BR sendmsg (2)
-.\"O or
-.\"O .BR recvmsg (2)
-.\"O call.
-.B SOCK_STREAM
-上でファイルディスクリプタや信任状を渡すためには、同じ
-.BR sendmsg (2)
-や
-.BR recvmsg (2)
-コールで補助データ以外のデータを少なくとも
-1 バイト送信/受信する必要がある。
+\fBSOCK_STREAM\fP 上でファイルディスクリプタや信任状を渡すためには、同じ \fBsendmsg\fP(2)  や \fBrecvmsg\fP(2)
+コールで補助データ以外のデータを少なくとも 1 バイト送信/受信する必要がある。
 
-.\"O Unix domain stream sockets do not support the notion of out-of-band data.
-Unix ドメインのストリーム・ソケットでは、
-帯域外データの概念はサポートされない。
-.\"O .SH EXAMPLE
+UNIX ドメインのストリーム・ソケットでは、 帯域外データの概念はサポートされない。
 .SH 例
-.\"O See
-.\"O .BR bind (2).
-.BR bind (2)
-参照。
-.\"O .SH "SEE ALSO"
+\fBbind\fP(2)  参照。
+
+\fBSCM_RIGHTS\fP の使用例については \fBcmsg\fP(3) を参照。
 .SH 関連項目
-.BR recvmsg (2),
-.BR sendmsg (2),
-.BR socket (2),
-.BR socketpair (2),
-.BR cmsg (3),
-.BR capabilities (7),
-.BR credentials (7),
-.BR socket (7)
+\fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBsocket\fP(2), \fBsocketpair\fP(2), \fBcmsg\fP(3),
+\fBcapabilities\fP(7), \fBcredentials\fP(7), \fBsocket\fP(7)
index 556497c..3181c7a 100644 (file)
@@ -1,4 +1,4 @@
-'\"
+.\"
 .\" (C) Copyright 1999-2000 David A. Wheeler (dwheeler@dwheeler.com)
 .\"
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" Modified Fri Aug 21 23:00:00 1999 by David A. Wheeler (dwheeler@dwheeler.com)
 .\" Modified Tue Mar 14 2000 by David A. Wheeler (dwheeler@dwheeler.com)
 .\"
-.\" Japanese Version Copyright (c) 2000 NAKANO Takeo all rights reserved.
-.\" Translated San 12 Mar 2000 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
+.\"*******************************************************************
 .\"
-.\"WORD:        generated file          (KDE の) 生成ファイル
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH URI 7 2000-03-14 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O uri, url, urn \- uniform resource identifier (URI), including a URL or URN
+.\"*******************************************************************
+.TH URI 7 2000\-03\-14 Linux "Linux Programmer's Manual"
 .SH 名前
 uri, url, urn \- uniform resource identifier (URI), URL と URN も含む.
-.\"O .SH SYNOPSIS
 .SH 書式
 .nf
 .HP 0.2i
@@ -75,1089 +72,406 @@ absolute_path = "/"  path_segments
 .HP
 relative_path = relative_segment [ absolute_path ]
 .fi
-.\"O .SH DESCRIPTION
 .SH 説明
 .PP
-.\"O A Uniform Resource Identifier (URI) is a short string of characters
-.\"O identifying an abstract or physical resource (for example, a web page).
-.\"O A Uniform Resource Locator (URL) is a URI
-.\"O that identifies a resource through its primary access
-.\"O mechanism (e.g., its network "location"), rather than
-.\"O by name or some other attribute of that resource.
-.\"O A Uniform Resource Name (URN) is a URI
-.\"O that must remain globally unique and persistent even when
-.\"O the resource ceases to exist or becomes unavailable.
-Uniform Resource Identifier (URI)
-は抽象的・物理的なリソース (web ページなど)
-を識別するための短い文字列である。
-Uniform Resource Locator (URL) は URI の一種で、
-リソースの名前などの属性でではなく、
-そのリソースに対応するアクセスメカニズムを通してリソースを指定する
-(つまりネットワーク上の「場所 (location)」を指定する)。
-Uniform Resource Name (URN) は URI の一種で、
-これは対象のリソースが廃棄されたり利用できなくなった場合にも、
-グローバルに他と重なることなく永続しなければならない。
-.PP
-.\"O URIs are the standard way to name hypertext link destinations
-.\"O for tools such as web browsers.
-.\"O The string "http://www.kernelnotes.org" is a URL (and thus it
-.\"O is also a URI).
-.\"O Many people use the term URL loosely as a synonym for URI
-.\"O (though technically URLs are a subset of URIs).
-URI は、 web ブラウザなどのツールで
-ハイパーテキストリンクのリンク先を指定する時の標準的な方法である。
-文字列 "http://www.kernelnotes.org" は URL である (従って
-URI でもある)。多くの人々は、 URL という言葉をほぼ URI の
-同義語として使っている (しかし技術的には URL は URI のサブセットである)。
-.PP
-.\"O URIs can be absolute or relative.
-.\"O An absolute identifier refers to a resource independent of
-.\"O context, while a relative
-.\"O identifier refers to a resource by describing the difference
-.\"O from the current context.
-.\"O Within a relative path reference, the complete path segments "." and
-.\"O ".." have special meanings: "the current hierarchy level" and "the
-.\"O level above this hierarchy level", respectively, just like they do in
-.\"O UNIX-like systems.
-.\"O A path segment which contains a colon
-.\"O character can't be used as the first segment of a relative URI path
-.\"O (e.g., "this:that"), because it would be mistaken for a scheme name;
-.\"O precede such segments with ./ (e.g., "./this:that").
-.\"O Note that descendants of MS-DOS (e.g., Microsoft Windows) replace
-.\"O devicename colons with the vertical bar ("|") in URIs, so "C:" becomes "C|".
-URI は絶対的にも相対的にも指定できる。
-絶対的な指定は、リソースをコンテクストに依存しないかたちで参照する。
-相対的な指定は、リソースを現在のコンテクストからの差異によって記述する。
-相対パス参照では、 "." および ".." だけのパス部分 (path segment)
-は特別な意味を持ち、
-それぞれ「現在の階層レベル」および「現在の階層の一つ上のレベル」
-として扱われる (UNIX 風のシステムと同様)。
-コロン文字を含むパス部分は相対 URI パスの先頭に用いることはできない
-(つまり "this:that" はダメ)。スキーム名と区別できないからである。
-このような場合には ./ を前置すること (つまり "./this:that" とする)。
-MS-DOS の子孫 (Microsoft Windows など) は、
-デバイス名のコロンを URI では垂直バー ("|") に置き換える。
-したがって "C:" は "C|" となる。
-.PP
-.\"O A fragment identifier, if included, refers to a particular named portion
-.\"O (fragment) of a resource; text after a \(aq#\(aq identifies the fragment.
-.\"O A URI beginning with \(aq#\(aq refers to that fragment in the current resource.
-フラグメント指定子 (fragment identifier) は、(もし含まれていれば)
-リソース中の名前付けされた特定の部分 (フラグメント) を参照する。
-\(aq#\(aq 指定子以降の文字列がフラグメントを指定する。
-\(aq#\(aq で始まる URI は現在のリソース中のフラグメントを参照する。
-.\"O .SS USAGE
-.S 利用法
-.\"O There are many different URI schemes, each with specific
-.\"O additional rules and meanings, but they are intentionally made to be
-.\"O as similar as possible.
-.\"O For example, many URL schemes
-.\"O permit the authority to be the following format, called here an
-.\"O .I ip_server
-.\"O (square brackets show what's optional):
-URI のスキームには色々な種類があり、
-それぞれ固有のルールや意味が追加されている。
-しかしできるだけ統一したものにしようという努力もなされている。
-例えば、多くの URL スキームは「機関 (authority)」に対して以下の書式
-(ここでは
-.I ip_server
-と呼ぶことにする)
+Uniform Resource Identifier (URI)  は抽象的・物理的なリソース (web ページなど)
+を識別するための短い文字列である。 Uniform Resource Locator (URL) は URI の一種で、
+リソースの名前などの属性でではなく、 そのリソースに対応するアクセスメカニズムを通してリソースを指定する (つまりネットワーク上の「場所
+(location)」を指定する)。 Uniform Resource Name (URN) は URI の一種で、
+これは対象のリソースが廃棄されたり利用できなくなった場合にも、 グローバルに他と重なることなく永続しなければならない。
+.PP
+URI は、 web ブラウザなどのツールで ハイパーテキストリンクのリンク先を指定する時の標準的な方法である。 文字列
+"http://www.kernelnotes.org" は URL である (従って URI でもある)。多くの人々は、 URL という言葉をほぼ
+URI の 同義語として使っている (しかし技術的には URL は URI のサブセットである)。
+.PP
+URI は絶対的にも相対的にも指定できる。 絶対的な指定は、リソースをコンテクストに依存しないかたちで参照する。
+相対的な指定は、リソースを現在のコンテクストからの差異によって記述する。 相対パス参照では、 "." および ".." だけのパス部分 (path
+segment)  は特別な意味を持ち、 それぞれ「現在の階層レベル」および「現在の階層の一つ上のレベル」 として扱われる (UNIX
+風のシステムと同様)。 コロン文字を含むパス部分は相対 URI パスの先頭に用いることはできない (つまり "this:that"
+はダメ)。スキーム名と区別できないからである。 このような場合には ./ を前置すること (つまり "./this:that" とする)。 MS\-DOS
+の子孫 (Microsoft Windows など) は、 デバイス名のコロンを URI では垂直バー ("|") に置き換える。 したがって "C:"
+は "C|" となる。
+.PP
+フラグメント指定子 (fragment identifier) は、(もし含まれていれば)  リソース中の名前付けされた特定の部分 (フラグメント)
+を参照する。 \(aq#\(aq 指定子以降の文字列がフラグメントを指定する。 \(aq#\(aq で始まる URI
+は現在のリソース中のフラグメントを参照する。
+.SS 使い方
+URI のスキームには色々な種類があり、 それぞれ固有のルールや意味が追加されている。 しかしできるだけ統一したものにしようという努力もなされている。
+例えば、多くの URL スキームは「機関 (authority)」に対して以下の書式 (ここでは \fIip_server\fP と呼ぶことにする)
 を許している (角括弧内部は省略可能)。
 .HP
-.IR "ip_server = " [ user " [ : " password " ] @ ] " host " [ : " port ]
-.PP
-.\"O This format allows you to optionally insert a username,
-.\"O a user plus password, and/or a port number.
-.\"O The
-.\"O .I host
-.\"O is the name of the host computer, either its name as determined by DNS
-.\"O or an IP address (numbers separated by periods).
-.\"O Thus the URI
-.\"O <http://fred:fredpassword@xyz.com:8080/>
-.\"O logs into a web server on host xyz.com
-.\"O as fred (using fredpassword) using port 8080.
-.\"O Avoid including a password in a URI if possible because of the many
-.\"O security risks of having a password written down.
-.\"O If the URL supplies a username but no password, and the remote
-.\"O server requests a password, the program interpreting the URL
-.\"O should request one from the user.
-このフォーマットには、ユーザ名、ユーザ名+パスワードを指定できる。
-ポート番号を追加することも可能である。
-.I host
-はホストコンピュータの名前で、 DNS で定義される名前か IP アドレス
-(ピリオドで区切られた数字) で指定する。したがって URI
-<http://fred:fredpassword@xyz.com:8080/>
-は、ホスト xyz.com に fred として (パスワードを使って)
-ポート 8080 を使ってログインする。
-パスワードは可能なら URI には含めないほうが良いだろう。
-パスワードを直書きすると様々なセキュリティ上のリスクが生じるからである。
-URL にユーザ名だけを与え、パスワードを与えない場合は、
-リモートサーバはパスワードを要求してくる。
-URL を解釈したプログラムが、ユーザにこの入力を促すことになろう。
-.PP
-.\"O Here are some of the most common schemes in use on UNIX-like systems
-.\"O that are understood by many tools.
-.\"O Note that many tools using URIs also have internal schemes or specialized
-.\"O schemes; see those tools' documentation for information on those schemes.
-以下に、 UNIX 風のシステムで非常に良く用いられており、
-多くのツールが理解するスキームを示す。
-URI を使うツールの多くでは、内部スキームや特殊なスキームも
-使えることが多い。そのようなスキームに関してはツールのドキュメントを見ること。
-.PP
-.\"O .B "http \- Web (HTTP) server"
-.B "http \- Web (HTTP) サーバ"
-.PP
-.RI http:// ip_server / path
+\fIip_server = \fP[\fIuser\fP [ : \fIpassword\fP ] @ ] \fIhost\fP [ : \fIport\fP]
+.PP
+このフォーマットには、ユーザ名、ユーザ名+パスワードを指定できる。 ポート番号を追加することも可能である。 \fIhost\fP
+はホストコンピュータの名前で、 DNS で定義される名前か IP アドレス (ピリオドで区切られた数字) で指定する。したがって URI
+<http://fred:fredpassword@xyz.com:8080/> は、ホスト xyz.com に fred として
+(パスワードを使って)  ポート 8080 を使ってログインする。 パスワードは可能なら URI には含めないほうが良いだろう。
+パスワードを直書きすると様々なセキュリティ上のリスクが生じるからである。 URL にユーザ名だけを与え、パスワードを与えない場合は、
+リモートサーバはパスワードを要求してくる。 URL を解釈したプログラムが、ユーザにこの入力を促すことになろう。
+.PP
+以下に、 UNIX 風のシステムで非常に良く用いられており、 多くのツールが理解するスキームを示す。 URI
+を使うツールの多くでは、内部スキームや特殊なスキームも 使えることが多い。そのようなスキームに関してはツールのドキュメントを見ること。
+.PP
+\fBhttp \- Web (HTTP) サーバ\fP
+.PP
+http://\fIip_server\fP/\fIpath\fP
 .br
-.RI http:// ip_server / path ? query
-.PP
-.\"O This is a URL accessing a web (HTTP) server.
-.\"O The default port is 80.
-.\"O If the path refers to a directory, the web server will choose what
-.\"O to return; usually if there is a file named "index.html" or "index.htm"
-.\"O its content is returned, otherwise, a list of the files in the current
-.\"O directory (with appropriate links) is generated and returned.
-.\"O An example is <http://lwn.net>.
-これは web (HTTP) サーバにアクセスするための URL である。
-デフォルトのポートは 80。パスがディレクトリを参照しているときは、
-返される情報は web サーバが選択する。通常は、
-"index.html" や "index.htm" のようなファイルがあれば、その内容が返される。
-なければ、カレントディレクトリのリストが (適切なリンクとともに) 生成されて
-返される。例としては <http://lwn.net> など。
-.PP
-.\"O A query can be given in the archaic "isindex" format, consisting of a
-.\"O word or phrase and not including an equal sign (=).
-.\"O A query can also be in the longer "GET" format, which has one or more
-.\"O query entries of the form
-.\"O .IR key = value
-.\"O separated by the ampersand character (&).
-問い合わせ (query) を、古い "isindex" フォーマットによって送ることもできる。
-このフォーマットは単語またはフレーズからなり、等号 (=) は含まない。
-より長い "GET" フォーマットでも問い合わせは行える。
-このフォーマットには、一つ以上の問い合わせエントリが
-.IR key = value
-という形式で含まれる。それぞれのエントリはアンパサンド (&) で区切られる。
-.\"O Note that
-.\"O .I key
-.\"O can be repeated more than once, though it's up to the web server
-.\"O and its application programs to determine if there's any meaning to that.
-.\"O There is an unfortunate interaction with HTML/XML/SGML and
-.\"O the GET query format; when such URIs with more than one key
-.\"O are embedded in SGML/XML documents (including HTML), the ampersand
-.\"O (&) has to be rewritten as &amp;.
-.\"O Note that not all queries use this format; larger forms
-.\"O may be too long to store as a URI, so they use a different
-.\"O interaction mechanism (called POST) which does
-.\"O not include the data in the URI.
-.I key
-は複数個指定することもできる。しかしそれに意味があるかどうかは
-web サーバとアプリケーションプログラムが決める。
-HTML/XML/SGML と GET 問い合わせ形式の間には、不幸な関係がある。
-一つ以上のキーの含まれる URI が SGML/XML 文書 (HTML もそう)
-に埋めこまれる際には、アンパサンド (&) は &amp; と書かなければならない。
-全ての問い合わせがこの形式を使うわけではない。
-フォームが長くなると URI に入れるには長すぎるから、
-別の通信メカニズム (POST と呼ばれる) が用いられる。
-POST では URI にはデータは含まれない。
-.\"O See the Common Gateway Interface specification at
-.\"O <http://www.w3.org/CGI> for more information.
-より詳しい情報は、
-<http://www.w3.org/CGI> にある
-Common Gateway Interface の仕様書を見よ。
-.PP
-.\"O .B "ftp \- File Transfer Protocol (FTP)"
-.B "ftp \- ファイル転送プロトコル (FTP)"
-.PP
-.RI ftp:// ip_server / path
-.PP
-.\"O This is a URL accessing a file through the file transfer protocol (FTP).
-.\"O The default port (for control) is 21.
-.\"O If no username is included, the username "anonymous" is supplied, and
-.\"O in that case many clients provide as the password the requestor's
-.\"O Internet email address.
-.\"O An example is
-.\"O <ftp://ftp.is.co.za/rfc/rfc1808.txt>.
-これはファイル転送プロトコル (FTP) を通してファイルにアクセスするための
-URL である。デフォルトの (制御用) ポートは 21 である。
-ユーザ名がない場合には、ユーザ名 anonymous が与えられる。
-そしてその場合には、クライアントの多くは要求した人の
-インターネットメールアドレスをパスワードとして与える。
-例としては <ftp://ftp.is.co.za/rfc/rfc1808.txt> など。
-.PP
-.\"O .B "gopher \- Gopher server"
-.B "gofer \- Gofer サーバ"
-.PP
-.RI gopher:// ip_server / "gophertype selector"
+http://\fIip_server\fP/\fIpath\fP?\fIquery\fP
+.PP
+これは web (HTTP) サーバにアクセスするための URL である。 デフォルトのポートは 80。パスがディレクトリを参照しているときは、
+返される情報は web サーバが選択する。通常は、 "index.html" や "index.htm" のようなファイルがあれば、その内容が返される。
+なければ、カレントディレクトリのリストが (適切なリンクとともに) 生成されて 返される。例としては <http://lwn.net>
+など。
+.PP
+問い合わせ (query) を、古い "isindex" フォーマットによって送ることもできる。 このフォーマットは単語またはフレーズからなり、等号
+(=) は含まない。 より長い "GET" フォーマットでも問い合わせは行える。 このフォーマットには、一つ以上の問い合わせエントリが
+\fIkey\fP=\fIvalue\fP という形式で含まれる。それぞれのエントリはアンパサンド (&) で区切られる。 \fIkey\fP
+は複数個指定することもできる。しかしそれに意味があるかどうかは web サーバとアプリケーションプログラムが決める。 HTML/XML/SGML と
+GET 問い合わせ形式の間には、不幸な関係がある。 一つ以上のキーの含まれる URI が SGML/XML 文書 (HTML もそう)
+に埋めこまれる際には、アンパサンド (&) は &amp; と書かなければならない。 全ての問い合わせがこの形式を使うわけではない。
+フォームが長くなると URI に入れるには長すぎるから、 別の通信メカニズム (POST と呼ばれる) が用いられる。 POST では URI
+にはデータは含まれない。 より詳しい情報は、 <http://www.w3.org/CGI> にある Common Gateway
+Interface の仕様書を見よ。
+.PP
+\fBftp \- ファイル転送プロトコル (FTP)\fP
+.PP
+ftp://\fIip_server\fP/\fIpath\fP
+.PP
+これはファイル転送プロトコル (FTP) を通してファイルにアクセスするための URL である。デフォルトの (制御用) ポートは 21 である。
+ユーザ名がない場合には、ユーザ名 anonymous が与えられる。 そしてその場合には、クライアントの多くは要求した人の
+インターネットメールアドレスをパスワードとして与える。 例としては
+<ftp://ftp.is.co.za/rfc/rfc1808.txt> など。
+.PP
+\fBgofer \- Gofer サーバ\fP
+.PP
+gopher://\fIip_server\fP/\fIgophertype selector\fP
 .br
-.RI gopher:// ip_server / "gophertype selector" %09 search
+gopher://\fIip_server\fP/\fIgophertype selector\fP%09\fIsearch\fP
 .br
-.RI gopher:// ip_server / "gophertype selector" %09 search %09 gopher+_string
+gopher://\fIip_server\fP/\fIgophertype selector\fP%09\fIsearch\fP%09\fIgopher+_string\fP
 .br
 .PP
-.\"O The default gopher port is 70.
-.\"O .I gophertype
-.\"O is a single-character field to denote the
-.\"O Gopher type of the resource to
-.\"O which the URL refers.
-.\"O The entire path may also be empty, in
-.\"O which case the delimiting "/" is also optional and the gophertype
-.\"O defaults to "1".
-デフォルトの gopher ポートは 70 である。
-.I gophertype
-は 1 文字からなるフィールドで、
-URL が参照している Gopher のリソースタイプを示す。
-パス全体が空であってもよく、その場合は区切りの "/" も省略できる。
-このとき gophertype のデフォルトは "1" になる。
-.PP
-.\"O .I selector
-.\"O is the Gopher selector string.
-.\"O In the Gopher protocol,
-.\"O Gopher selector strings are a sequence of octets which may contain
-.\"O any octets except 09 hexadecimal (US-ASCII HT or tab), 0A hexadecimal
-.\"O (US-ASCII character LF), and 0D (US-ASCII character CR).
-.I selector
-は Gopher セレクタ文字列である。Gopher プロトコルでは、
-Gopher セレクタ文字列はオクテット文字からなり、
-16進数の 09 (US-ASCII の HT または tab)、 0A (US-ASCII の LF 文字)、
-0D (US-ASCII の CR 文字) 以外ならどんなオクテットも指定できる。
-.PP
-.\"O .B "mailto \- Email address"
-.B "mailto \- 電子メールアドレス"
-.PP
-.RI mailto: email-address
-.PP
-.\"O This is an email address, usually of the form
-.\"O .IR name @ hostname .
-.\"O See
-.\"O .BR mailaddr (7)
-.\"O for more information on the correct format of an email address.
-.\"O Note that any % character must be rewritten as %25.
-.\"O An example is <mailto:dwheeler@dwheeler.com>.
-これは電子メールアドレスで、通常
-.IR name @ hostname
-という形式をとる。電子メールアドレスの正しいフォーマットに関する
-より詳しい情報は
-.BR mailaddr (7)
-を見よ。 % 文字はすべて %25 と書き直さなければならないことに注意。
-例としては <mailto:dwheeler@dwheeler.com> など。
-.PP
-.\"O .B "news \- Newsgroup or News message"
-.B "news \- ニュースグループ・ニュースメッセージ"
-.PP
-.RI news: newsgroup-name
+デフォルトの gopher ポートは 70 である。 \fIgophertype\fP は 1 文字からなるフィールドで、 URL が参照している
+Gopher のリソースタイプを示す。 パス全体が空であってもよく、その場合は区切りの "/" も省略できる。 このとき gophertype
+のデフォルトは "1" になる。
+.PP
+\fIselector\fP は Gopher セレクタ文字列である。Gopher プロトコルでは、 Gopher セレクタ文字列はオクテット文字からなり、
+16進数の 09 (US\-ASCII の HT または tab)、 0A (US\-ASCII の LF 文字)、 0D (US\-ASCII の CR
+文字) 以外ならどんなオクテットも指定できる。
+.PP
+\fBmailto \- 電子メールアドレス\fP
+.PP
+mailto:\fIemail\-address\fP
+.PP
+これは電子メールアドレスで、通常 \fIname\fP@\fIhostname\fP という形式をとる。電子メールアドレスの正しいフォーマットに関する
+より詳しい情報は \fBmailaddr\fP(7)  を見よ。 % 文字はすべて %25 と書き直さなければならないことに注意。 例としては
+<mailto:dwheeler@dwheeler.com> など。
+.PP
+\fBnews \- ニュースグループ・ニュースメッセージ\fP
+.PP
+news:\fInewsgroup\-name\fP
 .br
-.RI news: message-id
-.PP
-.\"O A
-.\"O .I newsgroup-name
-.\"O is a period-delimited hierarchical name, such as
-.\"O "comp.infosystems.www.misc".
-.\"O If <newsgroup-name> is "*" (as in <news:*>), it is used to refer
-.\"O to "all available news groups".
-.\"O An example is <news:comp.lang.ada>.
-.I newsgroup-name
-はピリオドで区切られた階層的な名前である。例えば
-"comp.infosystems.www.misc" など。
-<newsgroup-name> が "*" (つまり <news:*>) の場合には、
-「参照できる全てのニュースグループ」の意味になる。
-例としては <news:comp.lang.ada> など。
-.PP
-.\"O A
-.\"O .I message-id
-.\"O corresponds to the Message-ID of
-.\"O .UR http://www.ietf.org/rfc/rfc1036.txt
-.\"O IETF RFC\ 1036,
-.\"O .UE
-.\"O without the enclosing "<"
-.\"O and ">"; it takes the form
-.\"O .IR unique @ full_domain_name .
-.\"O A message identifier may be distinguished from a news group name by the
-.\"O presence of the "@" character.
-.I message-id
-は
+news:\fImessage\-id\fP
+.PP
+\fInewsgroup\-name\fP はピリオドで区切られた階層的な名前である。例えば "comp.infosystems.www.misc" など。
+<newsgroup\-name> が "*" (つまり <news:*>) の場合には、
+「参照できる全てのニュースグループ」の意味になる。 例としては <news:comp.lang.ada> など。
+.PP
+\fImessage\-id\fP は
 .UR http://www.ietf.org/rfc/rfc1036.txt
 IETF RFC\ 1036
 .UE
-の Message-ID から、囲みの "<" と ">" を取ったものに対応する。
-Message-ID は
-.IR unique @ full_domain_name
-という形式をとる。メッセージの指定には "@" 文字が含まれるので、
+の Message\-ID から、囲みの "<" と ">" を取ったものに対応する。 Message\-ID は
+\fIunique\fP@\fIfull_domain_name\fP という形式をとる。メッセージの指定には "@" 文字が含まれるので、
 ニュースグループの名前と区別できるだろう。
 .PP
-.\"O .B "telnet \- Telnet login"
-.B "telnet \- telnet ログイン"
+\fBtelnet \- telnet ログイン\fP
 .PP
-.RI telnet:// ip_server /
+telnet://\fIip_server\fP/
 .PP
-.\"O The Telnet URL scheme is used to designate interactive text services that
-.\"O may be accessed by the Telnet protocol.
-.\"O The final "/" character may be omitted.
-.\"O The default port is 23.
-.\"O An example is <telnet://melvyl.ucop.edu/>.
-Telnet URL スキームは対話的なテキストサービスに Telnet プロトコルを
-通してアクセスするために用いられる。最後の "/" 文字は省略してよい。
-例としては <telnet://melvyl.ucop.edu/> など。
+Telnet URL スキームは対話的なテキストサービスに Telnet プロトコルを 通してアクセスするために用いられる。最後の "/"
+文字は省略してよい。 例としては <telnet://melvyl.ucop.edu/> など。
 .PP
-.\"O .B "file \- Normal file"
-.B "file \- 通常のファイル"
+\fBfile \- 通常のファイル\fP
 .PP
-.RI file:// ip_server / path_segments
+file://\fIip_server\fP/\fIpath_segments\fP
 .br
-.RI file: path_segments
-.PP
-.\"O This represents a file or directory accessible locally.
-.\"O As a special case,
-.\"O .I host
-.\"O can be the string "localhost" or the empty
-.\"O string; this is interpreted as "the machine from which the URL is
-.\"O being interpreted".
-.\"O If the path is to a directory, the viewer should display the
-.\"O directory's contents with links to each containee;
-.\"O not all viewers currently do this.
-.\"O KDE supports generated files through the URL <file:/cgi-bin>.
-.\"O If the given file isn't found, browser writers may want to try to expand
-.\"O the filename via filename globbing
-.\"O (see
-.\"O .BR glob (7)
-.\"O and
-.\"O .BR glob (3)).
-これはローカルに直接アクセスできるファイルを示す。
-特殊なケースとして、
-.I host
-には "localhost" という文字列を用いたり、空文字にしてもよい。
-これは「URI が解釈されたマシン」とみなされる。
-path がディレクトリの場合は、ビューアはディレクトリの内容を
-リンクを張ったかたちで表示するとよいだろう。
-しかし現在は、まだ全てのビューアがこの動作をするわけではない。
-KDE は生成ファイル (generated file) を URL <file:/cgi-bin>
-の形式でサポートしている。
-与えられたファイルが見付からなかった場合は、
-ファイル名をグロブによって展開すると良いかもしれない
-.RB ( glob (7)
-および
-.BR glob (3)
-を見よ)。
-.PP
-.\"O The second format (e.g., <file:/etc/passwd>)
-.\"O is a correct format for referring to
-.\"O a local file.
-.\"O However, older standards did not permit this format,
-.\"O and some programs don't recognize this as a URI.
-.\"O A more portable syntax is to use an empty string as the server name,
-.\"O for example,
-.\"O <file:///etc/passwd>; this form does the same thing
-.\"O and is easily recognized by pattern matchers and older programs as a URI.
-.\"O Note that if you really mean to say "start from the current location," don't
-.\"O specify the scheme at all; use a relative address like <../test.txt>,
-.\"O which has the side-effect of being scheme-independent.
-.\"O An example of this scheme is <file:///etc/passwd>.
+file:\fIpath_segments\fP
+.PP
+これはローカルに直接アクセスできるファイルを示す。 特殊なケースとして、 \fIhost\fP には "localhost"
+という文字列を用いたり、空文字にしてもよい。 これは「URI が解釈されたマシン」とみなされる。 path
+がディレクトリの場合は、ビューアはディレクトリの内容を リンクを張ったかたちで表示するとよいだろう。
+しかし現在は、まだ全てのビューアがこの動作をするわけではない。 KDE は生成ファイル (generated file) を URL
+<file:/cgi\-bin> の形式でサポートしている。 与えられたファイルが見付からなかった場合は、
+ファイル名をグロブによって展開すると良いかもしれない (\fBglob\fP(7)  および \fBglob\fP(3)  を見よ)。
+.PP
 二つめの書式 (例えば <file:/etc/passwd>) もローカルファイルを参照する
-正しいフォーマットである。しかし古い標準ではこの書式を許していなかったので、
-これを URI として認識しないプログラムも存在する。
-より汎用的な文法は、サーバ名に空文字を用いるもの、
-つまり <file:///etc/passwd> のようなものである。
-この形式も指す内容は同じであり、パターンマッチやより古いプログラムでも
-URI として認識されやすい。
-もし意図するところが「現在の場所からスタート」なら、
-スキームは一切用いるべきではない。
-<../test.txt> のような、スキームに依存しない相対リンクを用いること。
-このスキームの例としては <file:///etc/passwd> など。
-.PP
-.\"O .B "man \- Man page documentation"
-.B "man \- man ページ文書"
-.PP
-.RI man: command-name
+正しいフォーマットである。しかし古い標準ではこの書式を許していなかったので、 これを URI として認識しないプログラムも存在する。
+より汎用的な文法は、サーバ名に空文字を用いるもの、 つまり <file:///etc/passwd> のようなものである。
+この形式も指す内容は同じであり、パターンマッチやより古いプログラムでも URI として認識されやすい。
+もし意図するところが「現在の場所からスタート」なら、 スキームは一切用いるべきではない。 <../test.txt>
+のような、スキームに依存しない相対リンクを用いること。 このスキームの例としては <file:///etc/passwd> など。
+.PP
+\fBman \- man ページ文書\fP
+.PP
+man:\fIcommand\-name\fP
 .br
-.RI man: command-name ( section )
-.PP
-.\"O This refers to local online manual (man) reference pages.
-.\"O The command name can optionally be followed by a
-.\"O parenthesis and section number; see
-.\"O .BR man (7)
-.\"O for more information on the meaning of the section numbers.
-.\"O This URI scheme is unique to UNIX-like systems (such as Linux)
-.\"O and is not currently registered by the IETF.
-.\"O An example is <man:ls(1)>.
-これはローカルのオンラインマニュアル (man) リファレスページを参照する。
-command-name には括弧とセクション番号を追加してもよい。
-セクション番号の意味について詳しく知りたい場合は
-.BR man (7)
-をみよ。この URI スキームは UNIX 風のシステム (Linux など)
-に特有のものであり、現在はまだ IETF による登録はされていない。
-例としては <man:ls(1)> など。
+man:\fIcommand\-name\fP(\fIsection\fP)
 .PP
-.\"O .B "info \- Info page documentation"
-.B "info \- info ページ文書"
+これはローカルのオンラインマニュアル (man) リファレスページを参照する。 command\-name には括弧とセクション番号を追加してもよい。
+セクション番号の意味について詳しく知りたい場合は \fBman\fP(7)  をみよ。この URI スキームは UNIX 風のシステム (Linux など)
+に特有のものであり、現在はまだ IETF による登録はされていない。 例としては <man:ls(1)> など。
 .PP
-.RI info: virtual-filename
+\fBinfo \- info ページ文書\fP
+.PP
+info:\fIvirtual\-filename\fP
 .br
-.RI info: virtual-filename # nodename
+info:\fIvirtual\-filename\fP#\fInodename\fP
 .br
-.RI info:( virtual-filename )
+info:(\fIvirtual\-filename\fP)
 .br
-.RI info:( virtual-filename ) nodename
-.PP
-.\"O This scheme refers to online info reference pages (generated from
-.\"O texinfo files),
-.\"O a documentation format used by programs such as the GNU tools.
-.\"O This URI scheme is unique to UNIX-like systems (such as Linux)
-.\"O and is not currently registered by the IETF.
-.\"O As of this writing, GNOME and KDE differ in their URI syntax
-.\"O and do not accept the other's syntax.
-.\"O The first two formats are the GNOME format; in nodenames all spaces
-.\"O are written as underscores.
-.\"O The second two formats are the KDE format;
-.\"O spaces in nodenames must be written as spaces, even though this
-.\"O is forbidden by the URI standards.
-.\"O It's hoped that in the future most tools will understand all of these
-.\"O formats and will always accept underscores for spaces in nodenames.
-.\"O In both GNOME and KDE, if the form without the nodename is used the
-.\"O nodename is assumed to be "Top".
-.\"O Examples of the GNOME format are <info:gcc> and <info:gcc#G++_and_GCC>.
-.\"O Examples of the KDE format are <info:(gcc)> and <info:(gcc)G++ and GCC>.
-このスキームは、オンラインの info リファレンスページ
-(texinfo ファイルから生成される) を参照する。 info ページは
-GNU ツールなどのプログラムで用いられている文書フォーマットである。
-この URI スキームは UNIX 風のシステム (Linux など)
-に特有のものであり、現在はまだ IETF による登録はされていない。
-この文書の執筆時において、 GNOME と KDE はそれぞれ異なる文法の URI
-を用いており、お互い相手の文法を受け入れない。
-最初の 2 つの書式は GNOME の書式である。ノード名 (nodename)
-のスペースはすべてアンダースコアに変換される。
-3 つめと 4 つめは KDE の書式である。ノード名のスペースは
-そのままスペースで書かれる
-(URI の標準では禁止されているのだが)。
-将来は多くのツールがこれらの書式すべてを理解するようになり、
-ノード名のアンダースコア、スペースを両方とも理解できるように
-なることを期待したい。 GNOME でも KDE でも、
-ノード名が省略された場合は、ノード名として "Top" が用いられる。
-GNOME 書式の例としては <info:gcc> や <info:gcc#G++_and_GCC> など、
-KDE 書式の例としては <info:(gcc)> や <info:(gcc)G++ and GCC> など。
-.PP
-.\"O .B "whatis \- Documentation search"
-.B "whatis \- 文書検索"
-.PP
-.RI whatis: string
-.PP
-.\"O This scheme searches the database of short (one-line) descriptions of
-.\"O commands and returns a list of descriptions containing that string.
-.\"O Only complete word matches are returned.
-.\"O See
-.\"O .BR whatis (1).
-.\"O This URI scheme is unique to UNIX-like systems (such as Linux)
-.\"O and is not currently registered by the IETF.
-このスキームは、コマンドに関する短い (1 行の) 説明を集めた
-データベースを検索し、 string を含む文字列をリストして返す。
-単語が完全にマッチした結果だけが返される。
-.BR whatis (1)
-を見よ。
-この URI スキームは UNIX 風のシステム (Linux など)
+info:(\fIvirtual\-filename\fP)\fInodename\fP
+.PP
+このスキームは、オンラインの info リファレンスページ (texinfo ファイルから生成される) を参照する。 info ページは GNU
+ツールなどのプログラムで用いられている文書フォーマットである。 この URI スキームは UNIX 風のシステム (Linux など)
+に特有のものであり、現在はまだ IETF による登録はされていない。 この文書の執筆時において、 GNOME と KDE はそれぞれ異なる文法の URI
+を用いており、お互い相手の文法を受け入れない。 最初の 2 つの書式は GNOME の書式である。ノード名 (nodename)
+のスペースはすべてアンダースコアに変換される。 3 つめと 4 つめは KDE の書式である。ノード名のスペースは そのままスペースで書かれる (URI
+の標準では禁止されているのだが)。 将来は多くのツールがこれらの書式すべてを理解するようになり、
+ノード名のアンダースコア、スペースを両方とも理解できるように なることを期待したい。 GNOME でも KDE でも、
+ノード名が省略された場合は、ノード名として "Top" が用いられる。 GNOME 書式の例としては <info:gcc> や
+<info:gcc#G++_and_GCC> など、 KDE 書式の例としては <info:(gcc)> や
+<info:(gcc)G++ and GCC> など。
+.PP
+\fBwhatis \- 文書検索\fP
+.PP
+whatis:\fIstring\fP
+.PP
+このスキームは、コマンドに関する短い (1 行の) 説明を集めた データベースを検索し、 string を含む文字列をリストして返す。
+単語が完全にマッチした結果だけが返される。 \fBwhatis\fP(1)  を見よ。 この URI スキームは UNIX 風のシステム (Linux など)
 に特有のものであり、現在はまだ IETF による登録はされていない。
 .PP
-.\"O .B "ghelp \- GNOME help documentation"
-.B "ghelp \- GNOME ヘルプ文書"
+\fBghelp \- GNOME ヘルプ文書\fP
 .PP
-.RI ghelp: name-of-application
+ghelp:\fIname\-of\-application\fP
 .PP
-.\"O This loads GNOME help for the given application.
-.\"O Note that not much documentation currently exists in this format.
-与えられた application に対応する GNOME help をロードする。
-この書式を用いた文書はまだあまり多くない。
+与えられた application に対応する GNOME help をロードする。 この書式を用いた文書はまだあまり多くない。
 .PP
-.\"O .B "ldap \- Lightweight Directory Access Protocol"
-.B "ldap \- 軽量ディレクトリアクセスプロトコル"
+\fBldap \- 軽量ディレクトリアクセスプロトコル\fP
 .PP
-.RI ldap:// hostport
+ldap://\fIhostport\fP
 .br
-.RI ldap:// hostport /
+ldap://\fIhostport\fP/
 .br
-.RI ldap:// hostport / dn
+ldap://\fIhostport\fP/\fIdn\fP
 .br
-.RI ldap:// hostport / dn ? attributes
+ldap://\fIhostport\fP/\fIdn\fP?\fIattributes\fP
 .br
-.RI ldap:// hostport / dn ? attributes ? scope
+ldap://\fIhostport\fP/\fIdn\fP?\fIattributes\fP?\fIscope\fP
 .br
-.RI ldap:// hostport / dn ? attributes ? scope ? filter
+ldap://\fIhostport\fP/\fIdn\fP?\fIattributes\fP?\fIscope\fP?\fIfilter\fP
 .br
-.RI ldap:// hostport / dn ? attributes ? scope ? filter ? extensions
-.PP
-.\"O This scheme supports queries to the
-.\"O Lightweight Directory Access Protocol (LDAP), a protocol for querying
-.\"O a set of servers for hierarchically organized information
-.\"O (such as people and computing resources).
-.\"O More information on the LDAP URL scheme is available in
-.\"O .UR http://www.ietf.org/rfc/rfc2255.txt
-.\"O RFC\ 2255.
-.\"O .UE
-.\"O The components of this URL are:
-このスキームは Lightweight Directory Access Protocol (LDAP)
-へのクエリーをサポートする。 LDAP は複数のサーバに分散した、
-階層化された情報 (人々や計算資源など) に問い合わせるための
-プロトコルである。 LDAP の URL スキームに関するより詳しい情報は
+ldap://\fIhostport\fP/\fIdn\fP?\fIattributes\fP?\fIscope\fP?\fIfilter\fP?\fIextensions\fP
+.PP
+このスキームは Lightweight Directory Access Protocol (LDAP)  へのクエリーをサポートする。 LDAP
+は複数のサーバに分散した、 階層化された情報 (人々や計算資源など) に問い合わせるための プロトコルである。 LDAP の URL
+スキームに関するより詳しい情報は
 .UR http://www.ietf.org/rfc/rfc2255.txt
 RFC\ 2255
 .UE
-で見ることができる。
-この URL の各部は以下の通り:
+で見ることができる。 この URL の各部は以下の通り:
 .IP hostport 12
-.\"O the LDAP server to query, written as a hostname optionally followed by
-.\"O a colon and the port number.
-.\"O The default LDAP port is TCP port 389.
-.\"O If empty, the client determines which the LDAP server to use.
-クエリーを行う LDAP サーバ。ホスト名を書く。続けてコロンとポート番号を
-追加することもできる。 LDAP のデフォルトのポートは TCP ポート 389 である。
-省略されると、どの LDAP サーバを用いるかはクライアントが決定する。
+クエリーを行う LDAP サーバ。ホスト名を書く。続けてコロンとポート番号を 追加することもできる。 LDAP のデフォルトのポートは TCP ポート
+389 である。 省略されると、どの LDAP サーバを用いるかはクライアントが決定する。
 .IP dn
-.\"O the LDAP Distinguished Name, which identifies
-.\"O the base object of the LDAP search (see
-.\"O .UR http://www.ietf.org/rfc/rfc2253.txt
-.\"O RFC\ 2253
-.\"O .UE
-.\"O section 3).
-LDAP の Distintuished Name (識別名)。
-LDAP 検索の base オブジェクトを指定するものである (
+LDAP の Distintuished Name (識別名)。 LDAP 検索の base オブジェクトを指定するものである (
 .UR http://www.ietf.org/rfc/rfc2253.txt
 RFC\ 2253
 .UE
 の section 3 を見よ)。
 .IP attributes
-.\"O a comma-separated list of attributes to be returned;
-.\"O see RFC\ 2251 section 4.1.5.
-.\"O If omitted, all attributes should be returned.
-コンマ区切りの、返される属性 (attribute) のリスト。
-RFC\ 2251 の section 4.1.5 を見よ。省略されると全ての属性が返される。
+コンマ区切りの、返される属性 (attribute) のリスト。 RFC\ 2251 の section 4.1.5
+を見よ。省略されると全ての属性が返される。
 .IP scope
-.\"O specifies the scope of the search, which can be one of
-.\"O "base" (for a base object search), "one" (for a one-level search),
-.\"O or "sub" (for a subtree search).
-.\"O If scope is omitted, "base" is assumed.
-検索のスコープを指定する。
-"base" (base オブジェクト検索), "one" (1 レベル検索),
-"sub" (サブツリー検索) のいずれかを指定する。
-省略すると "base" が仮定される。
+検索のスコープを指定する。 "base" (base オブジェクト検索), "one" (1 レベル検索), "sub" (サブツリー検索)
+のいずれかを指定する。 省略すると "base" が仮定される。
 .IP filter
-.\"O specifies the search filter (subset of entries
-.\"O to return).
-.\"O If omitted, all entries should be returned.
-.\"O See
-.\"O .UR http://www.ietf.org/rfc/rfc2254.txt
-.\"O RFC\ 2254
-.\"O .UE
-.\"O section 4.
-検索フィルタ (返されるエントリのサブセット) を指定する。
-省略されると、全てのエントリが返される。
+検索フィルタ (返されるエントリのサブセット) を指定する。 省略されると、全てのエントリが返される。
 .UR http://www.ietf.org/rfc/rfc2254.txt
 RFC\ 2254
 .UE
 の section 4 を見よ。
 .IP extensions
-.\"O a comma-separated list of type=value
-.\"O pairs, where the =value portion may be omitted for options not
-.\"O requiring it.
-.\"O An extension prefixed with a \(aq!\(aq is critical
-.\"O (must be supported to be valid), otherwise it is noncritical (optional).
-コンマで区切られた type=value ペアのリスト。
-ここで =value の部分は、それを要求しないオプションに対しては
-省略できる。 \(aq!\(aq が前置された extension は critical
-(サポートしていなければならない) であり、
-そうでなければ critical ではない (省略できる)。
-.PP
-.\"O LDAP queries are easiest to explain by example.
-.\"O Here's a query that asks ldap.itd.umich.edu for information about
-.\"O the University of Michigan in the U.S.:
-LDAP のクエリーは、例とともに説明するのが最も簡単である。
-次の例は、 ldap.itd.umich.edu に、
-U.S. にある University of Michigan の情報を尋ねる例である。
+コンマで区切られた type=value ペアのリスト。 ここで =value の部分は、それを要求しないオプションに対しては 省略できる。
+\(aq!\(aq が前置された extension は critical (サポートしていなければならない) であり、 そうでなければ
+critical ではない (省略できる)。
+.PP
+LDAP のクエリーは、例とともに説明するのが最も簡単である。 次の例は、 ldap.itd.umich.edu に、 U.S. にある
+University of Michigan の情報を尋ねる例である。
 .PP
 .nf
 ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US
 .fi
 .PP
-.\"O To just get its postal address attribute, request:
-郵便用の住所属性だけを取得する場合は、
-次のようにリクエストする:
+郵便用の住所属性だけを取得する場合は、 次のようにリクエストする:
 .PP
 .nf
 ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US?postalAddress
 .fi
 .PP
-.\"O To ask a host.com at port 6666 for information about the person
-.\"O with common name (cn) "Babs Jensen" at University of Michigan, request:
-host.com のポート 6666 に、 University of Michigan にいる
-common name (cn) が "Babs Jenson" の人の情報を尋ねる場合は、
-次のようにリクエストする:
+host.com のポート 6666 に、 University of Michigan にいる common name (cn) が "Babs
+Jenson" の人の情報を尋ねる場合は、 次のようにリクエストする:
 .PP
 .nf
 ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)
 .fi
 .PP
-.\"O .B "wais \- Wide Area Information Servers"
-.B "wais \- 広域情報サービス"
+\fBwais \- 広域情報サービス\fP
 .PP
-.RI wais:// hostport / database
+wais://\fIhostport\fP/\fIdatabase\fP
 .br
-.RI wais:// hostport / database ? search
+wais://\fIhostport\fP/\fIdatabase\fP?\fIsearch\fP
 .br
-.RI wais:// hostport / database / wtype / wpath
-.PP
-.\"O This scheme designates a WAIS database, search, or document
-.\"O (see
-.\"O .UR http://www.ietf.org/rfc/rfc1625.txt
-.\"O IETF RFC\ 1625
-.\"O .UE
-.\"O for more information on WAIS).
-.\"O Hostport is the hostname, optionally followed by a colon and port number
-.\"O (the default port number is 210).
-このスキームは WAIS のデータベース、検索、文書を指定する
-(WAIS に関する詳しい情報は
+wais://\fIhostport\fP/\fIdatabase\fP/\fIwtype\fP/\fIwpath\fP
+.PP
+このスキームは WAIS のデータベース、検索、文書を指定する (WAIS に関する詳しい情報は
 .UR http://www.ietf.org/rfc/rfc1625.txt
 IETF RFC\ 1625
 .UE
-を見よ)。
-hostport は、ホスト名にコロンとポート番号を付加したものである
-(コロン + ポート番号は省略可。デフォルトのポート番号は 210 である)。
-.PP
-.\"O The first form designates a WAIS database for searching.
-.\"O The second form designates a particular search of the WAIS database
-.\"O .IR database .
-.\"O The third form designates a particular document within a WAIS
-.\"O database to be retrieved.
-.\"O .I wtype
-.\"O is the WAIS designation of the type of the object and
-.\"O .I wpath
-.\"O is the WAIS document-id.
-最初の書式は WAIS のデータベースに対する検索の指定である。
-二つめの書式は特定の WAIS データベース
-.I database
-に対する検索の指定である。
-三つめの書式は WAIS データベースにある特定の文書を取出す指定である。
-.I wtype
-は WAIS のオブジェクト形式指定であり、
-.I wpath
-は WAIS document-id である。
-.PP
-.\"O .B "other schemes"
-.B その他のスキーム
-.PP
-.\"O There are many other URI schemes.
-.\"O Most tools that accept URIs support a set of internal URIs
-.\"O (e.g., Mozilla has the about: scheme for internal information,
-.\"O and the GNOME help browser has the toc: scheme for various starting
-.\"O locations).
-.\"O There are many schemes that have been defined but are not as widely
-.\"O used at the current time
-.\"O (e.g., prospero).
-.\"O The nntp: scheme is deprecated in favor of the news: scheme.
-.\"O URNs are to be supported by the urn: scheme, with a hierarchical name space
-.\"O (e.g., urn:ietf:... would identify IETF documents); at this time
-.\"O URNs are not widely implemented.
-.\"O Not all tools support all schemes.
-他にも多くの URI スキームが存在する。
-URI を受付けるほとんどのツールは、内部 URI のセットをサポートする
-(例えば Mozilla は内部情報用の about: というスキームを受付けるし、
-GNOME ヘルプブラウザはいろいろな出発点用に toc: というスキームを持っている)。
-定義されたスキームはたくさんあるが、現時点で広く用いられてはいない
-(例えば prospero とか)。
-nntp: スキームは news: スキームが好んで用いられるようになったので
-使わないほうが良い。 URN は urn: スキームによって、階層的な名前空間
-(例えば urn:ietf:... は IETF 文書を示す)
-としてサポートされるべきであるが、現時点では URN はあまり用いられていない。
+を見よ)。 hostport は、ホスト名にコロンとポート番号を付加したものである (コロン + ポート番号は省略可。デフォルトのポート番号は 210
+である)。
+.PP
+最初の書式は WAIS のデータベースに対する検索の指定である。 二つめの書式は特定の WAIS データベース \fIdatabase\fP
+に対する検索の指定である。 三つめの書式は WAIS データベースにある特定の文書を取出す指定である。 \fIwtype\fP は WAIS
+のオブジェクト形式指定であり、 \fIwpath\fP は WAIS document\-id である。
+.PP
+\fBその他のスキーム\fP
+.PP
+他にも多くの URI スキームが存在する。 URI を受付けるほとんどのツールは、内部 URI のセットをサポートする (例えば Mozilla
+は内部情報用の about: というスキームを受付けるし、 GNOME ヘルプブラウザはいろいろな出発点用に toc: というスキームを持っている)。
+定義されたスキームはたくさんあるが、現時点で広く用いられてはいない (例えば prospero とか)。 nntp: スキームは news:
+スキームが好んで用いられるようになったので 使わないほうが良い。 URN は urn: スキームによって、階層的な名前空間 (例えば
+urn:ietf:... は IETF 文書を示す)  としてサポートされるべきであるが、現時点では URN はあまり用いられていない。
 全てのツールが全てのスキームをサポートしているわけではない。
-.\"O .SS Character Encoding
 .SS 文字エンコード
 .PP
-.\"O URIs use a limited number of characters so that they can be
-.\"O typed in and used in a variety of situations.
 URI では、色々な状況下で入力できるように、文字の種類を制限している。
 .PP
-.\"O The following characters are reserved, that is, they may appear in a
-.\"O URI but their use is limited to their reserved purpose
-.\"O (conflicting data must be escaped before forming the URI):
-以下の文字は予約されている。すなわち、これらの文字は
-URI に登場することがあるが、それらの利用法 (解釈のされ方) は
-予約された目的に制限されている (衝突するデータは
-URI にする前にエスケープしなければならない)。
+以下の文字は予約されている。すなわち、これらの文字は URI に登場することがあるが、それらの利用法 (解釈のされ方) は
+予約された目的に制限されている (衝突するデータは URI にする前にエスケープしなければならない)。
 .IP
    ; / ? : @ & = + $ ,
 .PP
-.\"O Unreserved characters may be included in a URI.
-.\"O Unreserved characters
-.\"O include upper and lower case English letters,
-.\"O decimal digits, and the following
-.\"O limited set of punctuation marks and symbols:
-未予約文字 (unreserved character) は URI に使ってよい。
-これには英字の大文字と小文字、10 進の数字、および
+未予約文字 (unreserved character) は URI に使ってよい。 これには英字の大文字と小文字、10 進の数字、および
 以下の句読文字・記号が含まれる
 .IP
  \- _ . ! ~ * ' ( )
 .PP
-.\"O All other characters must be escaped.
-.\"O An escaped octet is encoded as a character triplet, consisting of the
-.\"O percent character "%" followed by the two hexadecimal digits
-.\"O representing the octet code (you can use upper or lower case letters
-.\"O for the hexadecimal digits).
-.\"O For example, a blank space must be escaped
-.\"O as "%20", a tab character as "%09", and the "&" as "%26".
-.\"O Because the percent "%" character always has the reserved purpose of
-.\"O being the escape indicator, it must be escaped as "%25".
-.\"O It is common practice to escape space characters as the plus symbol (+)
-.\"O in query text; this practice isn't uniformly defined
-.\"O in the relevant RFCs (which recommend %20 instead) but any tool accepting
-.\"O URIs with query text should be prepared for them.
-.\"O A URI is always shown in its "escaped" form.
-他の文字はすべてエスケープしなければならない。
-エスケープされたオクテットは 3 文字からなる:
-先頭にパーセント文字 "%"、それに続けてオクテットコードを表す
-2 文字の 16 進数字である (16 進数の英字は大文字小文字どちらでも良い)。
-例えば空白文字は "%20" のようにエスケープしなければならず、
-タブ文字は "%09"、 "&" は "%26" となる。
-パーセント文字 "%" は常にエスケープを示す予約された目的に用いられるので、
-"%" 自身を表すには "%25" とエスケープしなければならない。
-クエリーのテキストでは、スペース文字をプラス記号 (+) でエスケープすることも
-一般に良く行われる。この慣例は関連 RFC で実際に定義されているわけではない
-(代わりに %20 を推奨している) が、クエリーテキストを受付ける
-ツールは、この書式への対応を用意しておくべきであろう。
-URI は、常に「エスケープされた」かたちで表示される。
-.PP
-.\"O Unreserved characters can be escaped without changing the semantics
-.\"O of the URI, but this should not be done unless the URI is being used
-.\"O in a context that does not allow the unescaped character to appear.
-.\"O For example, "%7e" is sometimes used instead of "~" in an HTTP URL
-.\"O path, but the two are equivalent for an HTTP URL.
-未予約文字もエスケープすることができ、これによって
-URI の意味するところが変わるわけではない。
-しかしURI にその非エスケープ文字が現れることが許されないような
-特殊な場合を除いて、これは避けるべきである。
-例えば、 HTTP URL の path において
-"%7e" が "~" の代わりに用いられることがあるが、
-この二つは HTTP URL としては等価である。
-.PP
-.\"O For URIs which must handle characters outside the US ASCII character set,
-.\"O the HTML 4.01 specification (section B.2) and
-.\"O IETF RFC\ 2718 (section 2.2.5) recommend the following approach:
-US ASCII キャラクタセット以外の文字を URI として扱う場合、
-HTML 4.1 規格 (section B.2) 及び IETF RFC\ 2718 (section 2.2.5) は
-以下の手法を用いるよう推奨している。
+他の文字はすべてエスケープしなければならない。 エスケープされたオクテットは 3 文字からなる: 先頭にパーセント文字
+"%"、それに続けてオクテットコードを表す 2 文字の 16 進数字である (16 進数の英字は大文字小文字どちらでも良い)。 例えば空白文字は
+"%20" のようにエスケープしなければならず、 タブ文字は "%09"、 "&" は "%26" となる。 パーセント文字 "%"
+は常にエスケープを示す予約された目的に用いられるので、 "%" 自身を表すには "%25" とエスケープしなければならない。
+クエリーのテキストでは、スペース文字をプラス記号 (+) でエスケープすることも 一般に良く行われる。この慣例は関連 RFC
+で実際に定義されているわけではない (代わりに %20 を推奨している) が、クエリーテキストを受付ける
+ツールは、この書式への対応を用意しておくべきであろう。 URI は、常に「エスケープされた」かたちで表示される。
+.PP
+未予約文字もエスケープすることができ、これによって URI の意味するところが変わるわけではない。 しかしURI
+にその非エスケープ文字が現れることが許されないような 特殊な場合を除いて、これは避けるべきである。 例えば、 HTTP URL の path において
+"%7e" が "~" の代わりに用いられることがあるが、 この二つは HTTP URL としては等価である。
+.PP
+US ASCII キャラクタセット以外の文字を URI として扱う場合、 HTML 4.1 規格 (section B.2) 及び IETF RFC\ 2718 (section 2.2.5) は 以下の手法を用いるよう推奨している。
 .IP 1. 4
-.\"O translate the character sequences into UTF-8 (IETF RFC\ 2279)\(emsee
-.\"O .BR utf-8 (7)\(emand
-.\"O then
-キャラクタ列を UTF-8 (IETF RFC\ 2279,
-.BR utf-8 (7)
-参照) に変換し、
+キャラクタ列を UTF\-8 (IETF RFC\ 2279, \fButf\-8\fP(7)  参照) に変換し、
 .IP 2.
-.\"O use the URI escaping mechanism, that is,
-.\"O use the %HH encoding for unsafe octets.
-URI エスケープ機構を用いる。
-つまり、安全でないオクテットを %HH でエンコードする。
-.\"O .SS Writing a URI
+URI エスケープ機構を用いる。 つまり、安全でないオクテットを %HH でエンコードする。
 .SS "URI を書くには"
-.\"O When written, URIs should be placed inside double quotes
-.\"O (e.g., "http://www.kernelnotes.org"),
-.\"O enclosed in angle brackets (e.g., <http://lwn.net>),
-.\"O or placed on a line by themselves.
-.\"O A warning for those who use double-quotes:
-.\"O .B never
-.\"O move extraneous punctuation (such as the period ending a sentence or the
-.\"O comma in a list)
-.\"O inside a URI, since this will change the value of the URI.
-.\"O Instead, use angle brackets instead, or
-.\"O switch to a quoting system that never includes extraneous characters
-.\"O inside quotation marks.
-.\"O This latter system, called the 'new' or 'logical' quoting system by
-.\"O "Hart's Rules" and the "Oxford Dictionary for Writers and Editors",
-.\"O is preferred practice in Great Britain and hackers worldwide
-.\"O (see the
-.\"O Jargon File's section on Hacker Writing Style,
-.\"O .IR http://www.fwi.uva.nl/~mes/jargon/h/HackerWritingStyle.html ,
-.\"O for more information).
-.\"O Older documents suggested inserting the prefix "URL:"
-.\"O just before the URI, but this form has never caught on.
-URI を書く時には、ダブルクォートの内部に書く
-(例: "http://www.kernelnotes.org") か、
-angle ブラケットで囲む (例: <http://lwn.net>) か、
-一行に URI だけを書くかする。
-ダブルクォートを使う人に警告:
-\fB絶対に\fP句読点 (文末のピリオドやリスト区切りのコンマ) を
-URI の内部に移動してはならない。
-代わりに angle ブラケットを使うか、
-外にある文字をクォーテーションマークの内部に
-決して含めないような引用方式に切替えること。
-後者の方式は "Hart's Rules" や
-"Oxford Dictionary for Writers and Editors" によれば
-「新しい (new) 引用方式」あるいは「論理的 (logical) な引用方式」
-と呼ばれており、 イギリス人や世界中のハッカー達はこちらの慣習を好んでいる
-(より詳しい情報は
-Hacker Writing Style の Jargon File のセクション
-.I http://www.fwi.uva.nl/~mes/jargon/h/HackerWritingStyle.html
-を見よ)。
-古い文書では、 "URL:" という文字列を URI の直前に挿入することを
-勧めているものもあるが、しかしこの形式はまったく流行しなかった。
-.PP
-.\"O The URI syntax was designed to be unambiguous.
-.\"O However, as URIs have become commonplace, traditional media
-.\"O (television, radio, newspapers, billboards, etc.) have increasingly
-.\"O used abbreviated URI references consisting of
-.\"O only the authority and path portions of the identified resource
-.\"O (e.g., <www.w3.org/Addressing>).
-.\"O Such references are primarily
-.\"O intended for human interpretation rather than machine, with the
-.\"O assumption that context-based heuristics are sufficient to complete
-.\"O the URI (e.g., hostnames beginning with "www" are likely to have
-.\"O a URI prefix of "http://" and hostnames beginning with "ftp" likely
-.\"O to have a prefix of "ftp://").
-URI の書式は曖昧さを排除するように設計されている。
-しかし URI が広まるにつれ、昔ながらのメディア (TV、ラジオ、新聞、
-看板などなど) は URI 参照を省略したかたち、すなわち
-機関部とパス部だけでリソースを指定することが多くなっている
-(例: <www.w3.org/Addressing>)。
-このような参照はマシンというよりは人間向けのもので、
-コンテキストベースの推測によって URI の補完が可能であることを
-あてにしているのである (例えば "www" ではじまるホスト名なら
-"http://" がつくだろうし、 "ftp" ではじまるホスト名なら
-"ftp://" がつくだろう)。
-.\"O Many client implementations heuristically resolve these references.
-.\"O Such heuristics may
-.\"O change over time, particularly when new schemes are introduced.
-.\"O Since an abbreviated URI has the same syntax as a relative URL path,
-.\"O abbreviated URI references cannot be used where relative URIs are
-.\"O permitted, and can only be used when there is no defined base
-.\"O (such as in dialog boxes).
-.\"O Don't use abbreviated URIs as hypertext links inside a document;
-.\"O use the standard format as described here.
-多くのクライアントの実装では、この種の参照を推測によって解決する。
-このような推測は時代とともに変わりうる。
-特に新しいスキームが導入されるとそうである。
-URI の省略形では相対 URL パスの区別が付けられないので、
-省略形 URI 参照は相対 URI の利用できるところでは使えない。
-つまり定義済みのベース (ダイアログボックスなど)
-がない場合に限って利用できる。
-.\"nakano: この文脈での dialog box とは?
-文書内部でのハイパーテキストリンクには省略形 URI を使ってはならない。
-上述の標準フォーマットを使うこと。
-.\"O .SH "CONFORMING TO"
+URI を書く時には、ダブルクォートの内部に書く (例: "http://www.kernelnotes.org") か、 angle ブラケットで囲む
+(例: <http://lwn.net>) か、 一行に URI だけを書くかする。 ダブルクォートを使う人に警告: \fB絶対に\fP句読点
+(文末のピリオドやリスト区切りのコンマ) を URI の内部に移動してはならない。 代わりに angle ブラケットを使うか、
+外にある文字をクォーテーションマークの内部に 決して含めないような引用方式に切替えること。 後者の方式は "Hart's Rules" や
+"Oxford Dictionary for Writers and Editors" によれば 「新しい (new) 引用方式」あるいは「論理的
+(logical) な引用方式」 と呼ばれており、 イギリス人や世界中のハッカー達はこちらの慣習を好んでいる (より詳しい情報は Hacker
+Writing Style の Jargon File のセクション
+\fIhttp://www.fwi.uva.nl/~mes/jargon/h/HackerWritingStyle.html\fP を見よ)。 古い文書では、
+"URL:" という文字列を URI の直前に挿入することを 勧めているものもあるが、しかしこの形式はまったく流行しなかった。
+.PP
+URI の書式は曖昧さを排除するように設計されている。 しかし URI が広まるにつれ、昔ながらのメディア (TV、ラジオ、新聞、 看板などなど) は
+URI 参照を省略したかたち、すなわち 機関部とパス部だけでリソースを指定することが多くなっている (例:
+<www.w3.org/Addressing>)。 このような参照はマシンというよりは人間向けのもので、
+コンテキストベースの推測によって URI の補完が可能であることを あてにしているのである (例えば "www" ではじまるホスト名なら
+"http://" がつくだろうし、 "ftp" ではじまるホスト名なら "ftp://" がつくだろう)。
+多くのクライアントの実装では、この種の参照を推測によって解決する。 このような推測は時代とともに変わりうる。
+特に新しいスキームが導入されるとそうである。 URI の省略形では相対 URL パスの区別が付けられないので、 省略形 URI 参照は相対 URI
+の利用できるところでは使えない。 つまり定義済みのベース (ダイアログボックスなど)  がない場合に限って利用できる。
+文書内部でのハイパーテキストリンクには省略形 URI を使ってはならない。 上述の標準フォーマットを使うこと。
 .SH 準拠
 .PP
-.I http://www.ietf.org/rfc/rfc2396.txt
-(IETF RFC\ 2396),
-.UE
-.I http://www.w3.org/TR/REC-html40
-(HTML 4.0).
-.\"O .SH NOTES
+\fIhttp://www.ietf.org/rfc/rfc2396.txt\fP (IETF RFC\ 2396),
+\fIhttp://www.w3.org/TR/REC\-html40\fP (HTML 4.0).
 .SH 注意
-.\"O Any tool accepting URIs (e.g., a web browser) on a Linux system should
-.\"O be able to handle (directly or indirectly) all of the
-.\"O schemes described here, including the man: and info: schemes.
-.\"O Handling them by invoking some other program is
-.\"O fine and in fact encouraged.
-Linux システムで URI を受付けるツール (例えば web ブラウザなど) は、
-上にあげた全てのスキームを (直接または間接に) 扱えるべきである。
-man: や info: も含めて、である。
-スキームの処理に他のプログラムを実行するのは良いことだし、
+Linux システムで URI を受付けるツール (例えば web ブラウザなど) は、 上にあげた全てのスキームを (直接または間接に)
+扱えるべきである。 man: や info: も含めて、である。 スキームの処理に他のプログラムを実行するのは良いことだし、
 実はすすんでそうすべきである。
 .PP
-.\"O Technically the fragment isn't part of the URI.
 技術的には、フラグメントは URI の一部ではない。
 .PP
-.\"O For information on how to embed URIs (including URLs) in a data format,
-.\"O see documentation on that format.
-.\"O HTML uses the format <A HREF="\fIuri\fP">
-.\"O .I text
-.\"O </A>.
-.\"O Texinfo files use the format @uref{\fIuri\fP}.
-.\"O Man and mdoc have the recently added UR macro, or just include the
-.\"O URI in the text (viewers should be able to detect :// as part of a URI).
-URI (URL も含む) をデータフォーマットに埋めこむ方法に関する情報は、
-そのフォーマットのドキュメントを見よ。 HTML は
-<A HREF="\fIuri\fP">\fItext\fP</A>
-を用いる。 texinfo は @uref{\fIuri\fP} という書式を用いる。
-man と mdoc は、最近追加された UR マクロを使う。
-あるいは URI をそのままテキストに埋めこむ
-(ビューアが :// を URI の一部と解釈できなければならない)。
-.PP
-.\"O The GNOME and KDE desktop environments currently vary in the URIs
-.\"O they accept, in particular in their respective help browsers.
-.\"O To list man pages, GNOME uses <toc:man> while KDE uses <man:(index)>, and
-.\"O to list info pages, GNOME uses <toc:info> while KDE uses <info:(dir)>
-.\"O (the author of this man page prefers the KDE approach here, though a more
-.\"O regular format would be even better).
-.\"O In general, KDE uses <file:/cgi-bin/> as a prefix to a set of generated
-.\"O files.
-デスクトップ環境である GNOME と KDE は、
-それぞれ受付ける URI が (特にそれぞれのヘルプブラウザにおいて)
-異なっている。
-man ページをリストするには、
-GNOME では <toc:man> を用い、 KDE では <man:(index)> を用いる。
-また info ページをリストするには、
-GNOME では <toc:info> を用い、 KDE では <info:(dir)> を用いる
-(本 man ページの著者は KDE のアプローチのほうが好みである。
-しかしより標準的な書式の方が更に良いが)。
-一般に KDE は生成ファイル (generated file) のプレフィックスとして
-<file:/cgi-bin/> を用いる。
-.\"nakano: 意味ワカラン... KDE に詳しい人〜
-.\"O KDE prefers documentation in HTML, accessed via the
-.\"O <file:/cgi-bin/helpindex>.
-.\"O GNOME prefers the ghelp scheme to store and find documentation.
-.\"O Neither browser handles file: references to directories at the time
-.\"O of this writing, making it difficult to refer to an entire directory with
-.\"O a browsable URI.
-KDE は HTML の文書を
-<file:/cgi-bin/helpindex> 経由でアクセスするのが好みなようである。
-GNOME は文書の保管・検索に ghelp スキームを用いる方法を取っているようだ。
-どちらのブラウザも、現時点では file: によるディレクトリ参照を扱えない。
-したがってディレクトリ全体をブラウズ可能な URI で参照することが難しい。
-.\"O As noted above, these environments differ in how they handle the
-.\"O info: scheme, probably the most important variation.
-.\"O It is expected that GNOME and KDE
-.\"O will converge to common URI formats, and a future
-.\"O version of this man page will describe the converged result.
-.\"O Efforts to aid this convergence are encouraged.
-先に述べたように、これら二つの環境では info: スキームの
-扱いが異なっている (おそらく最も重要な差異であろう)。
-GNOME と KDE が共通 URI フォーマットに収斂することが望ましい。
-この man ページが、将来はその収斂した結果を記述できることを望む。
-この作業への助力を喚起したい。
-.\"O .SS Security
+URI (URL も含む) をデータフォーマットに埋めこむ方法に関する情報は、 そのフォーマットのドキュメントを見よ。 HTML は <A
+HREF="\fIuri\fP">\fItext\fP</A> を用いる。 texinfo は @uref{\fIuri\fP}
+という書式を用いる。 man と mdoc は、最近追加された UR マクロを使う。 あるいは URI をそのままテキストに埋めこむ (ビューアが
+:// を URI の一部と解釈できなければならない)。
+.PP
+デスクトップ環境である GNOME と KDE は、 それぞれ受付ける URI が (特にそれぞれのヘルプブラウザにおいて)  異なっている。 man
+ページをリストするには、 GNOME では <toc:man> を用い、 KDE では <man:(index)>
+を用いる。 また info ページをリストするには、 GNOME では <toc:info> を用い、 KDE では
+<info:(dir)> を用いる (本 man ページの著者は KDE のアプローチのほうが好みである。
+しかしより標準的な書式の方が更に良いが)。 一般に KDE は生成ファイル (generated file) のプレフィックスとして
+<file:/cgi\-bin/> を用いる。 KDE は HTML の文書を
+<file:/cgi\-bin/helpindex> 経由でアクセスするのが好みなようである。 GNOME は文書の保管・検索に
+ghelp スキームを用いる方法を取っているようだ。 どちらのブラウザも、現時点では file: によるディレクトリ参照を扱えない。
+したがってディレクトリ全体をブラウズ可能な URI で参照することが難しい。 先に述べたように、これら二つの環境では info: スキームの
+扱いが異なっている (おそらく最も重要な差異であろう)。 GNOME と KDE が共通 URI フォーマットに収斂することが望ましい。 この man
+ページが、将来はその収斂した結果を記述できることを望む。 この作業への助力を喚起したい。
 .SS セキュリティ
 .PP
-.\"O A URI does not in itself pose a security threat.
-.\"O There is no general guarantee that a URL, which at one time
-.\"O located a given resource, will continue to do so.
-.\"O Nor is there any
-.\"O guarantee that a URL will not locate a different resource at some
-.\"O later point in time; such a guarantee can only be
-.\"O obtained from the person(s) controlling that namespace and the
-.\"O resource in question.
-URI そのものはセキュリティの脅威を引き起こすものではない。
-ある時点ではリソースの場所を与えていた URL が、
-ずっとそうでありつづけるという保証は一般にはない。
-またある URL が、将来には別のリソースを示さないとも限らない。
-このような保証は、その名前空間とリソースとを管理している個人に
-帰するものに過ぎない。
-.PP
-.\"O It is sometimes possible to construct a URL such that an attempt to
-.\"O perform a seemingly harmless operation, such as the
-.\"O retrieval of an entity associated with the resource, will in fact
-.\"O cause a possibly damaging remote operation to occur.
-.\"O The unsafe URL
-.\"O is typically constructed by specifying a port number other than that
-.\"O reserved for the network protocol in question.
-.\"O The client unwittingly contacts a site that is in fact
-.\"O running a different protocol.
-.\"O The content of the URL contains instructions that, when
-.\"O interpreted according to this other protocol, cause an unexpected
-.\"O operation.
-.\"O An example has been the use of a gopher URL to cause an
-.\"O unintended or impersonating message to be sent via a SMTP server.
-無害に見える操作 (リソースに関連づけられたエンティティの取得など)
-によって、実際にはリモートにダメージを与える動作を引き起こすような
-URL を記述することも場合によっては可能である。
-危険な URL の典型的なものは、そのネットワークプロトコルに
-予約されているポート番号とは異なるポートを指定しているものである。
-URL の内容には命令が含まれていて、
-そのプロトコルにしたがって解釈されたとき、
-予期されない動作を引起こすのである。
-例をあげると、 gopher の URL によって、意図しないメッセージや
-なりすましメッセージなどが SMTP サーバ経由で送信されるようなことがあった。
-.PP
-.\"O Caution should be used when using any URL that specifies a port
-.\"O number other than the default for the protocol, especially when it is
-.\"O a number within the reserved space.
-そのプロトコルのデフォルト以外のポート番号を指定している
-URL を用いるときには注意すべきである。
-特にその番号が予約空間の内部にある場合には。
-.PP
-.\"O Care should be taken when a URI contains escaped delimiters for a
-.\"O given protocol (for example, CR and LF characters for telnet
-.\"O protocols) that these are not unescaped before transmission.
-.\"O This might violate the protocol, but avoids the potential for such
-.\"O characters to be used to simulate an extra operation or parameter in
-.\"O that protocol, which might lead to an unexpected and possibly harmful
-.\"O remote operation to be performed.
-URI に、そのプロトコルに対するデリミタがエスケープされたかたちで入っている
-場合も注意が必要である
-(例えば telnet プロトコルに対する CR 文字や LF 文字など)。
-なぜならこれらは転送前にエスケープが外されないからである。
-これはプロトコルに反しており、予期しない、おそらくは害になるような
-リモート動作を引起こす結果となりかねない。
-.PP
-.\"O It is clearly unwise to use a URI that contains a password which is
-.\"O intended to be secret.
-.\"O In particular, the use of a password within
-.\"O the "userinfo" component of a URI is strongly recommended against except
-.\"O in those rare cases where the "password" parameter is intended to be public.
-秘密にしておくべきパスワードを含んだ URI を使うのが
-賢くないのは明らかである。特に、パスワードを URI の
-"userinfo" の部分に使うのは絶対に避けるべきである。
-ただしその "password" のパラメータを意図的に公開したい場合は別であるが。
-.\"O .SH BUGS
+URI そのものはセキュリティの脅威を引き起こすものではない。 ある時点ではリソースの場所を与えていた URL が、
+ずっとそうでありつづけるという保証は一般にはない。 またある URL が、将来には別のリソースを示さないとも限らない。
+このような保証は、その名前空間とリソースとを管理している個人に 帰するものに過ぎない。
+.PP
+無害に見える操作 (リソースに関連づけられたエンティティの取得など)  によって、実際にはリモートにダメージを与える動作を引き起こすような URL
+を記述することも場合によっては可能である。 危険な URL の典型的なものは、そのネットワークプロトコルに
+予約されているポート番号とは異なるポートを指定しているものである。 URL の内容には命令が含まれていて、 そのプロトコルにしたがって解釈されたとき、
+予期されない動作を引起こすのである。 例をあげると、 gopher の URL によって、意図しないメッセージや なりすましメッセージなどが SMTP
+サーバ経由で送信されるようなことがあった。
+.PP
+そのプロトコルのデフォルト以外のポート番号を指定している URL を用いるときには注意すべきである。 特にその番号が予約空間の内部にある場合には。
+.PP
+URI に、そのプロトコルに対するデリミタがエスケープされたかたちで入っている 場合も注意が必要である (例えば telnet プロトコルに対する CR
+文字や LF 文字など)。 なぜならこれらは転送前にエスケープが外されないからである。
+これはプロトコルに反しており、予期しない、おそらくは害になるような リモート動作を引起こす結果となりかねない。
+.PP
+秘密にしておくべきパスワードを含んだ URI を使うのが 賢くないのは明らかである。特に、パスワードを URI の "userinfo"
+の部分に使うのは絶対に避けるべきである。 ただしその "password" のパラメータを意図的に公開したい場合は別であるが。
 .SH バグ
 .PP
-.\"O Documentation may be placed in a variety of locations, so there
-.\"O currently isn't a good URI scheme for general online documentation
-.\"O in arbitrary formats.
-.\"O References of the form
-.\"O <file:///usr/doc/ZZZ> don't work because different distributions and
-.\"O local installation requirements may place the files in different
-.\"O directories
-.\"O (it may be in /usr/doc, or /usr/local/doc, or /usr/share,
-.\"O or somewhere else).
-文書は様々な場所に置かれうる。したがって現時点では、
-任意のフォーマットで書かれた一般のオンライン文書に対する良い URI スキームが
-存在しない。
+文書は様々な場所に置かれうる。したがって現時点では、 任意のフォーマットで書かれた一般のオンライン文書に対する良い URI スキームが 存在しない。
 <file:///usr/doc/ZZZ> 形式の参照は使えない。なぜなら
-ディストリビューションやローカルへのインストールの際の条件によって、
-ファイルは異なるディレクトリに置かれることがあるからである
-(/usr/doc か /usr/local/doc か /usr/share かその他の場所か、などなど)。
-.\"O Also, the directory ZZZ usually changes when a version changes
-.\"O (though filename globbing could partially overcome this).
-.\"O Finally, using the file: scheme doesn't easily support people
-.\"O who dynamically load documentation from the Internet (instead of
-.\"O loading the files onto a local file system).
-また、ディレクトリ ZZZ は通常バージョンが変わると異なったものになる
-(ファイル名のグロブによってある程度克服できるだろうが)。
-最後にもう一つ、文書をインターネットから (ローカルのファイルシステムに
-ファイルをロードするのではなく) 動的にロードする人々は、
-なかなか file: スキームを使ってくれない。
-.\"O A future URI scheme may be added (e.g., "userdoc:") to permit
-.\"O programs to include cross-references to more detailed documentation
-.\"O without having to know the exact location of that documentation.
-.\"O Alternatively, a future version of the file-system specification may
-.\"O specify file locations sufficiently so that the file: scheme will
-.\"O be able to locate documentation.
-将来には新たな URI スキーム (例えば "userdoc:" のような) が追加され、
-より詳しい文書へのクロスリファレンスが、
-その文書の正確な場所をプログラムが知らなくても可能になるかもしれない。
-あるいは、ファイルシステム規格の将来の版で
-ファイルの場所の指定をより厳密にして、
-file: スキームによる文書の位置指定が可能になるかもしれない。
-.PP
-.\"O Many programs and file formats don't include a way to incorporate
-.\"O or implement links using URIs.
-プログラムやファイルフォーマットの多くでは、
-URI を使ったリンクを取り込んだり実装したりする方法がない。
-.PP
-.\"O Many programs can't handle all of these different URI formats; there
-.\"O should be a standard mechanism to load an arbitrary URI that automatically
-.\"O detects the users' environment (e.g., text or graphics,
-.\"O desktop environment, local user preferences, and currently executing
-.\"O tools) and invokes the right tool for any URI.
-プログラムの多くは、これらの URI フォーマットをすべては扱えない。
-ユーザの環境 (テキストかグラフィックか、
-デスクトップ環境、ローカルユーザの好み、
-現在実行されているツール) などを自動的に検知して、
-任意の URI をロードし、その URI に適したツールを起動するような
-標準的な仕組みがあるといいのだろうが。
-.\"O .\" .SH AUTHOR
-.\" .SH 著者
-.\"O .\" David A. Wheeler (dwheeler@dwheeler.com) wrote this man page.
-.\" この man ページは David A. Wheeler (dwheeler@ida.dwheeler.com) が書いた。
-.\"O .SH "SEE ALSO"
+ディストリビューションやローカルへのインストールの際の条件によって、 ファイルは異なるディレクトリに置かれることがあるからである (/usr/doc か
+/usr/local/doc か /usr/share かその他の場所か、などなど)。 また、ディレクトリ ZZZ
+は通常バージョンが変わると異なったものになる (ファイル名のグロブによってある程度克服できるだろうが)。 最後にもう一つ、文書をインターネットから
+(ローカルのファイルシステムに ファイルをロードするのではなく) 動的にロードする人々は、 なかなか file: スキームを使ってくれない。
+将来には新たな URI スキーム (例えば "userdoc:" のような) が追加され、 より詳しい文書へのクロスリファレンスが、
+その文書の正確な場所をプログラムが知らなくても可能になるかもしれない。 あるいは、ファイルシステム規格の将来の版で
+ファイルの場所の指定をより厳密にして、 file: スキームによる文書の位置指定が可能になるかもしれない。
+.PP
+プログラムやファイルフォーマットの多くでは、 URI を使ったリンクを取り込んだり実装したりする方法がない。
+.PP
+.\" .SH AUTHOR
+.\" David A. Wheeler (dwheeler@dwheeler.com) wrote this man page.
+プログラムの多くは、これらの URI フォーマットをすべては扱えない。 ユーザの環境 (テキストかグラフィックか、
+デスクトップ環境、ローカルユーザの好み、 現在実行されているツール) などを自動的に検知して、 任意の URI をロードし、その URI
+に適したツールを起動するような 標準的な仕組みがあるといいのだろうが。
 .SH 関連項目
-.BR lynx (1),
-.BR man2html (1),
-.BR mailaddr (7),
-.BR utf-8 (7),
+\fBlynx\fP(1), \fBman2html\fP(1), \fBmailaddr\fP(7), \fButf\-8\fP(7),
 .UR http://www.ietf.org/rfc/rfc2255.txt
 IETF RFC\ 2255
 .UE
index 173621c..c647a5a 100644 (file)
@@ -4,82 +4,34 @@
 .\" and in case of nontrivial modification author and date
 .\" of the modification is added to the header.
 .\" $Id: x25.7,v 1.4 1999/05/18 10:35:12 freitag Exp $
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
-.\" Translated Mon 6 Dec 1999 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH X25 7 2008-08-08 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O x25, AF_X25 \- ITU-T X.25 / ISO-8208 protocol interface.
+.\"*******************************************************************
+.TH X25 7 2008\-08\-08 Linux "Linux Programmer's Manual"
 .SH 名前
-x25, AF_X25 \- ITU-T X.25 / ISO-8208 プロトコルインターフェース
-.\"O .SH SYNOPSIS
+x25, AF_X25 \- ITU\-T X.25 / ISO\-8208 プロトコルインターフェース
 .SH 書式
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .br
-.B #include <linux/x25.h>
+\fB#include <linux/x25.h>\fP
 .sp
-.B x25_socket = socket(AF_X25, SOCK_SEQPACKET, 0);
-.\"O .SH DESCRIPTION
+\fBx25_socket = socket(AF_X25, SOCK_SEQPACKET, 0);\fP
 .SH 説明
-.\"O X25 sockets provide an interface to the X.25 packet layer protocol.
-.\"O This allows applications to
-.\"O communicate over a public X.25 data network as standardized by
-.\"O International Telecommunication Union's recommendation X.25
-.\"O (X.25 DTE-DCE mode).
-.\"O X25 sockets can also be used for communication
-.\"O without an intermediate X.25 network (X.25 DTE-DTE mode) as described
-.\"O in ISO-8208.
-X25 ソケットは X.25 パケット層プロトコルに対するインターフェースを提供する。
-これにより、アプリケーションはパブリックな X.25 データネットワークで
-通信することができるようになる。 X.25 は
-International Telecommunication Union's recommendation X.25
-(X.25 DTE-DCE mode) で標準化されている。
-X25 ソケットは、中間層のない X.25 ネットワーク (X.25 DTE-DTE mode)
-での通信にも用いることができる。
-DTE-DTE モードは ISO-8208 に記述されている。
+X25 ソケットは X.25 パケット層プロトコルに対するインターフェースを提供する。 これにより、アプリケーションはパブリックな X.25
+データネットワークで 通信することができるようになる。 X.25 は International Telecommunication Union's
+recommendation X.25 (X.25 DTE\-DCE mode) で標準化されている。 X25 ソケットは、中間層のない X.25
+ネットワーク (X.25 DTE\-DTE mode)  での通信にも用いることができる。 DTE\-DTE モードは ISO\-8208 に記述されている。
 .PP
-.\"O Message boundaries are preserved \(em a
-.\"O .BR read (2)
-.\"O from a socket will
-.\"O retrieve the same chunk of data as output with the corresponding
-.\"O .BR write (2)
-.\"O to the peer socket.
-.\"O When necessary, the kernel takes care
-.\"O of segmenting and reassembling long messages by means of
-.\"O the X.25 M-bit.
-.\"O There is no hard-coded upper limit for the
-.\"O message size.
-.\"O However, reassembling of a long message might fail if
-.\"O there is a temporary lack of system resources or when other constraints
-.\"O (such as socket memory or buffer size limits) become effective.
-.\"O If that
-.\"O occurs, the X.25 connection will be reset.
-メッセージ境界は保存される。ソケットからの
-.BR read (2)
-は、反対側のソケットからの対応する
-.BR write (2)
-と同じ大きさのデータを受け取り、出力する。
-必要がある場合は、カーネルが長いメッセージの
-分割 (segmenting) と再構成 (reassembling) を行う。
-これには X.25 の M ビットが用いられる。
-メッセージサイズには、ハードコーディングされた上限はない。
-しかし、一時的にシステムリソースが足りなかったり、
-他の制約 (ソケットメモリバッファのサイズ制限など) が
-効いてしまうと、長いメッセージの再構成には失敗するかもしれない。
-この場合、その X.25 接続はリセットされることになる。
-.\"O .SS Socket Addresses
+メッセージ境界は保存される。ソケットからの \fBread\fP(2)  は、反対側のソケットからの対応する \fBwrite\fP(2)
+と同じ大きさのデータを受け取り、出力する。 必要がある場合は、カーネルが長いメッセージの 分割 (segmenting) と再構成
+(reassembling) を行う。 これには X.25 の M ビットが用いられる。 メッセージサイズには、ハードコーディングされた上限はない。
+しかし、一時的にシステムリソースが足りなかったり、 他の制約 (ソケットメモリバッファのサイズ制限など) が
+効いてしまうと、長いメッセージの再構成には失敗するかもしれない。 この場合、その X.25 接続はリセットされることになる。
 .SS ソケットアドレス
-.\"O The
-.\"O .B AF_X25
-.\"O socket address family uses the
-.\"O .I struct sockaddr_x25
-.\"O for representing network addresses as defined in ITU-T
-.\"O recommendation X.121.
-.B AF_X25
-ソケットアドレスファミリーは、ネットワークアドレスを表すために
-.I struct sockaddr_x25
-を用いる。これは ITU-T recommendation X.121 で定義されている。
+\fBAF_X25\fP ソケットアドレスファミリーは、ネットワークアドレスを表すために \fIstruct sockaddr_x25\fP を用いる。これは
+ITU\-T recommendation X.121 で定義されている。
 .PP
 .in +4n
 .nf
@@ -90,117 +42,36 @@ struct sockaddr_x25 {
 .fi
 .in
 .PP
-.\"O .I sx25_addr
-.\"O contains a char array
-.\"O .I x25_addr[]
-.\"O to be interpreted as a null-terminated string.
-.\"O .I sx25_addr.x25_addr[]
-.\"O consists of up to 15 (not counting the terminating 0) ASCII
-.\"O characters forming the X.121 address.
-.\"O Only the decimal digit characters from \(aq0\(aq to \(aq9\(aq are allowed.
-.I sx25_addr
-には char 配列
-.I x25_addr[]
-を含まれる。これは 0 で終端する文字列として解釈される。
-.I sx25_addr.x25_addr[]
-は 15 個までの ASCII 文字を含むことができ (終端の 0 は含まない)、
-これが X.121 アドレスをなす。
-10 進の数文字、\(aq0\(aq から \(aq9\(aq までだけが許される。
-.\"O .SS Socket Options
+\fIsx25_addr\fP には char 配列 \fIx25_addr[]\fP を含まれる。これは 0 で終端する文字列として解釈される。
+\fIsx25_addr.x25_addr[]\fP は 15 個までの ASCII 文字を含むことができ (終端の 0 は含まない)、 これが X.121
+アドレスをなす。 10 進の数文字、\(aq0\(aq から \(aq9\(aq までだけが許される。
 .SS ソケットオプション
-.\"O The following X.25-specific socket options can be set by using
-.\"O .BR setsockopt (2)
-.\"O and read with
-.\"O .BR getsockopt (2)
-.\"O with the
-.\"O .I level
-.\"O argument set to
-.\"O .BR SOL_X25 .
-以下の X.25 特有のソケットオプションは、
-.BR setsockopt (2)
-で設定でき、
-.BR getsockopt (2)
-で取得できる。このとき
-.I level
-引き数には
-.B SOL_X25
-を指定する。
-.TP
-.B X25_QBITINCL
-.\"O Controls whether the X.25 Q-bit (Qualified Data Bit) is accessible by the
-.\"O user.
-.\"O It expects an integer argument.
-.\"O If set to 0 (default),
-.\"O the Q-bit is never set for outgoing packets and the Q-bit of incoming
-.\"O packets is ignored.
-.\"O If set to 1, an additional first byte is prepended
-.\"O to each message read from or written to the socket.
-.\"O For data read from
-.\"O the socket, a 0 first byte indicates that the Q-bits of the corresponding
-.\"O incoming data packets were not set.
-.\"O A first byte with value 1 indicates
-.\"O that the Q-bit of the corresponding incoming data packets was set.
-.\"O If the first byte of the data written to the socket is 1 the Q-bit of the
-.\"O corresponding outgoing data packets will be set.
-.\"O If the first byte is 0
-.\"O the Q-bit will not be set.
-X.25 の Q ビット (Qualified データビット) にユーザーがアクセス
-できるかどうかをコントロールする。整数の引数を取る。
-0 にセットすると、 Q ビットは発信パケットには決してセットされず、
-受信パケットでは無視される (デフォルト)。
-1 にセットすると、ソケットから読む、あるいはソケットに送る
-メッセージそれぞれに先頭バイトが前置される。
-ソケットから読んだデータでは、先頭バイトが 0 だと、
-この到着データパケットに対応する Q ビットはセットされていなかったことになる。
-先頭バイトが 1 だと、到着データパケットの
-Q ビットがセットされていたことになる。
-ソケットに書き込むデータの先頭バイトが 1 だと、
-その発信パケットの Q ビットをセットする。
-0 だと、 Q ビットをセットしない。
-.\"O .SH VERSIONS
+以下の X.25 特有のソケットオプションは、 \fBsetsockopt\fP(2)  で設定でき、 \fBgetsockopt\fP(2)
+で取得できる。このとき \fIlevel\fP 引き数には \fBSOL_X25\fP を指定する。
+.TP 
+\fBX25_QBITINCL\fP
+X.25 の Q ビット (Qualified データビット) にユーザーがアクセス できるかどうかをコントロールする。整数の引数を取る。 0
+にセットすると、 Q ビットは発信パケットには決してセットされず、 受信パケットでは無視される (デフォルト)。 1
+にセットすると、ソケットから読む、あるいはソケットに送る メッセージそれぞれに先頭バイトが前置される。 ソケットから読んだデータでは、先頭バイトが 0
+だと、 この到着データパケットに対応する Q ビットはセットされていなかったことになる。 先頭バイトが 1 だと、到着データパケットの Q
+ビットがセットされていたことになる。 ソケットに書き込むデータの先頭バイトが 1 だと、 その発信パケットの Q ビットをセットする。 0 だと、 Q
+ビットをセットしない。
 .SH バージョン
-.\"O The AF_X25 protocol family is a new feature of Linux 2.2.
 AF_X25 プロトコルファミリは Linux 2.2 の新機能である。
-.\"O .SH BUGS
 .SH バグ
-.\"O Plenty, as the X.25 PLP implementation is
-.\"O .BR CONFIG_EXPERIMENTAL .
-X.25 PLP 実装は
-.B CONFIG_EXPERIMENTAL
-なので、たくさんあるだろう。
+X.25 PLP 実装は \fBCONFIG_EXPERIMENTAL\fP なので、たくさんあるだろう。
 .PP
-.\"O This man page is incomplete.
 この man ページは完成していない。
 .PP
-.\"O There is no dedicated application programmer's header file yet;
-.\"O you need to include the kernel header file
-.\"O .IR <linux/x25.h> .
-.\"O .B CONFIG_EXPERIMENTAL
-.\"O might also imply that future versions of the
-.\"O interface are not binary compatible.
-まだアプリケーションプログラマー用のヘッダファイルがない。
-カーネルのヘッダファイル
-.I <linux/x25.h>
-をインクルードしなければならない。
-.B CONFIG_EXPERIMENTAL
-なので、将来のバージョンのインターフェースでは
+まだアプリケーションプログラマー用のヘッダファイルがない。 カーネルのヘッダファイル \fI<linux/x25.h>\fP
+をインクルードしなければならない。 \fBCONFIG_EXPERIMENTAL\fP なので、将来のバージョンのインターフェースでは
 バイナリ互換性が失われるかもしれない。
 .PP
-.\"O X.25 N-Reset events are not propagated to the user process yet.
-.\"O Thus,
-.\"O if a reset occurred, data might be lost without notice.
-X.25 N-Reset イベントは、まだユーザープロセスに伝播しない。
-したがってリセットが起こると、データは通知無しに失われる。
-.\"O .SH "SEE ALSO"
+X.25 N\-Reset イベントは、まだユーザープロセスに伝播しない。 したがってリセットが起こると、データは通知無しに失われる。
 .SH 関連項目
-.BR socket (2),
-.BR socket (7)
+\fBsocket\fP(2), \fBsocket\fP(7)
 .PP
-Jonathan Simon Naylor:
-.\"O \(lqThe Re-Analysis and Re-Implementation of X.25.\(rq
-\(lqX.25 の再分析と再実装\(rq
-.\"O The URL is
+Jonathan Simon Naylor: \(lqX.25 の再分析と再実装\(rq
 .RS
-URL は
-.I ftp://ftp.pspt.fi/pub/ham/linux/ax25/x25doc.tgz
+URL は \fIftp://ftp.pspt.fi/pub/ham/linux/ax25/x25doc.tgz\fP
 .RE
diff --git a/draft/man8/ld.so.8 b/draft/man8/ld.so.8
new file mode 100644 (file)
index 0000000..da529f2
--- /dev/null
@@ -0,0 +1,268 @@
+.\" This is in the public domain
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH LD.SO 8 2012\-04\-17 GNU "Linux Programmer's Manual"
+.SH 名前
+ld.so, ld\-linux.so* \- 動的なリンカ/ローダ
+.SH 書式
+動的リンカは、動的にリンクされたプログラムやライブラリの実行によって 間接的に実行することができる (ELF
+の場合、動的リンカにコマンドラインオプションを渡すことはできず、 プログラムの \fB.interp\fP セクションに入っている動的リンカが実行される)。
+また以下のように直接実行することもできる
+.P
+\fI/lib/ld\-linux.so.*\fP [OPTIONS] [PROGRAM [ARGUMENTS]]
+.SH 説明
+プログラム \fBld.so\fP と \fBld\-linux.so*\fP はプログラムに必要な共有ライブラリを見つけてロードし、
+プログラムの実行を準備してから起動させる。
+.LP
+Linux のバイナリは、コンパイルの時に \fBld\fP(1)  に対して \fB\-static\fP オプションが指定されていない限り、動的リンク
+(実行時リンク) が必要となる。
+.LP
+プログラム \fBld.so\fP は a.out バイナリを扱う。 これはずっと昔に使われていたフォーマットである。 \fBld\-linux.so*\fP
+(libc5 では \fI/lib/ld\-linux.so.1\fP, glibc2 では \fI/lib/ld\-linux.so.2\fP)  は ELF
+バイナリを扱う。 このフォーマットは多くの人が最近何年も使っている。 それ以外の点では両方とも同じように動作し、 同じサポートファイルとプログラム
+\fBldd\fP(1), \fBldconfig\fP(8), \fI/etc/ld.so.conf\fP を使用する。
+.LP
+プログラムで必要とされる共有ライブラリは、 以下の順序で検索される。
+.IP o 3
+(ELF のみ)  バイナリの動的セクション属性 DT_RPATH が存在し、 DT_RUNPATH 属性が存在しない場合は、 DT_RPATH
+で指定されたディレクトリを使用する。 DT_RPATH の使用は推奨されない。
+.IP o
+環境変数 \fBLD_LIBRARY_PATH\fP を用いる。 ただし実行ファイルが set\-user\-ID/set\-group\-ID バイナリの場合、
+これは無視される。
+.IP o
+(ELF のみ)  バイナリの動的セクション属性 DT_RUNPATH が存在すれば、 DT_RUNPATH で指定されたディレクトリを使用する。
+.IP o
+キャッシュファイル \fI/etc/ld.so.cache\fP を探す。
+このファイルは、 (ld.so.conf で追加指定されたものも含めた) ライブラリ検索パスから
+見つかったライブラリファイルの情報を集めたものである。
+ただし、バイナリがリンカオプション \fB\-z nodeflib\fP でリンクされている場合は、
+デフォルトのライブラリパスにある ライブラリはスキップされる。
+ハードウェア機能ディレクトリ (下記参照) にインストールされたライブラリは、
+他のライブラリよりも優先される。
+.IP o
+デフォルトパスである \fI/lib\fP、 次いで \fI/usr/lib\fP を用いる。 バイナリがリンカオプション \fB\-z nodeflib\fP
+でリンクされている場合、このステップはスキップされる。
+.SS "$ORIGIN と rpath"
+.PP
+.\" ld.so also understands $LIB, with the same meaning as $ORIGIN/lib,
+.\" it appears.
+.\"
+.\" There is also $PLATFORM.  This is a kind of wildcard
+.\" of directories related at AT_HWCAP.  To get an idea of the
+.\" places that $PLATFORM would match, look at the output of the
+.\" following:
+.\"
+.\" mkdir /tmp/d
+.\" LD_LIBRARY_PATH=/tmp/d strace -e open /bin/date 2>&1 | grep /tmp/d
+.\"
+.\" ld.so lets names be abbreviated, so $O will work for $ORIGIN;
+.\" Don't do this!!
+\fBld.so\fP では、rpath 指定 (DT_RPATH や DT_RUNPATH) 中に \fI$ORIGIN\fP という文字列
+(\fI${ORIGIN}\fP も等価) を使うことができる。 \fI$ORIGIN\fP はアプリケーションの実行ファイルが入っているディレクトリを表す。
+これを使って \fIsomedir/app\fP に置かれたアプリケーションを \fIgcc \-Wl,\-rpath,'$ORIGIN/../lib'\fP
+でコンパイルすると、 \fIsomedir\fP がディレクトリ階層のどこにあっても、アプリケーションは \fIsomedir/lib\fP
+にある対応する共有ライブラリを見つけることができる。 この機能を使うと、 特別なディレクトリではなく任意のディレクトリにインストールしても
+"ややこしい設定なしで" 独自の共有ライブラリを使えるアプリケーションを作成することができる。
+.SH オプション
+.TP 
+\fB\-\-list\fP
+全ての依存関係とその解決法をリストする。
+.TP 
+\fB\-\-verify\fP
+プログラムが動的にリンクされているかと、 動的リンカがそのプログラムを扱えるかを検証する。
+.TP 
+\fB\-\-library\-path PATH\fP
+\fBLD_LIBRARY_PATH\fP 環境変数の設定ではなく、
+指定した PATH を使用する (下記参照)。
+.TP 
+\fB\-\-inhibit\-rpath LIST\fP
+LIST にあるオブジェクト名の RPATH と RUNPATH の情報を無視する。 \fBld.so\fP が set\-user\-ID か
+set\-group\-ID されている場合、 このオプションは無視される。
+.TP 
+\fB\-\-audit LIST\fP
+LIST で指定された名前のオブジェクトを監査者として使用する。
+.SH ハードウェア機能
+いくつかのライブラリは、(すべての CPU に存在するわけではない)ハードウェア固有
+の命令を使ってコンパイルされている。そのようなライブラリは、
+\fI/usr/lib/sse2/\fP のような、必要なハードウェア機能 (hardware capability) を規
+定する名前のディレクトリにインストールすべきである。
+動的リンカは、マシンのハードウェアに基づいてこれらのディレクトリを確認し、
+指定されたライブラリに最も適したバージョンを選択する。
+ハードウェア機能ディレクトリはつなげることができ、
+複数の CPU 機能を組み合わることができる。
+対応しているハードウェア機能名のリストは CPU に依存する。
+現在のところ、以下の名前が認識される。
+.TP 
+\fBAlpha\fP
+ev4, ev5, ev56, ev6, ev67
+.TP 
+\fBMIPS\fP
+loongson2e, loongson2f, octeon, octeon2
+.TP 
+\fBPowerPC\fP
+4xxmac, altivec, arch_2_05, arch_2_06, booke, cellbe, dfp, efpdouble,
+efpsingle, fpu, ic_snoop, mmu, notb, pa6t, power4, power5, power5+, power6x,
+ppc32, ppc601, ppc64, smt, spe, ucache, vsx
+.TP 
+\fBSPARC\fP
+flush, muldiv, stbar, swap, ultra3, v9, v9v, v9v2
+.TP 
+\fBs390\fP
+dfp, eimm, esan3, etf3enh, g5, highgprs, hpage, ldisp, msa, stfle, z900,
+z990, z9\-109, z10, zarch
+.TP 
+.TP 
+\fBx86 (32\-bit のみ)\fP
+acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586, i686, mca,
+mmx, mtrr, pat, pbe, pge, pn, pse36, sep, ss, sse, sse2, tm
+.SH 環境変数
+4 つの重要な環境変数がある。
+.TP 
+\fBLD_BIND_NOW\fP
+(libc5; glibc 2.1.1 以降)  空文字列でない場合、 動的リンカはプログラムの開始時に全てのシンボルを解決する。
+空文字列の場合、解決しなければならない関数呼び出しが 最初に参照された時点で解決する。 デバッガを使っているときに役立つ。
+.TP 
+\fBLD_LIBRARY_PATH\fP
+コロン区切りのディレクトリリスト。 実行時に ELF ライブラリを検索するディレクトリを指定する。 \fBPATH\fP 環境変数と同じように指定する。
+.TP 
+\fBLD_PRELOAD\fP
+スペース区切りで ELF 共有ライブラリを指定する。 これはユーザーが指定でき、すべてのライブラリに先立ってロードされる。
+他の共有ライブラリにある関数を選択的に置き換えるために用いることができる。 set\-user\-ID/set\-group\-ID された ELF
+バイナリに対して、 標準的な検索パスにあるライブラリのうち set\-user\-ID されているものはロードしない。
+.TP 
+\fBLD_TRACE_LOADED_OBJECTS\fP
+(ELF のみ)  空文字列でない場合、 プログラムを普通に実行するのではなく、 \fBldd\fP(1)
+を実行したときのように動的ライブラリの依存関係をリスト表示させる。
+.LP
+そして、それほど知られていない環境変数もある。 多くは廃れてしまったものか内部でのみ使用される環境変数である。
+.TP 
+\fBLD_AOUT_LIBRARY_PATH\fP
+(libc5)  a.out バイナリにのみ使われる環境変数で、 \fBLD_LIBRARY_PATH\fP と同じ役割をする。 ld\-linux.so.1
+の古いバージョンでは \fBLD_ELF_LIBRARY_PATH\fP もサポートしていた。
+.TP 
+\fBLD_AOUT_PRELOAD\fP
+(libc5)  a.out バイナリにのみ使われる環境変数で、 \fBLD_PRELOAD\fP と同じ役割をする。 ld\-linux.so.1
+の古いバージョンでは \fBLD_ELF_PRELOAD\fP もサポートしていた。
+.TP 
+\fBLD_AUDIT\fP
+(glibc 2.4 以降)  他のオブジェクトよりも前に、別のリンカ名前空間 (そのプロセスで行われる 通常のシンボル結合 (symbol
+bindigns) には関与しない名前空間) で ロードされる、ユーザ指定の ELF 共有オブジェクトのコロン区切りのリスト。
+これらのライブラリを使って、動的リンカの動作を監査することができる。 set\-user\-ID/set\-group\-ID されたバイナリでは、
+\fBLD_AUDIT\fP は無視される。
+
+動的リンカは、いわゆる監査チェックポイント (auditing checkpoints)  において、監査 (audit)
+ライブラリの適切な関数を呼び出すことで、 監査ライブラリへの通知を行う。監査チェックポイントの例としては、
+新たなライブラリのロード、シンボルの解決、別の共有オブジェクト からのシンボルの呼び出し、などがある。 詳細は \fBrtld\-audit\fP(7)
+を参照してほしい。 audit インタフェースは、Solaris で提供されているものと 大部分は互換性がある。Solaris の audit
+インタフェースについては、 \fILinker and Libraries Guide\fP の \fIRuntime Linker Auditing
+Interface\fP の章に説明がある。
+.TP 
+\fBLD_BIND_NOT\fP
+(glibc 2.1.95 以降)  シンボルを解決した後、GOT (global offset table) と PLT (procedure
+linkage table) を更新しない。
+.TP 
+\fBLD_DEBUG\fP
+(glibc 2.1 以降)  動的リンカの詳細なデバッグ情報を出力する。 \fBall\fP に設定した場合、全ての動的リンカが持つデバッグ情報を表示する。
+\fBhelp\fP に設定した場合、この環境変数で指定されるカテゴリのヘルプ情報を表示する。 glibc 2.3.4 以降、
+set\-user\-ID/set\-group\-ID されたバイナリでは \fBLD_DEBUG\fP は無視される。
+.TP 
+\fBLD_DEBUG_OUTPUT\fP
+(glibc 2.1 以降)  \fBLD_DEBUG\fP の出力を書き込むファイル。 デフォルトは標準出力である。
+set\-user\-ID/set\-group\-ID されたバイナリでは、 \fBLD_DEBUG_OUTPUT\fP は無視される。
+.TP 
+\fBLD_DYNAMIC_WEAK\fP
+(glibc 2.1.19 以降)  上書きされる弱いシンボル (昔の glibc の挙動を逆にする)。 セキュリティ上の理由から、glibc
+2.3.4 以降、 set\-user\-ID/set\-group\-ID されたバイナリでは \fBLD_DYNAMIC_WEAK\fP は無視される。
+.TP 
+\fBLD_HWCAP_MASK\fP
+(glibc 2.1 以降)  ハードウェア機能のマスク。
+.TP 
+\fBLD_KEEPDIR\fP
+(a.out のみ)(libc5)  ロードする a.out ライブラリの名前において、ディレクトリを無視しない。 このオプションは用いるべきではない。
+.TP 
+\fBLD_NOWARN\fP
+(a.out のみ)(libc5)  a.out ライブラリにおけるマイナーバージョン番号の非互換に 対する警告メッセージを抑制する。
+.TP 
+\fBLD_ORIGIN_PATH\fP
+.\" Only used if $ORIGIN can't be determined by normal means
+.\" (from the origin path saved at load time, or from /proc/self/exe)?
+(glibc 2.1 以降)  バイナリへのパス (set\-user\-ID されていないプログラムについて)。 セキュリティ上の理由から、glibc
+2.3.4 以降、 set\-user\-ID/set\-group\-ID されたバイナリでは \fBLD_ORIGIN_PATH\fP は無視される。
+.TP 
+\fBLD_POINTER_GUARD\fP
+(glibc 2.4 以降)  0 に設定すると、ポインタ保護 (pointer guarding) が無効になる。
+それ以外の値の場合はポインタ保護が有効になる。 デフォルトはポインタ保護有効である。
+ポインタ保護はセキュリティ機構の一つで、書き込み可能なプログラムメモリ に格納されたコードへのポインタをほぼランダム化することで、
+攻撃者がバッファオーバーランやスタック破壊 (stack\-smashing) 攻撃の際に ポインタを乗っ取ることを困難にするものである。
+.TP 
+\fBLD_PROFILE\fP
+(glibc 2.1 以降)  プロファイルを行う共有オブジェクト。 パス名か共有オブジェクト名 (soname) で指定される。 プロフィールの出力は
+"\fI$LD_PROFILE_OUTPUT\fP/\fI$LD_PROFILE\fP.profile" という名前の ファイルに書き込まれる。
+.TP 
+\fBLD_PROFILE_OUTPUT\fP
+(glibc 2.1 以降)  \fBLD_PROFILE\fP の出力が書き込まれるディレクトリ。
+この変数が定義されていないか、空の文字列が定義されている場合、 デフォルト値は \fI/var/tmp\fP となる。
+set\-user\-ID/set\-group\-ID されたプログラムでは、 LD_PROFILE_OUTPUT は無視される。 出力ファイルは常に
+\fI/var/profile\fP が使用される。
+.TP 
+\fBLD_SHOW_AUXV\fP
+.\" FIXME
+.\" Document LD_TRACE_PRELINKING (e.g.: LD_TRACE_PRELINKING=libx1.so ./prog)
+.\" Since glibc 2.3
+.\" Also enables DL_DEBUG_PRELINK
+(glibc 2.1 以降)  カーネルから渡される補助的な (パラメータの) 配列を表示する。 セキュリティ上の理由から、glibc 2.3.4
+以降、 set\-user\-ID/set\-group\-ID されたバイナリでは \fBLD_SHOW_AUXV\fP は無視される。
+.TP 
+\fBLD_USE_LOAD_BIAS\fP
+.\" http://sources.redhat.com/ml/libc-hacker/2003-11/msg00127.html
+.\" Subject: [PATCH] Support LD_USE_LOAD_BIAS
+.\" Jakub Jelinek
+デフォルトでは (つまり、この変数が定義されていない場合)、 実行ファイルと prelink された共有オブジェクトでは、それらが依存する
+ライブラリのベースアドレスが尊重される一方、 (prelink されていない) position\-independent executables
+(PIEs) と 他の共有オブジェクトでは依存するライブラリのベースアドレスは 尊重されない。 \fBLD_USE_LOAD_BIAS\fP
+に値が定義された場合、実行ファイルと PIE のどちらでも ベースアドレスが尊重される。 \fBLD_USE_LOAD_BIAS\fP が値 0
+で定義された場合、実行ファイルと PIE のどちらでも ベースアドレスは尊重されない。 set\-user\-ID や set\-group\-ID
+されたプログラムでは、 この変数は無視される。
+.TP 
+\fBLD_VERBOSE\fP
+(glibc 2.1 以降)  空文字列でない場合に、 (\fBLD_TRACE_LOADED_OBJECTS\fP を設定するか、 \fB\-\-list\fP
+または \fB\-\-verify\fP オプションを動的リンカに指定することにより)  プログラムについての情報を問い合わせると、
+プログラムのシンボルバージョン情報を表示する。
+.TP 
+\fBLD_WARN\fP
+(ELF のみ)(glibc 2.1.3 以降)  空文字列でない場合、解決されていないシンボルがあれば警告を出す。
+.TP 
+\fBLDD_ARGV0\fP
+(libc5)  \fBldd\fP(1)  の引き数がない場合に、 \fIargv\fP[0] として使われる値。
+.SH ファイル
+.PD 0
+.TP 
+\fI/lib/ld.so\fP
+a.out の動的リンカ/ローダ
+.TP 
+\fI/lib/ld\-linux.so.\fP{\fI1\fP,\fI2\fP}
+ELF の動的リンカ/ローダ
+.TP 
+\fI/etc/ld.so.cache\fP
+ライブラリを検索するディレクトリを集めたリストと、 共有ライブラリの候補の整列リストを含むファイル。
+.TP 
+\fI/etc/ld.so.preload\fP
+プログラムの前にロードすべき ELF 共有ライブラリを スペースで区切ったリストが書かれているファイル。
+.TP 
+\fBlib*.so*\fP
+共有ライブラリ
+.PD
+.SH 注意
+\fBld.so\fP の機能は libc のバージョン 4.4.3 以上を用いてコンパイルされた 実行ファイルで使用可能である。 ELF の機能は
+Linux 1.1.52 以降と libc5 以降で使用可能である。
+.SH 関連項目
+\fBldd\fP(1), \fBrtld\-audit\fP(7), \fBldconfig\fP(8)
+.\" .SH AUTHORS
+.\" ld.so: David Engel, Eric Youngdale, Peter MacDonald, Hongjiu Lu, Linus
+.\"  Torvalds, Lars Wirzenius and Mitch D'Souza
+.\" ld-linux.so: Roland McGrath, Ulrich Drepper and others.
+.\"
+.\" In the above, (libc5) stands for David Engel's ld.so/ld-linux.so.