From fe231d72006b46400bc8bf48d8bca24b62994b25 Mon Sep 17 00:00:00 2001 From: Akihiro MOTOKI Date: Sat, 7 Jun 2014 01:14:49 +0900 Subject: [PATCH] Update drafts for LDP 3.67 --- draft/man2/bind.2 | 8 ++-- draft/man2/chown.2 | 4 +- draft/man2/clone.2 | 59 +++++++++++++++-------------- draft/man2/execve.2 | 27 ++++++-------- draft/man2/fork.2 | 4 +- draft/man2/getrusage.2 | 6 +-- draft/man2/msgctl.2 | 30 +++++++-------- draft/man2/msgget.2 | 41 ++++++++++---------- draft/man2/msgop.2 | 65 ++++++++++++++------------------ draft/man2/recv.2 | 4 +- draft/man2/sched_get_priority_max.2 | 8 ++-- draft/man2/sched_rr_get_interval.2 | 2 +- draft/man2/sched_setaffinity.2 | 12 +++--- draft/man2/sched_setparam.2 | 8 ++-- draft/man2/sched_setscheduler.2 | 37 ++++++++----------- draft/man2/semget.2 | 9 ++--- draft/man2/semop.2 | 2 +- draft/man2/send.2 | 11 +++--- draft/man2/set_mempolicy.2 | 7 ++-- draft/man2/stat.2 | 74 +++++++++++++++++-------------------- draft/man3/inet.3 | 16 ++++---- draft/man3/malloc.3 | 3 +- draft/man3/pthread_setcancelstate.3 | 4 +- draft/man3/rcmd.3 | 7 ++-- draft/man3/rexec.3 | 11 ++---- draft/man3/stpcpy.3 | 9 ++--- draft/man3/stpncpy.3 | 4 +- draft/man3/strcasecmp.3 | 9 ++--- draft/man5/networks.5 | 4 +- draft/man5/services.5 | 8 ++-- draft/man7/ddp.7 | 27 ++++++-------- draft/man7/ip.7 | 13 +++---- draft/man7/mq_overview.7 | 4 +- draft/man7/netdevice.7 | 12 +++--- draft/man7/udp.7 | 20 ++++------ 35 files changed, 254 insertions(+), 315 deletions(-) diff --git a/draft/man2/bind.2 b/draft/man2/bind.2 index ac4e709a..4be2bd7d 100644 --- a/draft/man2/bind.2 +++ b/draft/man2/bind.2 @@ -132,11 +132,9 @@ struct sockaddr { 指定されたアドレスが既に使用中である。 .TP \fBEADDRINUSE\fP -(Internet domain sockets) The port number was specified as zero in the -socket address structure, but, upon attempting to bind to an ephemeral port, -it was determined that all port numbers in the ephemeral port range are -currently in use. See the discussion of -\fI/proc/sys/net/ipv4/ip_local_port_range\fP \fBip\fP(7). +(インターネットドメインソケットの場合) ソケットアドレス構造体でポート番号に 0 が指定されたが、 一時ポート (ephemeral port) +を割り当てようとした際に、 一時ポートとして使用する範囲のすべてのポート番号が使用中であった。 \fBip\fP(7) の +\fI/proc/sys/net/ipv4/ip_local_port_range\fP の説明を参照。 .TP .TP \fBEBADF\fP diff --git a/draft/man2/chown.2 b/draft/man2/chown.2 index 27e76f96..f99b2f2e 100644 --- a/draft/man2/chown.2 +++ b/draft/man2/chown.2 @@ -230,7 +230,7 @@ POSIX.1\-2008. \fBfchownat\fP(): POSIX.1\-2008. .SH 注意 -.SS "Ownership of new files" +.SS 新しいファイルの所有権 (\fBopen\fP(2) や \fBmkdir\fP(2) などにより) 新しいファイルが作成されるとき、 その所有者は呼び出したプロセスのファイルシステムユーザ ID と 同じに設定される。 そのファイルのグループはいくつかの要因により決定される。 その要因としては、 ファイルシステムの種類、そのファイルシステムのマウント時に 使用されたオプション、親ディレクトリで set\-group\-ID @@ -253,7 +253,7 @@ ext2, ext3, ext4, XFS である。 これらのマウントオプションに対 さらにファイルの内容にアクセスする全てのシステムコールを侵害する。 これは \fBchown\fP() が既にオープンされたファイルに対する アクセスをただちに取り消すことによる。 クライアント側のキャッシュにより所有権が変更されて ユーザーのアクセスが許した時点と、実際に他のクライアントでユーザーによって ファイルにアクセスできる時点との間に時間差があるかもしれない。 -.SS "Historical details" +.SS 歴史的な詳細 元々の Linux の \fBchown\fP(), \fBfchown\fP(), \fBlchown\fP() システムコールは、 16 ビットのユーザ ID とグループ ID だけに対応していた。 その後、 32 ビットの ID に対応した \fBchown32\fP(), \fBfchown32\fP(), \fBlchown32\fP() diff --git a/draft/man2/clone.2 b/draft/man2/clone.2 index f2153aa8..6b855b2e 100644 --- a/draft/man2/clone.2 +++ b/draft/man2/clone.2 @@ -112,7 +112,7 @@ _BSD_SOURCE || _SVID_SOURCE メインの説明はラッパー関数に関するものである。 素のシステムコールにおける差分はこのページの最後の方で説明する。 \fBfork\fP(2) とは異なり、\fBclone\fP() では、子プロセス (child process) -と呼び出し元のプロセスとが、メモリ空間、ファイルディスクリプタのテーブル、シグナル・ハンドラのテーブルなどの 実行コンテキストの一部を共有できる。 +と呼び出し元のプロセスとが、メモリ空間、ファイルディスクリプタのテーブル、シグナルハンドラのテーブルなどの 実行コンテキストの一部を共有できる。 (このマニュアルにおける「呼び出し元のプロセス」は、通常は 「親プロセス」と一致する。但し、後述の \fBCLONE_PARENT\fP の項も参照のこと) \fBclone\fP() の主要な使用法はスレッド (threads) を実装することである: @@ -161,13 +161,13 @@ wake (起床) させる。 このアドレスは \fBset_tid_address\fP(2) シ オープン・クローズや、ファイルディスクリプタ・フラグの変更) を行っても、もう一方のプロセスには影響を与えない。 .TP \fBCLONE_FS\fP (Linux 2.0 以降) -\fBCLONE_FS\fP が設定された場合、呼び出し元のプロセスと子プロセスが同じファイル・システム -情報を共有する。ファイル・システム情報は、ファイル・システムのルート (root)、 カレント・ワーキング・ディレクトリ (current -working directory) や umask などである。 呼び出し元のプロセスや子プロセスのどちらか一方によって \fBchroot\fP(2), +\fBCLONE_FS\fP が設定された場合、呼び出し元のプロセスと子プロセスが同じファイルシステム +情報を共有する。ファイルシステム情報は、ファイルシステムのルート (root)、 カレントワーキングディレクトリ (current working +directory) や umask などである。 呼び出し元のプロセスや子プロセスのどちらか一方によって \fBchroot\fP(2), \fBchdir\fP(2), \fBumask\fP(2) が呼び出されると、もう一方のプロセスにも影響が及ぶ。 \fBCLONE_FS\fP が設定されていない場合、子プロセスは、 \fBclone\fP() -が実行された時点での、呼び出し元のプロセスのファイル・システム情報のコピーを 使用する。 これ以降は、呼び出し元のプロセスと子プロセスの一方が +が実行された時点での、呼び出し元のプロセスのファイルシステム情報のコピーを 使用する。 これ以降は、呼び出し元のプロセスと子プロセスの一方が \fBchroot\fP(2), \fBchdir\fP(2), \fBumask\fP(2) を呼び出しても、もう一方のプロセスには影響を与えない。 .TP \fBCLONE_IO\fP (Linux 2.6.25 以降) @@ -320,15 +320,15 @@ UTS 名前空間は、 \fBuname\fP(2) が返す識別子の集合である。 (\fBset_thread_area\fP(2) を参照のこと) .TP \fBCLONE_SIGHAND\fP (Linux 2.0 以降) -\fBCLONE_SIGHAND\fP が設定された場合、呼び出し元のプロセスと子プロセスは同じシグナル・ハン +\fBCLONE_SIGHAND\fP が設定された場合、呼び出し元のプロセスと子プロセスは同じシグナルハン ドラのテーブルを共有する。呼び出し元のプロセスまたは子プロセスのどちらかが \fBsigaction\fP(2) を呼び出してシグナルに対応する動作を変更した場合、 もう一方のプロセスのシグナル動作も変更される。 但し、呼び出し元のプロセスと子プロセスは、 -プロセス毎に、シグナル・マスク (signal mask) と処理待ちシグナルの集合 を持っている。このため、あるプロセスは、 +プロセス毎に、シグナルマスク (signal mask) と処理待ちシグナルの集合 を持っている。このため、あるプロセスは、 \fBsigprocmask\fP(2) を使用して、もう一方のプロセスに影響を与えずに シグナルを禁止 (block) したり許可 (unblock) したりできる。 \fBCLONE_SIGHAND\fP が設定されていない場合、子プロセスは \fBclone\fP() -が実行された時点での、呼び出し元のプロセスのシグナル・ハンドラの コピーを継承する。これ以降は、一方のプロセスが \fBsigaction\fP(2) +が実行された時点での、呼び出し元のプロセスのシグナルハンドラの コピーを継承する。これ以降は、一方のプロセスが \fBsigaction\fP(2) を呼び出しても、もう一方のプロセスには影響を与えない。 Linux 2.6.0\-test6 以降では、 \fBCLONE_SIGHAND\fP を指定する場合、 \fBCLONE_VM\fP も \fIflags\fP @@ -348,53 +348,52 @@ Linux 2.6.38 で完全に\fI削除\fPされた。 (リストの初期値は空である)。 .TP \fBCLONE_THREAD\fP (Linux 2.4.0\-test8以降) -\fBCLONE_THREAD\fP が設定された場合、子プロセスは呼び出し元のプロセスと同じスレッド・グループに 置かれる。 \fBCLONE_THREAD\fP -についての以降の議論を読みやすくするため、 「スレッド」という用語はスレッド・グループの中のプロセスを 参照するのに使うこととする。 +\fBCLONE_THREAD\fP が設定された場合、子プロセスは呼び出し元のプロセスと同じスレッドグループに 置かれる。 \fBCLONE_THREAD\fP +についての以降の議論を読みやすくするため、 「スレッド」という用語はスレッドグループの中のプロセスを 参照するのに使うこととする。 -スレッド・グループは、 スレッド集合で一つの PID を共有するという POSIX スレッドの概念をサポートするために Linux 2.4 -に加えられた機能であった。 内部的には、この共有 PID はいわゆるそのスレッドグループの スレッド・グループ識別子 (TGID) である。 Linux -2.4 以降では、 \fBgetpid\fP(2) の呼び出しではそのプロセスのスレッド・グループ ID を返す。 +スレッドグループは、 スレッド集合で一つの PID を共有するという POSIX スレッドの概念をサポートするために Linux 2.4 +に加えられた機能であった。 内部的には、この共有 PID はいわゆるそのスレッドグループの スレッドグループ識別子 (TGID) である。 Linux +2.4 以降では、 \fBgetpid\fP(2) の呼び出しではそのプロセスのスレッドグループ ID を返す。 あるグループに属するスレッドは (システム全体で) 一意なスレッド ID (TID) で区別できる。新しいスレッドの TID は \fBclone\fP() の呼び出し元へ関数の結果として返され、 スレッドは自分自身の TID を \fBgettid\fP(2) で取得できる。 \fBCLONE_THREAD\fP を指定せずに \fBclone\fP() の呼び出しが行われると、 生成されたスレッドはそのスレッドの TID と同じ値の -TGID を持つ 新しいスレッド・グループに置かれる。このスレッドは 新しいスレッド・グループの「リーダー」である。 +TGID を持つ 新しいスレッドグループに置かれる。このスレッドは 新しいスレッドグループの「リーダー」である。 \fBCLONE_THREAD\fP を指定して作成された新しいスレッドは、 (\fBCLONE_PARENT\fP の場合と同様に) \fBclone\fP() -を呼び出し元と同じ親プロセスを持つ。 そのため、 \fBgetppid\fP(2) を呼ぶと、一つのスレッド・グループに属すスレッドは全て同じ値を返す。 +を呼び出し元と同じ親プロセスを持つ。 そのため、 \fBgetppid\fP(2) を呼ぶと、一つのスレッドグループに属すスレッドは全て同じ値を返す。 \fBCLONE_THREAD\fP で作られたスレッドが終了した際に、 そのスレッドを \fBclone\fP() を使って生成したスレッドには \fBSIGCHLD\fP (もしくは他の終了シグナル) は送信されない。 また、 \fBwait\fP(2) を使って終了したスレッドの状態を取得することもできない (そのようなスレッドは \fIdetached\fP (分離された) といわれる)。 -スレッド・グループに属す全てのスレッドが終了した後、 そのスレッド・グループの親プロセスに \fBSIGCHLD\fP (もしくは他の終了シグナル) -が送られる。 +スレッドグループに属す全てのスレッドが終了した後、 そのスレッドグループの親プロセスに \fBSIGCHLD\fP (もしくは他の終了シグナル) が送られる。 -スレッド・グループに属すいずれかのスレッドが \fBexecve\fP(2) を実行すると、スレッド・グループ・リーダー以外の全てのスレッドは -終了され、新しいプロセスがそのスレッド・グループ・リーダーの下で 実行される。 +スレッドグループに属すいずれかのスレッドが \fBexecve\fP(2) を実行すると、スレッドグループリーダー以外の全てのスレッドは +終了され、新しいプロセスがそのスレッドグループリーダーの下で 実行される。 -スレッド・グループに属すスレッドの一つが \fBfork\fP(2) を使って子プロセスを作成した場合、 スレッド・グループのどのスレッドであっても -その子供を \fBwait\fP(2) できる。 +スレッドグループに属すスレッドの一つが \fBfork\fP(2) を使って子プロセスを作成した場合、 スレッドグループのどのスレッドであっても その子供を +\fBwait\fP(2) できる。 Linux 2.5.35 以降では、 \fBCLONE_THREAD\fP を指定する場合、 \fIflags\fP に \fBCLONE_SIGHAND\fP も含まれていなければならない (Linux 2.6.0\-test6 以降では、 \fBCLONE_SIGHAND\fP を指定する場合 \fBCLONE_VM\fP も指定する必要がある点に注意すること)。 -\fBkill\fP(2) を使ってスレッド・グループ全体 (つまり TGID) にシグナルを送ることもできれば、 \fBtgkill\fP(2) +\fBkill\fP(2) を使ってスレッドグループ全体 (つまり TGID) にシグナルを送ることもできれば、 \fBtgkill\fP(2) を使って特定のスレッド (つまり TID) にシグナルを送ることもできる。 シグナルの配送と処理はプロセス全体に影響する: ハンドラを設定していないシグナルがあるスレッドに配送されると、 -そのシグナルはスレッド・グループの全メンバーに影響を及ぼす (終了したり、停止したり、動作を継続したり、無視されたりする)。 +そのシグナルはスレッドグループの全メンバーに影響を及ぼす (終了したり、停止したり、動作を継続したり、無視されたりする)。 各々のスレッドは独自のシグナルマスクを持っており、 \fBsigprocmask\fP(2) で設定できる。 だが、処理待ちのシグナルには、 -\fBkill\fP(2) で送信されるプロセス全体に対するもの (つまり、スレッド・グループの どのメンバーにも配送できるもの) と、 +\fBkill\fP(2) で送信されるプロセス全体に対するもの (つまり、スレッドグループの どのメンバーにも配送できるもの) と、 \fBtgkill\fP(2) で送信される個々のスレッドに対するものがありえる。 \fBsigpending\fP(2) を呼び出すと、プロセス全体に対する処理待ちシグナルと呼び出し元の スレッドに対する処理待ちシグナルを結合したシグナル集合が返される。 -\fBkill\fP(2) を使ってスレッド・グループにシグナルが送られた場合で、 そのスレッド・グループがそのシグナルに対するシグナル・ハンドラが -登録されていたときには、シグナル・ハンドラはスレッド・グループの メンバーのうち、ただ一つのスレッドでだけ起動される。ハンドラが +\fBkill\fP(2) を使ってスレッドグループにシグナルが送られた場合で、 そのスレッドグループがそのシグナルに対するシグナルハンドラが +登録されていたときには、シグナルハンドラはスレッドグループの メンバーのうち、ただ一つのスレッドでだけ起動される。ハンドラが 起動されるスレッドは、そのシグナルを禁止 (block) していない メンバーの中から一つだけが勝手に (arbitrarily) 選ばれる。 -スレッド・グループに属す複数のスレッドが \fBsigwaitinfo\fP(2) を使って同じシグナルを待っている場合、 +スレッドグループに属す複数のスレッドが \fBsigwaitinfo\fP(2) を使って同じシグナルを待っている場合、 これらのスレッドの中から一つをカーネルが勝手に選択し、 そのスレッドが \fBkill (2)\fP を使って送信されたシグナルを受信する。 .TP \fBCLONE_UNTRACED\fP (Linux 2.5.46 以降) @@ -433,7 +432,7 @@ Linux 2.5.35 以降では、 \fBCLONE_THREAD\fP を指定する場合、 \fIflag .in 生のシステムコールのもう一つの違いは、 \fIchild_stack\fP 引き数がゼロでも良いことである。この場合には、どちらかのプロセスが スタックを変更した時に、書き込み時コピー (copy\-on\-write) 方式により -子プロセスがスタック・ページの独立したコピーを得られることが保証される。 この場合、正常に動作させるためには、 \fBCLONE_VM\fP +子プロセスがスタックページの独立したコピーを得られることが保証される。 この場合、正常に動作させるためには、 \fBCLONE_VM\fP オプションを指定してはならない。 いくつかのアーキテクチャでは、システムコールの引き数の順序は上記とは異なっている。 microblaze, ARM, ARM 64, PA\-RISC, @@ -532,14 +531,14 @@ CLONE_THREAD と一緒に指定する必要はなくなった。 このフラグ i386 上では、 \fBclone\fP() は vsyscall 経由ではなく、直接 \fIint $0x80\fP 経由で呼び出すべきである。 .SH バグ -NPTL スレッド・ライブラリを含んでいる GNU C ライブラリのいくつかのバージョン には、 \fBgetpid\fP(2) +NPTL スレッドライブラリを含んでいる GNU C ライブラリのいくつかのバージョン には、 \fBgetpid\fP(2) のラッパー関数が含まれており、このラッパー関数は PID をキャッシュする。 このキャッシュ処理が正しく動作するためには glibc の \fBclone\fP() のラッパー関数での助けが必要だが、現状の実装では、 ある状況下においてキャッシュが最新とならない可能性がある。 特に、 \fBclone\fP() の呼び出し直後にシグナルが子プロセスに配送された場合に、 そのシグナルに対するハンドラ内で \fBgetpid\fP(2) を呼び出すと、それまでに clone のラッパー関数が子プロセスの PID キャッシュを 更新する機会が得られていなければ、呼び出し元プロセス ("親プロセス") の PID が 返される可能性がある。 (この議論では、子プロセスが \fBCLONE_THREAD\fP を使って作成された場合のことは無視している。 子プロセスが \fBCLONE_THREAD\fP を作って作成された場合には、 -呼び出し元と子プロセスは同じスレッド・グループに属すので、 \fBgetpid\fP(2) は子プロセスと \fBclone\fP() +呼び出し元と子プロセスは同じスレッドグループに属すので、 \fBgetpid\fP(2) は子プロセスと \fBclone\fP() を呼び出したプロセスで同じ値を返すのが「正しい」。 キャッシュが最新とならない問題 (stale\-cache problem) は、 \fIflags\fP に \fBCLONE_VM\fP が含まれている場合にも発生しない。) 本当の値を得るためには、次のようなコードを使う必要があるかもしれない。 .nf diff --git a/draft/man2/execve.2 b/draft/man2/execve.2 index 22fa7948..724c16a0 100644 --- a/draft/man2/execve.2 +++ b/draft/man2/execve.2 @@ -320,28 +320,23 @@ set\-user\-id プロセスと set\-group\-ID プロセスは \fBptrace\fP(2) .\" Bug filed 30 Apr 2007: http://bugzilla.kernel.org/show_bug.cgi?id=8408 .\" Bug rejected (because fix would constitute an ABI change). .\" -The result of mounting a filesystem \fInosuid\fP varies across Linux kernel -versions: some will refuse execution of set\-user\-ID and set\-group\-ID -executables when this would give the user powers she did not have already -(and return \fBEPERM\fP), some will just ignore the set\-user\-ID and -set\-group\-ID bits and \fBexec\fP() successfully. On Linux, \fIargv\fP and -\fIenvp\fP can be specified as NULL. In both cases, this has the same effect -as specifying the argument as a pointer to a list containing a single null -pointer. \fBDo not take advantage of this misfeature!\fP It is nonstandard and -nonportable: on most other UNIX systems doing this will result in an error -(\fBEFAULT\fP). +ファイルシステムを \fInosuid\fP でマウントした場合に set\-user\-ID/set\-group\-ID の実行ファイルを +どの様に扱うかは、Linux カーネルのバージョンによって異なる: あるバージョンでは、すでに必要な権限を持っている場合を除いて、 その実行を拒否する +(そして \fBEPERM\fP を返す)。別のあるバージョンでは set\-user\-ID/set\-group\-ID ビットのみを無視し \fBexec\fP() +は成功する。 Linux では、 \fIargv\fP と \fIenvp\fP に NULL を指定することができる。 どちらに NULL を指定した場合も、 +これらの引き数にヌルポインタ 1 個だけを含むリストへのポインタを指定したのと同じ効果を持つ。 \fB「この間違った機能を利用しないこと」\fP。 +これは非標準で、移植性もない。 他のほとんどの UNIX システムでは、これを行うとエラー (\fBEFAULT\fP) になる。 POSIX.1\-2001 は、 \fBsysconf\fP(3) が返す値はプロセスの生存中は変化しないべきだとしている。 しかしながら、Linux 2.6.23 以降では、リソース上限 \fBRLIMIT_STACK\fP が変化した場合、 コマンドライン引き数と環境変数を保持するための空間に対する上限が 変化したことを反映して、 \fB_SC_ARG_MAX\fP が返す値も変化する。 .\" -In most cases where \fBexecve\fP() fails, control returns to the original -executable image, and the caller of \fBexecve\fP() can then handle the error. -However, in (rare) cases (typically caused by resource exhaustion), failure -may occur past the point of no return: the original executable image has -been torn down, but the new image could not be completely built. In such -cases, the kernel kills the process with a \fBSIGKILL\fP signal. +\fBexecve\fP() が失敗するほとんどの場合、 制御は元の実行可能イメージに戻り、 \fBexecve\fP() +の呼び出し元がエラーを処理することができる。 しかしながら、 (リソース枯渇が原因となった場合など、まれに) +呼び出し元に制御が戻る時点を過ぎてからエラーが発生する場合がある。 元の実行可能イメージはすでに破棄されているが、 +新しいイメージが完全には構築されていないという状況である。 このような場合、カーネルはそのプロセスをシグナル \fBSIGKILL\fP で停止 (kill) +する。 .SS インタプリタ・スクリプト インタプリタスクリプトの 1行目に許されている文字数は、 最大 127 文字である。 diff --git a/draft/man2/fork.2 b/draft/man2/fork.2 index 1054354d..d4fbc306 100644 --- a/draft/man2/fork.2 +++ b/draft/man2/fork.2 @@ -141,8 +141,8 @@ POSIX.1\-2001 では、親プロセスと子プロセス間の対応するディ (capability) を持っていなくてはならない。 .TP \fBEAGAIN\fP -The caller is operating under the \fBSCHED_DEADLINE\fP scheduling policy and -does not have the reset\-on\-fork flag set. See \fBsched\fP(7). +呼び出し元は、スケジューリングポリシー \fBSCHED_DEADLINE\fP で動作しており、かつ reset\-on\-fork +フラグがセットされていない。 \fBsched\fP(7) 参照。 .TP \fBENOMEM\fP メモリが足りないために、 \fBfork\fP() は必要なカーネル構造体を割り当てることができなかった。 diff --git a/draft/man2/getrusage.2 b/draft/man2/getrusage.2 index 6fa24290..0482d002 100644 --- a/draft/man2/getrusage.2 +++ b/draft/man2/getrusage.2 @@ -75,10 +75,8 @@ getrusage \- 資源の使用量を取得する これらの統計情報には、孫プロセスやその子孫のプロセスのうち、 削除待ちのものが使用している資源も含まれる。 .TP \fBRUSAGE_THREAD\fP (Linux 2.6.26 以降) -Return resource usage statistics for the calling thread. The \fB_GNU_SOURCE\fP -feature test macro must be defined (before including \fIany\fP header file) in -order to obtain the definition of this constant from -\fI\fP. +呼び出したスレッドに関する資源使用量の統計を返す。 \fI\fP からこの定数の定義を得るためには、 +((\fIどの\fPヘッダファイルをインクルードするよりも前に) 機能検査マクロ \fB_GNU_SOURCE\fP を定義しなければならない。 .PP 資源使用量は \fIusage\fP が指す構造体に格納されて返される。 構造体は以下の形式である。 .PP diff --git a/draft/man2/msgctl.2 b/draft/man2/msgctl.2 index 8ec20b7d..4e516b26 100644 --- a/draft/man2/msgctl.2 +++ b/draft/man2/msgctl.2 @@ -61,8 +61,8 @@ msgctl \- System V メッセージ制御操作 \fBint msgctl(int \fP\fImsqid\fP\fB, int \fP\fIcmd\fP\fB, struct msqid_ds *\fP\fIbuf\fP\fB);\fP .fi .SH 説明 -\fBmsgctl\fP() はメッセージ・キュー識別子 \fImsqid\fP で指定された System\ V メッセージ・キュー (message -queue) に対して \fIcmd\fP で指定された制御操作を行なう。 +\fBmsgctl\fP() はメッセージキュー識別子 \fImsqid\fP で指定された System\ V メッセージキュー (message queue) +に対して \fIcmd\fP で指定された制御操作を行なう。 .PP \fImsqid_ds\fP データ構造体は \fI\fP で以下のように定義されている: .nf @@ -104,25 +104,25 @@ struct ipc_perm { \fIcmd\fP として有効な値は: .TP \fBIPC_STAT\fP -\fImsqid\fP に関連づけられたメッセージ・キュー・データ構造体から、ポインタ \fIbuf\fP が指し示す \fImsqid_ds\fP +\fImsqid\fP に関連づけられたメッセージキューデータ構造体から、ポインタ \fIbuf\fP が指し示す \fImsqid_ds\fP 構造体に情報をコピーする。 呼び出し側はメッセージ・キューに対する読み込み許可を持っていなければならない。 .TP \fBIPC_SET\fP ポインタ \fIbuf\fP が指し示す \fImsqid_ds\fP 構造体のメンバーの値を、メッセージ・キューに関連づけられた カーネル・データ構造体に書き込み、 \fImsg_ctime\fP メンバーも更新する。 構造体のメンバーのうち、更新されるものを以下に示す: \fImsg_qbytes\fP, \fImsg_perm.uid\fP, \fImsg_perm.gid\fP, \fImsg_perm.mode\fP (の下位 9 -ビット)。 呼び出したプロセスの実効ユーザ ID が、メッセージ・キューの所有者 (\fImsg_perm.uid\fP) または作成者 +ビット)。 呼び出したプロセスの実効ユーザ ID が、メッセージキューの所有者 (\fImsg_perm.uid\fP) または作成者 (\fImsg_perm.cuid\fP) と一致するか、呼び出し元が特権を持たなければならない。 \fImsg_qbytes\fP をシステム・パラメータの \fBMSGMNB\fP を超えて設定するには、適切な特権 (Linux では \fBCAP_SYS_RESOURCE\fP ケーパビリティ (capability)) が必要である。 .TP \fBIPC_RMID\fP -メッセージ・キューをただちに削除する。 同時にその構造体の読み書きの待ち状態にあったプロセスに通知する (エラーが返り、 \fIerrno\fP が -\fBEIDRM\fP に設定される)。 呼び出したプロセスが適切な特権を持っているか、 呼び出したプロセスの実効ユーザ ID がメッセージ・キューの作成者か +メッセージキューをただちに削除する。 同時にその構造体の読み書きの待ち状態にあったプロセスに通知する (エラーが返り、 \fIerrno\fP が +\fBEIDRM\fP に設定される)。 呼び出したプロセスが適切な特権を持っているか、 呼び出したプロセスの実効ユーザ ID がメッセージキューの作成者か 所有者の実効ユーザ ID でなければならない。この場合、 \fBmsgctl\fP() の第 3 引き数は無視される。 .TP \fBIPC_INFO\fP (Linux 固有) -システム全体でのメッセージ・キューの制限とパラメータに関する情報を、 \fIbuf\fP が指す構造体に入れて返す。 この構造体は \fImsginfo\fP +システム全体でのメッセージキューの制限とパラメータに関する情報を、 \fIbuf\fP が指す構造体に入れて返す。 この構造体は \fImsginfo\fP 型である (そのためキャストが必要である)。 \fImsginfo\fP は \fB_GNU_SOURCE\fP 機能検査マクロが定義された場合に \fI\fP で以下のように定義される: .nf @@ -139,7 +139,7 @@ struct msginfo { int msgmnb; /* 一つのキューに書き込み可能な最大バイト数; (msgget(2) での) キュー作成中の msg_qbytes の初期化に使用される */ - int msgmni; /* メッセージ・キューの数の最大値 */ + int msgmni; /* メッセージキューの数の最大値 */ int msgssz; /* メッセージ・セグメントのサイズ; カーネル内では未使用 */ int msgtql; /* システム上の全キューの最大メッセージ数; @@ -154,34 +154,34 @@ struct msginfo { \fBproc\fP(5) を参照。 .TP \fBMSG_INFO\fP (Linux 固有) -\fBIPC_INFO\fP のときと同じ情報を格納した \fImsginfo\fP 構造体を返す。 但し、以下のフィールドにはメッセージ・キューが +\fBIPC_INFO\fP のときと同じ情報を格納した \fImsginfo\fP 構造体を返す。 但し、以下のフィールドにはメッセージキューが 消費しているシステム資源に関する情報が格納される点が異なる。 \fImsgpool\fP フィールドは現在システム上に存在するメッセージ・キューの数を返す。 \fImsgmap\fP フィールドはシステム上の全てのキューに入っているメッセージ総数を返す。 \fImsgtql\fP フィールドはシステム上の全てのキューに入っている全メッセージの 総バイト数を返す。 .TP \fBMSG_STAT\fP (Linux 固有) \fBIPC_STAT\fP と同じく \fImsqid_ds\fP 構造体を返す。 但し、 \fImsqid\fP -引き数は、キュー識別子ではなく、システム上の全てのメッセージ・キュー に関する情報を管理するカーネルの内部配列へのインデックスである。 +引き数は、キュー識別子ではなく、システム上の全てのメッセージキュー に関する情報を管理するカーネルの内部配列へのインデックスである。 .SH 返り値 成功すると、 \fBIPC_STAT\fP, \fBIPC_SET\fP, \fBIPC_RMID\fP は 0 を返す。 \fBIPC_INFO\fP と -\fBMSG_INFO\fP 操作は、成功すると、全てのメッセージ・キューに関する情報を 管理しているカーネルの内部配列の使用中エントリのインデックスの -うち最大値を返す (この情報は、システムの全てのメッセージ・キューに関する情報を 取得するために、 \fBMSG_STAT\fP +\fBMSG_INFO\fP 操作は、成功すると、全てのメッセージキューに関する情報を 管理しているカーネルの内部配列の使用中エントリのインデックスの +うち最大値を返す (この情報は、システムの全てのメッセージキューに関する情報を 取得するために、 \fBMSG_STAT\fP 操作を繰り返し実行する際に使用できる)。 \fBMSG_STAT\fP 操作は、成功すると、 \fImsqid\fP -で指定されたインデックスを持つメッセージ・キューの識別子を返す。 +で指定されたインデックスを持つメッセージキューの識別子を返す。 エラーの場合は \-1 を返し、 \fIerrno\fP を適切に設定する。 .SH エラー 失敗した場合、 \fIerrno\fP は以下の値の中のどれか一つに設定される: .TP \fBEACCES\fP -引き数 \fIcmd\fP が \fBIPC_STAT\fP または \fBMSG_STAT\fP に等しいが、呼び出したプロセスがメッセージ・キュー \fImsqid\fP +引き数 \fIcmd\fP が \fBIPC_STAT\fP または \fBMSG_STAT\fP に等しいが、呼び出したプロセスがメッセージキュー \fImsqid\fP に対する読み込み許可を持っておらず、かつ \fBCAP_IPC_OWNER\fP ケーパビリティを持っていない。 .TP \fBEFAULT\fP 引き数 \fIcmd\fP が \fBIPC_SET\fP か \fBIPC_STAT\fP で、ポインタ \fIbuf\fP で指されているアドレスがアクセス可能でない。 .TP \fBEIDRM\fP -メッセージ・キューが削除された。 +メッセージキューが削除された。 .TP \fBEINVAL\fP \fIcmd\fP または \fImsqid\fP に不正な値が設定された。 もしくは、 \fBMSG_STAT\fP 操作の場合に、 \fImsqid\fP diff --git a/draft/man2/msgget.2 b/draft/man2/msgget.2 index fdff0262..bbf2affe 100644 --- a/draft/man2/msgget.2 +++ b/draft/man2/msgget.2 @@ -47,7 +47,7 @@ .\" .TH MSGGET 2 2014\-04\-30 Linux "Linux Programmer's Manual" .SH 名前 -msgget \- System V メッセージ・キュー識別子を取得する +msgget \- System V メッセージキュー識別子を取得する .SH 書式 .nf \fB#include \fP @@ -57,20 +57,19 @@ msgget \- System V メッセージ・キュー識別子を取得する \fBint msgget(key_t \fP\fIkey\fP\fB, int \fP\fImsgflg\fP\fB);\fP .fi .SH 説明 -\fBmsgget\fP() システムコールは \fIkey\fP 引き数の値に対応する System\ V メッセージ・キューの識別子を返す。 \fIkey\fP +\fBmsgget\fP() システムコールは \fIkey\fP 引き数の値に対応する System\ V メッセージキューの識別子を返す。 \fIkey\fP の値が \fBIPC_PRIVATE\fP の場合、または \fIkey\fP が \fBIPC_PRIVATE\fP でなくても、 \fIkey\fP -に対応するメッセージ・キューが存在せず、 \fImsgflg\fP に \fBIPC_CREAT\fP が指定されている場合、 -新しいメッセージ・キューが作成される。 +に対応するメッセージキューが存在せず、 \fImsgflg\fP に \fBIPC_CREAT\fP が指定されている場合、 新しいメッセージキューが作成される。 .PP \fImsgflg\fP に \fBIPC_CREAT\fP と \fBIPC_EXCL\fP の両方が指定された場合、 \fIkey\fP -に対応するメッセージ・キューが既に存在すると、 \fBmsgget\fP() は失敗し、 \fIerrno\fP に \fBEEXIST\fP が設定される。 (これは +に対応するメッセージキューが既に存在すると、 \fBmsgget\fP() は失敗し、 \fIerrno\fP に \fBEEXIST\fP が設定される。 (これは \fBopen\fP(2) に \fBO_CREAT | O_EXCL\fP を指定した場合の動作と同じである) .PP -メッセージ・キューの作成時に、 \fImsgflg\fP 引き数の下位 9 ビットは、 そのメッセージ・キューのアクセス許可の定義として使用される。 +メッセージキューの作成時に、 \fImsgflg\fP 引き数の下位 9 ビットは、 そのメッセージ・キューのアクセス許可の定義として使用される。 これらの許可ビットは \fBopen\fP(2) の引き数 \fImode\fP と同じ形式で同じ意味である。 や \fBcreat\fP(2) システム・コールのアクセス許可パラメータと同じ形式で、同じ意味を持つ。 (但し、実行 (execute) 許可は使用されない。) .PP -新規のメッセージ・キューを作成する際、 \fBmsgget\fP() システム・コールはメッセージ・キューのデータ構造体 \fImsqid_ds\fP +新規のメッセージキューを作成する際、 \fBmsgget\fP() システム・コールはメッセージ・キューのデータ構造体 \fImsqid_ds\fP を以下のように初期化する (\fImsqid_ds\fP については \fBmsgctl\fP(2) を参照): .IP \fImsg_perm.cuid\fP と \fImsg_perm.uid\fP に呼び出し元プロセスの実効 (effective) ユーザーID を設定する。 @@ -84,30 +83,30 @@ msgget \- System V メッセージ・キュー識別子を取得する .IP \fImsg_ctime\fP に現在の時刻を設定する。 .IP -\fImsg_qbytes\fP に、システムで決められたメッセージ・キューの最大サイズ \fBMSGMNB\fP を設定する。 +\fImsg_qbytes\fP に、システムで決められたメッセージキューの最大サイズ \fBMSGMNB\fP を設定する。 .PP -メッセージ・キューがすでに存在する場合は、アクセス許可の検査と、 破棄 (destruction) マークがないかの確認が行われる。 +メッセージキューがすでに存在する場合は、アクセス許可の検査と、 破棄 (destruction) マークがないかの確認が行われる。 .SH 返り値 -成功した場合、返り値はメッセージ・キュー識別子 (非負の整数) となる。 失敗した場合は \-1 が返され、 \fIerrno\fP にそのエラーが示される。 +成功した場合、返り値はメッセージキュー識別子 (非負の整数) となる。 失敗した場合は \-1 が返され、 \fIerrno\fP にそのエラーが示される。 .SH エラー 失敗した場合、 \fIerrno\fP に以下の値のいずれか一つが設定される: .TP \fBEACCES\fP -\fIkey\fP に対応するメッセージ・キューは存在するが、 呼び出し元プロセスはそのキューに対するアクセス許可がなく、 \fBCAP_IPC_OWNER\fP +\fIkey\fP に対応するメッセージキューは存在するが、 呼び出し元プロセスはそのキューに対するアクセス許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティも持っていない。 .TP \fBEEXIST\fP -\fBIPC_CREAT\fP and \fBIPC_EXCL\fP were specified in \fImsgflg\fP, but a message -queue already exists for \fIkey\fP. +\fImsgflg\fP に \fBIPC_CREAT\fP と \fBIPC_EXCL\fP が指定されたが、 \fIkey\fP +に対応するメッセージキューがすでに存在する。 .TP \fBENOENT\fP -\fIkey\fP に対応するメッセージ・キューが存在せず、 \fImsgflg\fP に \fBIPC_CREAT\fP が指定されていなかった。 +\fIkey\fP に対応するメッセージキューが存在せず、 \fImsgflg\fP に \fBIPC_CREAT\fP が指定されていなかった。 .TP \fBENOMEM\fP -メッセージ・キューを作成しようとしたが、新しいデータ構造体を作成 するのに十分なメモリがシステムに存在しない。 +メッセージキューを作成しようとしたが、新しいデータ構造体を作成 するのに十分なメモリがシステムに存在しない。 .TP \fBENOSPC\fP -メッセージ・キューを作成しようとしたが、作成すると システム全体のメッセージ・キュー数の最大値 (\fBMSGMNI\fP) を超えてしまう。 +メッセージキューを作成しようとしたが、作成すると システム全体のメッセージ・キュー数の最大値 (\fBMSGMNI\fP) を超えてしまう。 .SH 準拠 SVr4, POSIX.1\-2001. .SH 注意 @@ -119,15 +118,15 @@ Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI \fBIPC_PRIVATE\fP はフラグではなく、 \fIkey_t\fP 型である。 この特別な値が \fIkey\fP として使用された場合、 \fBmsgget\fP() システムコールは \fImsgflg\fP の下位 9 ビット以外の全てを無視して (成功した場合は) -新しいメッセージ・キューを作成する。 +新しいメッセージキューを作成する。 .PP -\fBmsgget\fP() システムコールに影響を及ぼすメッセージ・キューの資源の システムとしての制限を以下に示す: +\fBmsgget\fP() システムコールに影響を及ぼすメッセージキューの資源の システムとしての制限を以下に示す: .TP \fBMSGMNI\fP -System\-wide limit on the number of message queues: policy dependent (on -Linux, this limit can be read and modified via \fI/proc/sys/kernel/msgmni\fP). +システム全体のメッセージキュー数の上限値: 方針依存 (Linux では、この制限値は \fI/proc/sys/kernel/msgmni\fP +経由で参照したり、変更したりできる)。 .SS "Linux での注意" -Linux 2.3.20 までは、削除が予定されているメッセージ・キューに対して \fBmsgget\fP() を行うと \fBEIDRM\fP +Linux 2.3.20 までは、削除が予定されているメッセージキューに対して \fBmsgget\fP() を行うと \fBEIDRM\fP がエラーとして返されるようになっていた。 .SH バグ \fBIPC_PRIVATE\fP という名前を選んだのはおそらく失敗であろう。 \fBIPC_NEW\fP の方がより明確にその機能を表しているだろう。 diff --git a/draft/man2/msgop.2 b/draft/man2/msgop.2 index 82365977..d313d583 100644 --- a/draft/man2/msgop.2 +++ b/draft/man2/msgop.2 @@ -68,8 +68,8 @@ msgrcv, msgsnd \- System V メッセージキュー操作 \fB int \fP\fImsgflg\fP\fB);\fP .fi .SH 説明 -システムコール \fBmsgsnd\fP() と \fBmsgrcv\fP() はそれぞれ、 System\ V メッセージ・キューへのメッセージの送信と、 -メッセージの受信に使用される。呼び出し元プロセスは、 メッセージを送信するためにはメッセージ・キューに対する書き込み許可を、 +システムコール \fBmsgsnd\fP() と \fBmsgrcv\fP() はそれぞれ、 System\ V メッセージキューへのメッセージの送信と、 +メッセージの受信に使用される。呼び出し元プロセスは、 メッセージを送信するためにはメッセージキューに対する書き込み許可を、 メッセージを受信するためには読み出し許可を持っていなければならない。 .PP 呼び出し元プロセスは以下に示す構造体を用意し、この構造体への ポインタを \fImsgp\fP 引き数として渡す。 @@ -88,28 +88,21 @@ struct msgbuf { この値は、メッセージを受信するプロセスでメッセージを選択するために 使用される (下記の \fBmsgrcv\fP() の説明を参照のこと)。 .SS msgsnd() \fBmsgsnd\fP() システムコールは \fImsgp\fP 引き数で指定されたメッセージのコピーを \fImsqid\fP -で指定された識別子を持つメッセージ・キューへ追加する。 +で指定された識別子を持つメッセージキューへ追加する。 .PP -If sufficient space is available in the queue, \fBmsgsnd\fP() succeeds -immediately. The queue capacity is governed by the \fImsg_qbytes\fP field in -the associated data structure for the message queue. During queue creation -this field is initialized to \fBMSGMNB\fP bytes, but this limit can be modified -using \fBmsgctl\fP(2). A message queue is considered to be full if either of -the following conditions is true: +キューに十分な空き容量がある場合、 \fBmsgsnd\fP() は直ちに成功する。 キューの容量は、メッセージキューのデータ構造体の +\fImsg_qbytes\fP フィールドで制御される。 キュー作成時にこのフィールドは \fBMSGMNB\fP に初期化されるが、この制限は +\fBmsgctl\fP(2) を使って変更できる。 次のいずれかの条件が成立する場合に、メッセージキューは一杯と判断される。 .IP * 2 -Adding a new message to the queue would cause the total number of bytes in -the queue to exceed the queue's maximum size (the \fImsg_qbytes\fP field). +新しいメッセージをそのキューに追加すると、 そのキューの全バイト数がキューの最大サイズ (\fImsg_qbytes\fP フィールド) +を超過してしまう場合。 .IP * -Adding another message to the queue would cause the total number of messages -in the queue to exceed the queue's maximum size (the \fImsg_qbytes\fP field). -This check is necessary to prevent an unlimited number of zero\-length -messages being placed on the queue. Although such messages contain no data, -they nevertheless consume (locked) kernel memory. +そのキューにもう一つメッセージを追加すると、 そのキューが全メッセージ数がキューの最大サイズ (\fImsg_qbytes\fP フィールド) +を超過してしまう場合。 このチェックは、無限個の長さ 0 のメッセージをそのキューに追加するのを防ぐために必要である。 長さ 0 +のメッセージはデータを含まないが、 (ロックされた) カーネルメモリを消費するからである。 .PP -If insufficient space is available in the queue, then the default behavior -of \fBmsgsnd\fP() is to block until space becomes available. If \fBIPC_NOWAIT\fP -is specified in \fImsgflg\fP, then the call instead fails with the error -\fBEAGAIN\fP. +そのキューに十分な領域がない場合、 デフォルトの動作では、 必要な領域ができるまで \fBmsgsnd\fP() は停止 (block) する。 +\fImsgflg\fP に \fBIPC_NOWAIT\fP が指定された場合、 \fBmsgsnd\fP() はエラー \fBEAGAIN\fP で失敗する。 停止している \fBmsgsnd\fP() は以下の場合にも失敗する。 .IP * 2 @@ -119,7 +112,7 @@ is specified in \fImsgflg\fP, then the call instead fails with the error は、たとえシグナルハンドラの設定時に \fBSA_RESTART\fP を指定していたとしても、シグナルハンドラによって割り込まれた後で 自動的に再スタートすることは決してない。) .PP -正常に終了した場合、メッセージ・キューのデータ構造体は以下のように 更新される: +正常に終了した場合、メッセージキューのデータ構造体は以下のように 更新される: .IP \fImsg_lspid\fP には呼び出し元プロセスのプロセス ID が設定される。 .IP @@ -175,13 +168,13 @@ is specified in \fImsgflg\fP, then the call instead fails with the error .IP * 2 要求している型のメッセージがキューへ入れられた。 .IP * -メッセージ・キューがシステムから削除された。 この場合、システムコールは失敗し、 \fIerrno\fP に \fBEIDRM\fP が設定される。 +メッセージキューがシステムから削除された。 この場合、システムコールは失敗し、 \fIerrno\fP に \fBEIDRM\fP が設定される。 .IP * 呼び出し元プロセスがシグナルを捕獲した。 この場合、システムコールは失敗し、 \fIerrno\fP に \fBEINTR\fP が設定される。 (\fBmsgrcv\fP() は、たとえシグナルハンドラの設定時に \fBSA_RESTART\fP を指定していたとしても、シグナルハンドラによって割り込まれた後で 自動的に再スタートすることは決してない。) .PP -正常に終了した場合、メッセージ・キューのデータ構造体は以下のように 更新される: +正常に終了した場合、メッセージキューのデータ構造体は以下のように 更新される: .IP \fImsg_lrpid\fP には呼び出し元プロセスのプロセス ID が設定される。 .IP @@ -195,7 +188,7 @@ is specified in \fImsgflg\fP, then the call instead fails with the error \fBmsgsnd\fP() が失敗した場合、 \fBerrno\fP に以下の値のいずれかが設定される: .TP \fBEACCES\fP -呼び出し元プロセスにはメッセージ・キューに対する書き込み許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティもない。 +呼び出し元プロセスにはメッセージキューに対する書き込み許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティもない。 .TP \fBEAGAIN\fP \fImsg_qbytes\fP がキューの制限を超えていたため、メッセージを送ることができず、かつ \fImsgflg\fP に \fBIPC_NOWAIT\fP @@ -205,10 +198,10 @@ is specified in \fImsgflg\fP, then the call instead fails with the error \fImsgp\fP が指しているアドレスがアクセス可能でない。 .TP \fBEIDRM\fP -メッセージ・キューが削除された。 +メッセージキューが削除された。 .TP \fBEINTR\fP -メッセージ・キューが要求した条件を満たすまで停止している時に、 プロセスがシグナルを捕獲した。 +メッセージキューが要求した条件を満たすまで停止している時に、 プロセスがシグナルを捕獲した。 .TP \fBEINVAL\fP \fImsqid\fP が不適切な値であるか、 \fImtype\fP が正の値でないか、 \fImsgsz\fP が不適切な値 (0 以下か、システムで決まる値 @@ -223,7 +216,7 @@ is specified in \fImsgflg\fP, then the call instead fails with the error メッセージのテキストの長さが \fImsgsz\fP よりも大きく、 \fImsgflg\fP に \fBMSG_NOERROR\fP が設定されていなかった。 .TP \fBEACCES\fP -呼び出し元プロセスにはメッセージ・キューに対する読み込み許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティもない。 +呼び出し元プロセスにはメッセージキューに対する読み込み許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティもない。 .TP \fBEAGAIN\fP キューにはメッセージがなく、 \fImsgflg\fP に \fBIPC_NOWAIT\fP が指定された。 @@ -232,7 +225,7 @@ is specified in \fImsgflg\fP, then the call instead fails with the error \fImsgp\fP が指しているアドレスがアクセス可能でない。 .TP \fBEIDRM\fP -メッセージを受信するためにプロセスが停止している間に、 メッセージ・キューが削除された。 +メッセージを受信するためにプロセスが停止している間に、 メッセージキューが削除された。 .TP \fBEINTR\fP メッセージを受けるためにプロセスが停止している間に、 プロセスがシグナルを捕獲した。 \fBsignal\fP(7) 参照。 @@ -247,7 +240,7 @@ is specified in \fImsgflg\fP, then the call instead fails with the error \fImsgflg\fP に \fBMSG_COPY\fP と \fBMSG_EXCEPT\fP の両方が指定された。 .TP \fBENOMSG\fP -\fImsgflg\fP に \fBIPC_NOWAIT\fP が設定されており、 メッセージ・キューに要求された型のメッセージが存在しなかった。 +\fImsgflg\fP に \fBIPC_NOWAIT\fP が設定されており、 メッセージキューに要求された型のメッセージが存在しなかった。 .TP \fBENOMSG\fP \fBIPC_NOWAIT\fP と \fBMSG_COPY\fP が \fImsgflg\fP に指定されたが、 キューには \fImsgtyp\fP @@ -279,15 +272,13 @@ Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI 経由で読み出したり変更したりできる)。 .TP \fBMSGMNB\fP -Default maximum size in bytes of a message queue: 16384 bytes (on Linux, -this limit can be read and modified via \fI/proc/sys/kernel/msgmnb\fP). A -privileged process (Linux: a process with the \fBCAP_SYS_RESOURCE\fP -capability) can increase the size of a message queue beyond \fBMSGMNB\fP by a -\fBmsgctl\fP(2) system call. +バイト単位でのメッセージキューのデフォルトの最大サイズ : 16384 バイト。 (Linux では、この制限値は +\fI/proc/sys/kernel/msgmnb\fP 経由で読み出したり変更したりできる)。 特権プロセス (Linux ではケーパビリティ +\fBCAP_SYS_RESOURCE\fP を持ったプロセス) は \fBmsgctl\fP(2) システムコールでメッセージキューのサイズを +\fBMSGMNB\fP よりも大きい値に増やすことができる。 .PP -The implementation has no intrinsic system\-wide limits on the number of -message headers (\fBMSGTQL\fP) and the number of bytes in the message pool -(\fBMSGPOOL\fP). +現在の実装では、システム全体のメッセージ・ヘッダーの上限数 (\fBMSGTQL\fP) と、システム全体のメッセージ・プールの最大バイト数 +(\fBMSGPOOL\fP) に関して実装依存の制限はない。 .SH バグ .\" FIXME http://marc.info/?l=linux-kernel&m=139048542803605&w=2 .\" commit 4f87dac386cc43d5525da7a939d4b4e7edbea22c diff --git a/draft/man2/recv.2 b/draft/man2/recv.2 index f2bdd283..0f309b33 100644 --- a/draft/man2/recv.2 +++ b/draft/man2/recv.2 @@ -234,8 +234,8 @@ from a successful call, \fImsg_name\fP will contain the length of the returned address. If the application does not need to know the source address, \fImsg_name\fP can be specified as NULL. -\fImsg_iov\fP と \fImsg_iovlen\fP フィールドは、分解/結合用のベクトル (scatter\-gather locations) -を指定する。 \fBreadv\fP(2) に説明がある。 +\fImsg_iov\fP と \fImsg_iovlen\fP フィールドは scatter\-gather 用の場所を指定する。 \fBreadv\fP(2) +に説明がある。 \fImsg_control\fP フィールドは \fImsg_controllen\fP の長さを持ち、他のプロトコル制御メッセージや 種々の補助データのためのバッファへのポインタである。 \fBrecvmsg\fP() を呼ぶ際には、 \fImsg_controllen\fP に diff --git a/draft/man2/sched_get_priority_max.2 b/draft/man2/sched_get_priority_max.2 index 0659f2af..46f62482 100644 --- a/draft/man2/sched_get_priority_max.2 +++ b/draft/man2/sched_get_priority_max.2 @@ -56,11 +56,11 @@ sched_get_priority_max, sched_get_priority_min \- 静的プライオリティの 数値的に大きなプライオリティ値を持つプロセスは小さな プライオリティ値を持つプロセスより前にスケジュールされる。 このため \fBsched_get_priority_max\fP() が返す値は \fBsched_get_priority_min\fP() が返す値よりも大きい。 -Linux allows the static priority range 1 to 99 for the \fBSCHED_FIFO\fP and -\fBSCHED_RR\fP policies, and the priority 0 for the remaining policies. -Scheduling priority ranges for the various policies are not alterable. +Linux では、 ポリシー \fBSCHED_FIFO\fP と \fBSCHED_RR\fP では 1 から 99 +の範囲の静的プライオリティーを持ち、それ以外のポリシーでは プライオリティとして 0 を持つ。 それぞれの方針のスケジューリングプライオリティの範囲は +変更することができない。 -スケジューリング・プライオリティの範囲は他の POSIX システムと 異なっているかもしれない。それで、移植性(portable)のある +スケジューリングプライオリティの範囲は他の POSIX システムと 異なっているかもしれない。それで、移植性(portable)のある アプリケーションでは仮想的な範囲を用い \fBsched_get_priority_max\fP() と \fBsched_get_priority_min\fP() で与えられた間隔にマップして使用することはいい考えである。 POSIX.1\-2001 では \fBSCHED_FIFO\fP と \fBSCHED_RR\fP における 最大値と最小値の間隔を少なくとも 32 にすることを要求している。 diff --git a/draft/man2/sched_rr_get_interval.2 b/draft/man2/sched_rr_get_interval.2 index 6048a8d4..880a270e 100644 --- a/draft/man2/sched_rr_get_interval.2 +++ b/draft/man2/sched_rr_get_interval.2 @@ -86,7 +86,7 @@ struct timespec { PID が不正である。 .TP \fBENOSYS\fP -システム・コールがまだ実装されていない (かなり古いカーネルにおいてのみ)。 +システムコールがまだ実装されていない (かなり古いカーネルにおいてのみ)。 .TP \fBESRCH\fP プロセス ID が \fIpid\fP のプロセスが見つからなかった。 diff --git a/draft/man2/sched_setaffinity.2 b/draft/man2/sched_setaffinity.2 index 76ef26f7..ce9915e1 100644 --- a/draft/man2/sched_setaffinity.2 +++ b/draft/man2/sched_setaffinity.2 @@ -62,11 +62,11 @@ sched_setaffinity, sched_getaffinity \- スレッドの CPU affinity マスク .fi .SH 説明 スレッドの CPU affinity (親和度) マスクは、そのスレッドが 実行を許可されている CPU の集合を決定する。 -マルチプロセッサ・システムでは、CPU affinity マスクを設定することで 性能上のメリットを得られる可能性がある。 -例えば、特定のスレッドを一つの CPU に括り付け (すなわち、そのスレッドの affinity マスクを一つの CPU に設定し)、 -他の全てのスレッドの affinity マスクからその CPU を除外することで、 確実にそのスレッドの実行速度を最大にすることができる。 -また、あるスレッドの実行を一つの CPU に限定することで、 一つの CPU での実行を停止してから別の CPU で実行を再開するときに発生する -キャッシュ無効化 (cache invalidation) による性能面の劣化を避けることもできる。 +マルチプロセッサシステムでは、CPU affinity マスクを設定することで 性能上のメリットを得られる可能性がある。 例えば、特定のスレッドを一つの +CPU に括り付け (すなわち、そのスレッドの affinity マスクを一つの CPU に設定し)、 他の全てのスレッドの affinity +マスクからその CPU を除外することで、 確実にそのスレッドの実行速度を最大にすることができる。 また、あるスレッドの実行を一つの CPU +に限定することで、 一つの CPU での実行を停止してから別の CPU で実行を再開するときに発生する キャッシュ無効化 (cache +invalidation) による性能面の劣化を避けることもできる。 CPU affinity マスクは「CPU の集合」を表す \fIcpu_set_t\fP 構造体で表現され、 \fIcpu_set_t\fP へのポインタ \fImask\fP で指定される。 CPU 集合を操作するためのマクロ群については \fBCPU_SET\fP(3) で記載されている。 @@ -127,7 +127,7 @@ API を使用している場合、 \fBsched_setaffinity\fP() の代わりに \f \fBexecve\fP(2) の前後で保存される。 このマニュアルページでは CPU affinity コールの glibc インタフェースを -説明している。実際のシステムコール・インタフェースは少し違っており、 実際の実装では CPU 集合は簡単なビットマスクであるという実状を反映し、 +説明している。実際のシステムコールインタフェースは少し違っており、 実際の実装では CPU 集合は簡単なビットマスクであるという実状を反映し、 \fImask\fP の型が \fIunsigned long\ *\fP となっている。 成功時には、生の \fBsched_getaffinity\fP() システムコール自身は \fIcpumask_t\fP データ型の (バイト単位の) 大きさを返す。 \fIcpumask_t\fP はカーネル内部で CPU 集合のビットマスクを表現するのに 使われているデータ型である。 diff --git a/draft/man2/sched_setparam.2 b/draft/man2/sched_setparam.2 index 57b95f41..5f3ff198 100644 --- a/draft/man2/sched_setparam.2 +++ b/draft/man2/sched_setparam.2 @@ -42,7 +42,7 @@ .\" .TH SCHED_SETPARAM 2 2014\-05\-11 Linux "Linux Programmer's Manual" .SH 名前 -sched_setparam, sched_getparam \- スケジューリング・パラメータの設定と取得を行なう +sched_setparam, sched_getparam \- スケジューリングパラメータの設定と取得を行なう .SH 書式 .nf \fB#include \fP @@ -59,11 +59,11 @@ sched_setparam, sched_getparam \- スケジューリング・パラメータの .fi .SH 説明 \fBsched_setparam\fP() は \fIpid\fP で指定されたプロセスのスケジューリング方針 (scheduling policy) に -関連するスケジューリング・パラメータを設定する。 \fIpid\fP が 0 ならば、呼び出し元のプロセスのパラメータが設定される。 引き数 \fIparam\fP +関連するスケジューリングパラメータを設定する。 \fIpid\fP が 0 ならば、呼び出し元のプロセスのパラメータが設定される。 引き数 \fIparam\fP の解釈は、 \fIpid\fP で指定されたプロセスのスケジューリング方針によって異なる。 Linux でサポートされているスケジューリング方針の説明は \fBsched\fP(7) を参照のこと。 -\fBsched_getparam\fP() は \fIpid\fP で指定されたプロセスのスケジューリング・パラメータを取得する。 \fIpid\fP が 0 +\fBsched_getparam\fP() は \fIpid\fP で指定されたプロセスのスケジューリングパラメータを取得する。 \fIpid\fP が 0 ならば、呼び出し元のプロセスのパラメータを取得する。 \fBsched_setparam\fP() はスレッドのスケジューリング方針における \fIparam\fP の妥当性をチェックする。 @@ -80,7 +80,7 @@ sched_setparam, sched_getparam \- スケジューリング・パラメータの .SH エラー .TP \fBEINVAL\fP -Invalid arguments: \fIparam\fP is NULL or \fIpid\fP is negative +無効な引き数: \fIparam\fP が NULL である、または \fIpid\fP が負である。 .TP \fBEINVAL\fP (\fBsched_setparam\fP()) 引き数 \fIparam\fP が現在のスケジューリング方針においては 無意味である。 diff --git a/draft/man2/sched_setscheduler.2 b/draft/man2/sched_setscheduler.2 index ccc7d5a0..728cdf5b 100644 --- a/draft/man2/sched_setscheduler.2 +++ b/draft/man2/sched_setscheduler.2 @@ -47,7 +47,7 @@ .\" .TH SCHED_SETSCHEDULER 2 2014\-05\-21 Linux "Linux Programmer's Manual" .SH 名前 -sched_setscheduler, sched_getscheduler \- スケジューリング・ポリシーとパラメータを設定/取得する +sched_setscheduler, sched_getscheduler \- スケジューリングポリシーとパラメータを設定/取得する .SH 書式 .nf \fB#include \fP @@ -60,10 +60,9 @@ sched_setscheduler, sched_getscheduler \- スケジューリング・ポリシ .sp .fi .SH 説明 -The \fBsched_setscheduler\fP() system call sets both the scheduling policy and -parameters for the thread whose ID is specified in \fIpid\fP. If \fIpid\fP equals -zero, the scheduling policy and parameters of the calling thread will be -set. +\fBsched_setscheduler\fP() システムコールは、 \fIpid\fP で指定された ID +を持つスレッドのスケジューリングポリシーとスケジューリングパラメーターの両方を設定する。 \fIpid\fP が 0 +の場合、呼び出したスレッド自身のスケジューリングポリシーとスケジューリングパラメーターが設定される。 The scheduling parameters are specified in the \fIparam\fP argument, which is a pointer to a structure of the following form: @@ -88,21 +87,19 @@ scheduling policies as values that may be specified in \fIpolicy\fP: \fBSCHED_OTHER\fP .\" In the 2.6 kernel sources, SCHED_OTHER is actually called .\" SCHED_NORMAL. -標準の、ラウンドロビンによる時分割型のスケジューリング・ポリシー。 +標準の、ラウンドロビンによる時分割型のスケジューリングポリシー。 .TP \fBSCHED_BATCH\fP 「バッチ」形式でのプロセスの実行用。 .TP \fBSCHED_IDLE\fP -「非常に」低い優先度で動作するバックグラウンド・ジョブ用。 +「非常に」低い優先度で動作するバックグラウンドジョブ用。 .PP For each of the above policies, \fIparam\->sched_priority\fP must be 0. -Various "real\-time" policies are also supported, for special time\-critical -applications that need precise control over the way in which runnable -threads are selected for execution. For the rules governing when a process -may use these policies, see \fBsched\fP(7). The real\-time policies that may be -specified in \fIpolicy\fP are: +どの実行可能スレッドを選択するかについて、より正確な制御を必要とする 時間の制約が厳しい特別なアプリケーション用として、 +いろいろな「リアルタイム」ポリシーもサポートされている。 プロセスがこれらのポリシーをいつ使用できるかを決めるルールについては、\fBsched\fP(7) +を参照。 \fIpolicy\fP には以下のリアルタイムポリシーを指定できる。 .TP 14 \fBSCHED_FIFO\fP ファーストイン、ファーストアウト型のポリシー。 @@ -116,21 +113,19 @@ by calling \fBsched_get_priority_min\fP(2) and \fBsched_get_priority_min\fP(2) with the specified \fIpolicy\fP. On Linux, these system calls return, respectively, 1 and 99. -Since Linux 2.6.32, the \fBSCHED_RESET_ON_FORK\fP flag can be ORed in \fIpolicy\fP -when calling \fBsched_setscheduler\fP(). As a result of including this flag, -children created by \fBfork\fP(2) do not inherit privileged scheduling -policies. See \fBsched\fP(7) for details. +Linux 2.6.32 以降では、 \fBsched_setscheduler\fP() を呼び出す際に \fIpolicy\fP に +\fBSCHED_RESET_ON_FORK\fP フラグを OR で指定できる。このフラグが指定されると、 \fBfork\fP(2) +で作成された子プロセスは特権が必要なスケジューリングポリシーを継承しない。 詳細は \fBsched\fP(7) を参照。 -\fBsched_getscheduler\fP() returns the current scheduling policy of the thread -identified by \fIpid\fP. If \fIpid\fP equals zero, the policy of the calling -thread will be retrieved. +\fBsched_getscheduler\fP() は \fIpid\fP で識別されるスレッドの現在のスケジューリングポリシーを返す。\fIpid\fP が 0 +ならば、呼び出した スレッド自身のスケジューリングポリシーが返される。 .SH 返り値 成功した場合、 \fBsched_setscheduler\fP() は 0 を返す。 成功した場合、 \fBsched_getscheduler\fP() は現在のそのスレッドのポリシー (非負の整数) を返す。 エラーの場合、 どちらのコールも \-1 を返し、 \fIerrno\fP が適切に設定される。 .SH エラー .TP \fBEINVAL\fP -Invalid arguments: \fIpid\fP is negative or \fIparam\fP is NULL. +無効な引き数: \fIpid\fP が負である、または \fIparam\fP が NULL である。 .TP \fBEINVAL\fP (\fBsched_setscheduler\fP()) \fIpolicy\fP が認識できるポリシーではない。 @@ -164,7 +159,7 @@ Linux では、 スケジューリングポリシーとスケジューリング システムコールの代わりに \fBpthread_setschedparam\fP(3), \fBpthread_getschedparam\fP(3), and \fBpthread_setschedprio\fP(3) を使用すること)。 .SH バグ -POSIX では、成功時に \fBsched_setscheduler\fP() は直前のスケジューリング・ポリシーを返すべきとされている。 Linux の +POSIX では、成功時に \fBsched_setscheduler\fP() は直前のスケジューリングポリシーを返すべきとされている。 Linux の \fBsched_setscheduler\fP() はこの要求仕様に準拠しておらず、 成功時には常に 0 を返す。 .SH 関連項目 .ad l diff --git a/draft/man2/semget.2 b/draft/man2/semget.2 index ba85c95c..780f6018 100644 --- a/draft/man2/semget.2 +++ b/draft/man2/semget.2 @@ -159,14 +159,13 @@ operation. Where multiple peers do not know who will be the first to initialize the set, checking for a nonzero \fIsem_otime\fP in the associated data structure retrieved by a \fBsemctl\fP(2) \fBIPC_STAT\fP operation can be used to avoid races. -.SS "Semaphore limits" -セマフォ集合のリソースに関する制限のうち、 \fBsemget\fP() に影響を及ぼすものを以下に挙げる: +.SS セマフォの上限 +セマフォ集合のリソースに関する上限のうち、 \fBsemget\fP() に影響を及ぼすものを以下に挙げる: .TP \fBSEMMNI\fP .\" This /proc file is not available in Linux 2.2 and earlier -- MTK -System\-wide limit on the number of semaphore sets: policy dependent (on -Linux, this limit can be read and modified via the fourth field of -\fI/proc/sys/kernel/sem\fP). +システム全体のセマフォ集合の上限数: 方針依存 (Linux では、この制限値は \fI/proc/sys/kernel/sem\fP +の第4フィールドに対応し、読み出しも変更もできる)。 .TP \fBSEMMSL\fP セマフォ ID あたりのセマフォの最大数: 実装依存 (Linux では、この制限値は \fI/proc/sys/kernel/sem\fP diff --git a/draft/man2/semop.2 b/draft/man2/semop.2 index 10dfb03e..cdc84062 100644 --- a/draft/man2/semop.2 +++ b/draft/man2/semop.2 @@ -220,7 +220,7 @@ Linux や POSIX の全てのバージョンでは、 \fI\fP と \fI .PP あるセマフォの \fIsemval\fP, \fIsempid\fP, \fIsemzcnt\fP, \fIsemnct\fP の値はいずれも、適切な操作を指定して \fBsemctl\fP(2) を呼び出すことで取得できる。 -.SS "Semaphore limits" +.SS セマフォの上限 セマフォ集合のリソースに関する制限のうち、 \fBsemop\fP() に影響を及ぼすものを以下に挙げる: .TP \fBSEMOPM\fP diff --git a/draft/man2/send.2 b/draft/man2/send.2 index 7704e7bd..f5834f64 100644 --- a/draft/man2/send.2 +++ b/draft/man2/send.2 @@ -144,8 +144,7 @@ Linux 2.6 以降では、このフラグは UDP ソケットでもサポート \fI帯域外 (out\-of\-band)\fP データをサポートするソケット (例えば \fBSOCK_STREAM\fP) で \fI帯域外\fP データを送る。下位プロトコルも \fI帯域外\fP データをサポートしている必要がある。 .SS sendmsg() -The definition of the \fImsghdr\fP structure employed by \fBsendmsg\fP() is as -follows: +\fBsendmsg\fP() で利用されている \fImsghdr\fP 構造体は以下の通り。 .in +4n .nf @@ -166,17 +165,17 @@ address for a datagram. It points to a buffer containing the address; the \fImsg_name\fP field should be set to the size of the address. For a connected socket, these fields should be specified as NULL and 0, respectively. -The \fImsg_iov\fP and \fImsg_iovlen\fP fields specify scatter\-gather locations, as -for \fBwritev\fP(2). +フィールド \fBmsg_iov\fP と \fImsg_iovlen\fP は scatter\-gather 用の場所を指定する。 \fBwritev\fP(2) +と同じ。 -\fImsg_control\fP と \fImsg_controllen\fP メンバーを使用して制御情報を送信することができる。 +フィールド \fImsg_control\fP と \fImsg_controllen\fP を使用して制御情報を送信することができる。 カーネルが処理できる制御バッファのソケットあたりの最大長は、 \fI/proc/sys/net/core/optmem_max\fP の値に制限されている。 \fBsocket\fP(7) を参照。 .\" Still to be documented: .\" Send file descriptors and user credentials using the .\" msg_control* fields. -The \fImsg_flags\fP field is ignored. +フィールド \fImsg_flags\fP は無視される。 .SH 返り値 成功した場合、これらのシステムコールは送信されたバイト数を返す。 エラーの場合、 \-1 を返し、 \fIerrno\fP を適切に設定にする。 .SH エラー diff --git a/draft/man2/set_mempolicy.2 b/draft/man2/set_mempolicy.2 index fce21154..599dc71b 100644 --- a/draft/man2/set_mempolicy.2 +++ b/draft/man2/set_mempolicy.2 @@ -73,10 +73,9 @@ NUMA (非対称メモリアクセス) マシンでは、CPU により メモリ \fImode\fP 引き数には、追加で \fIモードフラグ\fP を含めることもできる。 サポートされている \fIモードフラグ\fP は以下の通りである。 .TP \fBMPOL_F_STATIC_NODES\fP (Linux 2.6.26 以降) -A nonempty \fInodemask\fP specifies physical node ids. Linux will not remap -the \fInodemask\fP when the process moves to a different cpuset context, nor -when the set of nodes allowed by the process's current cpuset context -changes. +空でない \fInodemask\fP は、物理ノード ID である。 Linux では、そのプロセスが異なる CPU 集合コンテキスト (cpuset +context) に移動した場合でも、そのプロセスの現在の CPU 集合コンテキストで 許可されているノード集合が変化した場合でも、 +\fInodemask\fP をマッピングし直すことはない。 .TP \fBMPOL_F_RELATIVE_NODES\fP (Linux 2.6.26 以降) 空でない \fInodemask\fP は、そのプロセスの現在の CPU 集合で許可されているノード ID 集合 における相対的なノード ID である。 diff --git a/draft/man2/stat.2 b/draft/man2/stat.2 index 232e3426..49376e3f 100644 --- a/draft/man2/stat.2 +++ b/draft/man2/stat.2 @@ -93,9 +93,9 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 .sp \fBlstat\fP(): .RS 4 -/* glibc 2.19 and earlier */ _BSD_SOURCE || +/* glibc 2.19 以前 */ _BSD_SOURCE || .br -/* Since glibc 2.20 */_DEFAULT_SOURCE || +/* glibc 2.20 以降 */_DEFAULT_SOURCE || .br _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED .br @@ -199,8 +199,7 @@ glibc とカーネルのソースを調べてほしい。 \fIst_ctime\fP フィールドは書き込みや inode 情報 (所有者、グループ、リンク数、モードなど) の 設定によって変更される。 .PP -The following mask values are defined for the file type component of the -\fIst_mode\fP field: +以下のマスク値が \fIst_mode\fP フィールドのファイル種別の検査用に定義されている。 .in +4n .TS lB l l. @@ -216,7 +215,7 @@ S_IFIFO 0010000 FIFO .TE .in .PP -Thus, to test for a regular file (for example), one could write: +したがって、(例えば) 通常のファイルかどうかを検査するには、以下のようにすればよい。 .nf .in +4n @@ -227,9 +226,8 @@ if ((sb.st_mode & S_IFMT) == S_IFREG) { .in .fi .PP -Because tests of the above form are common, additional macros are defined by -POSIX to allow the test of the file type in \fIst_mode\fP to be written more -concisely: +上記の形の検査はよくあるので、 POSIX では以下のマクロが定義されており、 \fIst_mode\fP +のファイル種別の検査をより簡単に書けるようになっている。 .RS 4 .TP 1.2i \fBS_ISREG\fP(m) @@ -254,7 +252,7 @@ FIFO (名前付きパイプ) か? ソケットか? (POSIX.1\-1996 にはない) .RE .PP -The preceding code snippet could thus be rewritten as: +上で挙げたコードは以下のように書き換えることができる。 .nf .in +4n @@ -265,21 +263,17 @@ if (S_ISREG(sb.st_mode)) { .in .fi .PP -The definitions of most of the above file type test macros are provided if -any of the following feature test macros are defined: \fB_BSD_SOURCE\fP (in -glibc 2.19 and earlier), \fB_SVID_SOURCE\fP (in glibc 2.19 and earlier), or -\fB_DEFAULT_SOURCE\fP (in glibc 2.20 and later). In addition, definitions of -all of the above macros except \fBS_IFSOCK\fP and \fBS_ISSOCK\fP() are provided -if \fB_XOPEN_SOURCE\fP is defined. The definition of \fBS_IFSOCK\fP can also be -exposed by defining \fB_XOPEN_SOURCE\fP with a value of 500 or greater. - -The definition of \fBS_ISSOCK\fP() is exposed if any of the following feature -test macros is defined: \fB_BSD_SOURCE\fP (in glibc 2.19 and earlier), -\fB_DEFAULT_SOURCE\fP (in glibc 2.20 and later), \fB_XOPEN_SOURCE\fP with a value -of 500 or greater, or \fB_POSIX_C_SOURCE\fP with a value of 200112L or greater. +上記のほとんどのファイル種別検査マクロの定義は、 機能検査マクロ \fB_BSD_SOURCE\fP (glibc 2.19 以前の場合)、 +\fB_SVID_SOURCE\fP (glibc 2.19 以前の場合)、 \fB_DEFAULT_SOURCE\fP (glibc 2.20 以降の場合) +のいずれかが定義されている場合に公開される。 さらに、 \fBS_IFSOCK\fP と \fBS_ISSOCK\fP 以外の上記のすべてのマクロの定義は +\fB_XOPEN_SOURCE\fP が定義されている場合にも公開される。 \fBS_IFSOCK\fP の定義は \fB_XOPEN_SOURCE\fP が値 500 +以上で定義された場合にも公開される。 + +\fBS_ISSOCK\fP() の定義が公開されるのは以下の機能検査マクロが定義されている場合である: \fB_BSD_SOURCE\fP (glibc 2.19 +以前の場合)、 \fB_DEFAULT_SOURCE\fP (glibc 2.20 以降の場合)、 値 500 以上の \fB_XOPEN_SOURCE\fP、 +値が 200112L 以上の \fB_POSIX_C_SOURCE\fP。 .PP -The following mask values are defined for the file permissions component of -the \fIst_mode\fP field: +以下のマスク値が \fIst_mode\fP フィールドのファイルのアクセス許可の検査用に定義されている。 .in +4n .TS lB l l. @@ -287,32 +281,30 @@ S_ISUID 0004000 set\-user\-ID bit S_ISGID 0002000 set\-group\-ID bit (下記参照) S_ISVTX 0001000 スティッキー・ビット (下記参照) -S_IRWXU 00700 mask for file owner permissions -S_IRUSR 00400 owner has read permission -S_IWUSR 00200 owner has write permission -S_IXUSR 00100 owner has execute permission +S_IRWXU 00700 ファイル所有者のアクセス許可用のビットマスク +S_IRUSR 00400 所有者の読み込み許可 +S_IWUSR 00200 所有者の書き込み許可 +S_IXUSR 00100 所有者の実行許可 -S_IRWXG 00070 mask for group permissions -S_IRGRP 00040 group has read permission -S_IWGRP 00020 group has write permission -S_IXGRP 00010 group has execute permission +S_IRWXG 00070 グループのアクセス許可用のビットマスク +S_IRGRP 00040 グループの読み込み許可 +S_IWGRP 00020 グループの書き込み許可 +S_IXGRP 00010 グループの実行許可 S_IRWXO 00007 T{ 他人 (others) のアクセス許可用のビットマスク T} -S_IROTH 00004 others have read permission -S_IWOTH 00002 others have write permission -S_IXOTH 00001 others have execute permission +S_IROTH 00004 他人の読み込み許可 +S_IWOTH 00002 他人の書き込み許可 +S_IXOTH 00001 他人の実行許可 .TE .in .P -The set\-group\-ID bit (\fBS_ISGID\fP) has several special uses. For a -directory, it indicates that BSD semantics is to be used for that directory: -files created there inherit their group ID from the directory, not from the -effective group ID of the creating process, and directories created there -will also get the \fBS_ISGID\fP bit set. For a file that does not have the -group execution bit (\fBS_IXGRP\fP) set, the set\-group\-ID bit indicates -mandatory file/record locking. +set\-group\-ID bit (\fBS_ISGID\fP) にはいくつかの特殊な使用法がある: ディレクトリに設定した場合には、そのディレクトリが +BSD 方式で使用される ことを示す。つまり、そのディレクトリに作成されたファイルのグループID は 作成したプロセスの実効 (effective) +グループID ではなく、ディレクトリの グループID を継承する。また、そのディレクトリに作成されたディレクトリにも \fBS_ISGID\fP +ビットが設定される。グループ実行ビット (\fBS_IXGRP\fP) が設定されていないファイルに設定された場合は、 set\-group\-ID +ビットはファイル/レコードの 強制的な (mandatory) ロックを表す。 .P .\" .\" diff --git a/draft/man3/inet.3 b/draft/man3/inet.3 index 9de45415..774f3c37 100644 --- a/draft/man3/inet.3 +++ b/draft/man3/inet.3 @@ -109,16 +109,14 @@ notation)\fP と呼ぶ。 また、10 進数 4 つだけを使った形式を \f dotted\-decimal notation)\fP と呼ぶ (\fIIPv4 のドット区切り 4 分割表記 (IPv4 dotted\-decimal notation)\fP と呼ぶこともある)。 -\fBinet_aton\fP() returns 1 if the supplied string was successfully -interpreted, or 0 if the string is invalid (\fBerrno\fP is \fInot\fP set on -error). +\fBinet_aton\fP() は渡された文字列が正常に解釈できた場合 1 を返し、 文字列が不正な場合 0 を返す (エラーの場合に \fBerrno\fP +はセット\fIされない\fP)。 .PP -The \fBinet_addr\fP() function converts the Internet host address \fIcp\fP from -IPv4 numbers\-and\-dots notation into binary data in network byte order. If -the input is invalid, \fBINADDR_NONE\fP (usually \-1) is returned. Use of this -function is problematic because \-1 is a valid address (255.255.255.255). -Avoid its use in favor of \fBinet_aton\fP(), \fBinet_pton\fP(3), or -\fBgetaddrinfo\fP(3), which provide a cleaner way to indicate error return. +\fBinet_addr\fP() 関数は、インターネットホストのアドレス \fIcp\fP を、 IPv4 +の数値とドットによる表記からネットワークバイトオーダでの バイナリ値へ変換して返す。 入力が不正な場合、 \fBINADDR_NONE\fP (普通は \-1) +を返す。 \-1 は有効なアドレス (255.255.255.255) なので、この関数を使うと 問題になるかもしれない。 +この関数を使うのは避け、代わりに \fBinet_aton\fP(), \fBinet_pton\fP(3), \fBgetaddrinfo\fP(3) +を使うのがよい。 これらの関数の方が、エラーの通知がよりきれいな方法で行われる。 .PP \fBinet_network\fP() 関数は、 IPv4 の数値とドットによる表記の文字列 \fIcp\fP を、 インターネットアドレスとしての使用に適した ホストバイトオーダの数値に変換する。 成功すると、変換されたアドレスを返す。 入力が不正な場合は \-1 を返す。 diff --git a/draft/man3/malloc.3 b/draft/man3/malloc.3 index 386b9d09..3ac92e08 100644 --- a/draft/man3/malloc.3 +++ b/draft/man3/malloc.3 @@ -133,8 +133,7 @@ UNIX 98 標準では、 \fBmalloc\fP(), \fBcalloc\fP(), \fBrealloc\fP() は実 \fBmalloc\fP(), \fBcalloc\fP(), \fBrealloc\fP(), \fBfree\fP() における事故は、 ほとんどの場合はヒープの破壊 (corruption) が原因である。 例えば、割り当てられた領域をオーバーフローする、 同じポインタに二度 free する、などがこれにあたる。 .PP -The \fBmalloc\fP() implementation is tunable via environment variables; see -\fBmallopt\fP(3) for details. +\fBmalloc\fP 実装は、環境変数で動作を調整できる。 詳細は \fBmallopt\fP(3) を参照のこと。 .SH 関連項目 .\" http://g.oswego.edu/dl/html/malloc.html .\" A Memory Allocator - by Doug Lea diff --git a/draft/man3/pthread_setcancelstate.3 b/draft/man3/pthread_setcancelstate.3 index 1d4313ff..ab85d03f 100644 --- a/draft/man3/pthread_setcancelstate.3 +++ b/draft/man3/pthread_setcancelstate.3 @@ -113,7 +113,7 @@ POSIX.1\-2001. 可能性のある操作の前後で cancelability を無効にしたりする際には 注意すること。なぜなら、無効にしてしまうと、キャンセル要求に対して スレッドが応答しない状態になってしまうからである。 -.SS "Asynchronous cancelability" +.SS 非同期キャンセル cancelability type を \fBPTHREAD_CANCEL_ASYNCHRONOUS\fP に設定して役に立つことはめったにない。スレッドは\fIいつでも\fPキャンセルすることができることになるので、スレッドが安全にリソースの確保 (例えば \fBmalloc\fP(3) でメモリを割り当てる) や @@ -127,7 +127,7 @@ mutex、セマフォ、ロックなどの獲得を行うことができない。 一般的には、それ以外のライブラリ関数は、非同期にキャンセルできるスレッドから安全に呼び出すことはできない。 非同期でのキャンセルが有効な数少ない状況としては、純粋に計算だけを行うループに入っているスレッドをキャンセルするといった場面がある。 -.SS "Portability notes" +.SS 移植性に関する注意 .\" It looks like at least Solaris, FreeBSD and Tru64 support this. Linux のスレッド実装では、 \fBpthread_setcancelstate\fP() の \fIoldstate\fP 引き数に NULL を指定することを認めている。 NULL が指定された場合、 diff --git a/draft/man3/rcmd.3 b/draft/man3/rcmd.3 index 53a5881d..c951d8ce 100644 --- a/draft/man3/rcmd.3 +++ b/draft/man3/rcmd.3 @@ -100,10 +100,9 @@ _BSD_SOURCE (他の関数とともに) 利用される。 .SS rcmd() .PP -The \fBrcmd\fP() function looks up the host \fI*ahost\fP using -\fBgethostbyname\fP(3), returning \-1 if the host does not exist. Otherwise, -\fI*ahost\fP is set to the standard name of the host and a connection is -established to a server residing at the well\-known Internet port \fIinport\fP. +\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 diff --git a/draft/man3/rexec.3 b/draft/man3/rexec.3 index 6b483dbd..01ce3252 100644 --- a/draft/man3/rexec.3 +++ b/draft/man3/rexec.3 @@ -67,13 +67,10 @@ rexec, rexec_af \- リモートコマンドへのストリームを返す .SH 説明 このインタフェースは \fBrcmd\fP(3) によって置き換えられた。 -The \fBrexec\fP() function looks up the host \fI*ahost\fP using -\fBgethostbyname\fP(3), returning \-1 if the host does not exist. Otherwise, -\fI*ahost\fP is set to the standard name of the host. If a username and -password are both specified, then these are used to authenticate to the -foreign host; otherwise the environment and then the \fI.netrc\fP file in -user's home directory are searched for appropriate information. If all this -fails, the user is prompted for the information. +\fBrexec\fP() 関数は \fBgethostbyname\fP(3) を使ってホスト \fI*ahost\fP を探す。ホストが存在しない場合は \-1 +を返し、それ以外の場合には \fI*ahost\fP にそのホストの標準的な名前を設定する。 ユーザ名とパスワードの両方が指定された場合には、これらは +接続先のホストへの認証に利用される。そうでない場合には、 適切な情報を入手するために、環境変数と、そのユーザの ホームディレクトリの \fI.netrc\fP +ファイルが検索される。情報が見つからなかった時には、 ユーザに対して情報を入力するプロンプトが表示される。 .PP ポート \fIinport\fP には、接続に使用する DARPA Internet の well\-known ポートを指定する。 \fIgetservbyname("exec", "tcp")\fP を呼び出すと構造体へのポインタが返され (\fBgetservent\fP(3) diff --git a/draft/man3/stpcpy.3 b/draft/man3/stpcpy.3 index 26d0c89b..16caf95b 100644 --- a/draft/man3/stpcpy.3 +++ b/draft/man3/stpcpy.3 @@ -69,11 +69,10 @@ _GNU_SOURCE .SS "マルチスレッディング (pthreads(7) 参照)" \fBstpcpy\fP() 関数はスレッドセーフである。 .SH 準拠 -This function was added to POSIX.1\-2008. Before that, it was not part of -the C or POSIX.1 standards, nor customary on UNIX systems. It first -appeared at least as early as 1986, in the Lattice C AmigaDOS compiler, then -in the GNU fileutils and GNU textutils in 1989, and in the GNU C library by -1992. It is also present on the BSDs. +この関数は POSIX.1\-2008 に追加された。 それ以前は、この関数は C や POSIX.1 標準の一部でも UNIX +システムの慣習的なものでもなかった。 この関数は Lattice C AmigaDOS コンパイラで初めて登場し、それは少なくとも 1986 +年時点ではそうであった。 その後、 1989 年に GNU fileutils と GNU textutils に登場し、 1992 年までには GNU +C ライブラリにも存在していた。 この関数は BSD 系にも存在する。 .SH バグ この関数はバッファ \fIdest\fP の範囲を行き過ぎてしまう可能性がある。 .SH 例 diff --git a/draft/man3/stpncpy.3 b/draft/man3/stpncpy.3 index 8bf75b6e..00133cb3 100644 --- a/draft/man3/stpncpy.3 +++ b/draft/man3/stpncpy.3 @@ -65,8 +65,8 @@ _GNU_SOURCE .SS "マルチスレッディング (pthreads(7) 参照)" \fBstpncpy\fP() 関数はスレッドセーフである。 .SH 準拠 -This function was added to POSIX.1\-2008. Before that, it was a GNU -extension. It first appeared in version 1.07 of the GNU C library in 1993. +この関数は POSIX.1\-2008 に追加された。 それ以前は GNU による拡張であった。 この関数は 1993 年に GNU C +ライブラリのバージョン 1.07 で初めて登場した。 .SH 関連項目 \fBstrncpy\fP(3), \fBwcpncpy\fP(3) .SH この文書について diff --git a/draft/man3/strcasecmp.3 b/draft/man3/strcasecmp.3 index 7e70397c..98b27f5b 100644 --- a/draft/man3/strcasecmp.3 +++ b/draft/man3/strcasecmp.3 @@ -61,11 +61,10 @@ strcasecmp, strncasecmp \- 二つの文字列を大文字小文字を区別せ .SH 準拠 4.4BSD, POSIX.1\-2001. .SH 注意 -The \fBstrcasecmp\fP() and \fBstrncasecmp\fP() functions first appeared in -4.4BSD, where they were declared in \fI\fP. Thus, for -reasons of historical compatibility, the glibc \fI\fP header -file also declares these functions, if the \fB_DEFAULT_SOURCE\fP (or, in glibc -2.19 and earlier, \fB_BSD_SOURCE\fP) feature test macro is defined. +関数 \fBstrcasecmp\fP() と \fBstrncasecmp\fP() は 4.4BSD で初めて登場し、 そのときは +\fI\fP に宣言があった。 このような、過去との互換性確保のため、 機能検査マクロ +\fB_DEFAULT_SOURCE\fP (glibc 2.19 以前では \fB_BSD_SOURCE\fP) が定義された際に、 glibc +のヘッダーファイル \fI\fP でもこれらの関数が宣言されている。 .SH 関連項目 \fBbcmp\fP(3), \fBmemcmp\fP(3), \fBstrcmp\fP(3), \fBstrcoll\fP(3), \fBstring\fP(3), \fBstrncmp\fP(3), \fBwcscasecmp\fP(3), \fBwcsncasecmp\fP(3) diff --git a/draft/man5/networks.5 b/draft/man5/networks.5 index a704e6e1..96f3f0b3 100644 --- a/draft/man5/networks.5 +++ b/draft/man5/networks.5 @@ -52,8 +52,8 @@ DARPA ネットワークとその分かりやすい名前を記載したファ フィールドの説明は以下のとおり。 .TP \fIname\fP -The symbolic name for the network. Network names can contain any printable -characters except white\-space characters or the comment character. +ネットワークの分かりやすい名前 (symbolic name)。 +ネットワーク名には、ホワイトスペースとコメント文字以外の印字可能な文字を使うことができる。 .TP \fInumber\fP このネットワークの正式な数字での値。 diff --git a/draft/man5/services.5 b/draft/man5/services.5 index 2ed7209c..74d04687 100644 --- a/draft/man5/services.5 +++ b/draft/man5/services.5 @@ -94,11 +94,9 @@ services \- インターネット ネットワークサービス リスト コメントはシャープ (#) で始まり、その行の終わりまでがコメントとみなされる。 空行は飛ばされる。 -The \fIservice\-name\fP should begin in the first column of the file, since -leading spaces are not stripped. \fIservice\-names\fP can be any printable -characters excluding space and tab. However, a conservative choice of -characters should be used to minimize compatibility problems. For example, -a\-z, 0\-9, and hyphen (\-) would seem a sensible choice. +行の始めのスペースは無視されないので、 \fIservice\-name\fP は、行頭から書かなければならない。 \fIservice\-names\fP +は、スペースとタブ以外の印字可能な文字なら何でもよいが、しかしながら 互換性の問題を少なくするような文字を選択すべきである。 例えば、a\-z 、0\-9 +、ハイフォン (\-) を使用するのが無難と思われる。 指定された形式に合わない行はあってはならない (現在は、そのような行は \fBgetservent\fP(3), \fBgetservbyname\fP(3), \fBgetservbyport\fP(3) によって無視される。しかし、その場合の挙動は信頼できない)。 diff --git a/draft/man7/ddp.7 b/draft/man7/ddp.7 index 756eb612..f8d75901 100644 --- a/draft/man7/ddp.7 +++ b/draft/man7/ddp.7 @@ -30,25 +30,21 @@ ddp \- Linux での AppleTalk プロトコルの実装 .br \fIraw_socket\fP\fB = socket(AF_APPLETALK, SOCK_RAW, \fP\fIprotocol\fP\fB);\fP .SH 説明 -Linux implements the AppleTalk protocols described in \fIInside AppleTalk\fP. -Only the DDP layer and AARP are present in the kernel. They are designed to -be used via the \fBnetatalk\fP protocol libraries. This page documents the -interface for those who wish or need to use the DDP layer directly. +Linux は \fIInside AppleTalk\fP に記述されている AppleTalk プロトコルを実装している。 カーネルにあるのは DDP +層と AARP だけである。これらは \fBnetatalk\fP プロトコルライブラリを通して利用されるように設計されている。 このページは DDP +層を直接利用したいユーザーのために、 インターフェースを記述したものである。 .PP -The communication between AppleTalk and the user program works using a -BSD\-compatible socket interface. For more information on sockets, see -\fBsocket\fP(7). +AppleTalk とユーザープログラムとの通信には、 BSD 互換のソケットインターフェースを利用する。 ソケットに関するより詳しい情報は +\fBsocket\fP(7) を見よ。 .PP -An AppleTalk socket is created by calling the \fBsocket\fP(2) function with a -\fBAF_APPLETALK\fP socket family argument. Valid socket types are -\fBSOCK_DGRAM\fP to open a \fBddp\fP socket or \fBSOCK_RAW\fP to open a \fBraw\fP -socket. \fIprotocol\fP is the AppleTalk protocol to be received or sent. For -\fBSOCK_RAW\fP you must specify \fBATPROTO_DDP\fP. +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 raw ソケットは実効ユーザー ID が 0 のプロセスか、 \fBCAT_NEW_RAW\fP 権限を持ったプロセスでないとオープンできない。 .SS アドレスのフォーマット -An AppleTalk socket address is defined as a combination of a network number, -a node number, and a port number. +AppleTalk ソケットアドレスはネットワーク番号・ノード番号・ポート番号の 組み合わせで定義される。 .PP .in +4n .nf @@ -160,8 +156,7 @@ AARP クエリーの最大再送信回数。この回数を越えると、 そ \fBESOCKTNOSUPPORT\fP ソケットが設定されていない。または未知のソケットタイプが要求された。 .SH バージョン -AppleTalk is supported by Linux 2.0 or higher. The \fI/proc\fP interfaces -exist since Linux 2.2. +AppleTalk は Linux 2.0 以降でサポートされている。 \fI/proc\fP インタフェースは Linux 2.2 以降に存在する。 .SH 注意 \fBSO_BROADCAST\fP オプションを用いる時には慎重の上にも慎重になってほしい。 Linux ではこれに特権を必要としない。 不注意にブロードキャストアドレスに送信を行うと、 ネットワークの状態が簡単に変更されてしまう。 diff --git a/draft/man7/ip.7 b/draft/man7/ip.7 index 10a250f0..efd2d622 100644 --- a/draft/man7/ip.7 +++ b/draft/man7/ip.7 @@ -561,11 +561,9 @@ IP プロトコルでは、いくつかのグローバルパラメータを設 発信元と発信先の間のどこかのホストで、そのパケットが 大きすぎると判断され、分割された場合に生じる) は、たとえフォワードされる場合であっても 処理前に再構築 (デフラグメント) される。 -Only enable if running either a firewall that is the sole link to your -network or a transparent proxy; never ever use it for a normal router or -host. Otherwise, fragmented communication can be disturbed if the fragments -travel over different links. Defragmentation also has a large memory and -CPU time cost. +ファイアウォールがローカル側のネットワークに唯一のリンクを持っている 場合や、透過プロクシの場合に限って有効にすべきである。 +通常のルーターやホストでは決して使用することのないように。 さもないとフラグメントが別のリンクを経由して伝わる場合に、 +通信のフラグメント化ができなくなってしまう。 またフラグメント再構築処理はメモリと CPU 時間のコストが非常に大きい。 .\" これはマスカレードや透過プロクシが設定されると、 不思議な仕組みによって自動的に有効になる。 @@ -604,10 +602,9 @@ the port number in a socket address is specified as 0 when calling .IP * \fBlisten\fP(2) is called on a stream socket that was not previously bound; .IP * -\fBconnect\fP(2) was called on a socket that was not not previously bound; +バインドされていないソケットに対して \fBconnect\fP(2) が呼ばれた。 .IP * -\fBsendto\fP(2) is called on a datagram socket that was not not previously -bound. +バインドされていないデータグラムソケットに対して \fBsendto\fP(2) が呼ばれた。 .RE .IP Allocation of ephemeral ports starts with the first number in diff --git a/draft/man7/mq_overview.7 b/draft/man7/mq_overview.7 index 64c9ac62..30471857 100644 --- a/draft/man7/mq_overview.7 +++ b/draft/man7/mq_overview.7 @@ -121,7 +121,7 @@ POSIX メッセージキュー API を使用したプログラムは \fIcc \-lrt .SS リソース制限 リソース上限 \fBRLIMIT_MSGQUEUE\fP は、プロセスの実 UID に対応する全メッセージキューが消費する メモリ空間の量に対して上限を設定する。 \fBgetrlimit\fP(2) を参照。 -.SS メッセージキュー・ファイルシステムのマウント +.SS メッセージキューファイルシステムのマウント Linux では、メッセージキューは仮想ファイルシステム内に作成される (他の実装でも同様の機能が提供されているものもあるが、 詳細は違っているだろう)。 以下のコマンドを使うことで (スーパーユーザは) このファイルシステムをマウントできる: .in +4n @@ -134,7 +134,7 @@ Linux では、メッセージキューは仮想ファイルシステム内に .in マウントしたディレクトリのスティッキービット (sticky bit) は 自動的にオンとなる。 -メッセージキュー・ファイルシステムのマウント後は、ファイルに対して 通常使うコマンド (例えば \fBls\fP(1) や \fBrm\fP(1)) +メッセージキューファイルシステムのマウント後は、ファイルに対して 通常使うコマンド (例えば \fBls\fP(1) や \fBrm\fP(1)) を使って、システム上のメッセージキューを表示したり 操作したりできる。 ディレクトリ内の各ファイルの内容は 1行であり、 キューに関する情報が表示される。 diff --git a/draft/man7/netdevice.7 b/draft/man7/netdevice.7 index 37fbf5be..b1e04181 100644 --- a/draft/man7/netdevice.7 +++ b/draft/man7/netdevice.7 @@ -219,13 +219,11 @@ struct ifconf { .fi .in -If \fIifc_req\fP is NULL, \fBSIOCGIFCONF\fP returns the necessary buffer size in -bytes for receiving all available addresses in \fIifc_len\fP. Otherwise, -\fIifc_req\fP contains a pointer to an array of \fIifreq\fP structures to be -filled with all currently active L3 interface addresses. \fIifc_len\fP -contains the size of the array in bytes. Within each \fIifreq\fP structure, -\fIifr_name\fP will receive the interface name, and \fIifr_addr\fP the address. -The actual number of bytes transferred is returned in \fIifc_len\fP. +\fIifc_req\fP が NULL の場合、 \fBSIOCGIFCONF\fP はすべての取得できるアドレスを受け取るのに必要なバッファサイズ (バイト数) +を \fIifc_len\fP に格納して返す。 それ以外の場合は、\fIifc_req\fP には \fIifreq\fP 構造体の配列へのポインタを渡す。 +この構造体の配列には現在アクティブな L3 インターフェースアドレスがすべて格納される。 \fIifc_len\fP はバイト単位の配列のサイズを渡す。 +\fIifreq\fP 構造体内では、 \fIifr_name\fP にインターフェース名が、 \fIifr_addr\fP にそのアドレスが入る。 +実際に格納されたバイト数は \fIifc_len\fP で返される。 \fIifc_len\fP で指定されたサイズがすべてのアドレスを格納するのに不十分な場合、 カーネルは超過分をスキップし、成功を返す。 この状況になった場合、それを検出する信頼できる方法はない。 したがって、 前もって \fIifc_req\fP を NULL に設定して diff --git a/draft/man7/udp.7 b/draft/man7/udp.7 index 24bcfc4b..42ebc8c1 100644 --- a/draft/man7/udp.7 +++ b/draft/man7/udp.7 @@ -38,18 +38,14 @@ udp \- IPv4 の ユーザーデータグラムプロトコル はコネクションレスの、信頼性の低いデータパケットサービスである。 パケットは到着前に並び替えられたり複製されたりする。 UDP は転送エラーを検出するためにチェックサムを生成・チェックする。 -When a UDP socket is created, its local and remote addresses are -unspecified. Datagrams can be sent immediately using \fBsendto\fP(2) or -\fBsendmsg\fP(2) with a valid destination address as an argument. When -\fBconnect\fP(2) is called on the socket, the default destination address is -set and datagrams can now be sent using \fBsend\fP(2) or \fBwrite\fP(2) without -specifying a destination address. It is still possible to send to other -destinations by passing an address to \fBsendto\fP(2) or \fBsendmsg\fP(2). In -order to receive packets, the socket can be bound to a local address first -by using \fBbind\fP(2). Otherwise, the socket layer will automatically assign -a free local port out of the range defined by -\fI/proc/sys/net/ipv4/ip_local_port_range\fP and bind the socket to -\fBINADDR_ANY\fP. +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 にバインドする。 受信動作はパケットを一つだけ返す。渡したバッファよりもパケットが 小さければ、そのパケットの大きさのデータだけが返される。 逆にバッファよりも大きい場合はパケットは丸められ、 \fBMSG_TRUNC\fP フラグがセットされる。 \fBMSG_WAITALL\fP -- 2.11.0