X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=release%2Fman2%2Fwait.2;h=62aad8eface4315076cce5d3eac7c3dfdad81267;hb=82891fbd71c0dc60b4109ed02b08fa3fe70cc7f3;hp=ef074cb358d01a101e36d36f79ef55df2a13d300;hpb=c1dfa2f6ab1bbed84992d3c59ee9925f4d453668;p=linuxjm%2FLDP_man-pages.git diff --git a/release/man2/wait.2 b/release/man2/wait.2 index ef074cb3..62aad8ef 100644 --- a/release/man2/wait.2 +++ b/release/man2/wait.2 @@ -51,7 +51,23 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH WAIT 2 2012\-12\-21 Linux "Linux Programmer's Manual" +.\" +.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya all rights reserved. +.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved. +.\" Translated 1997-03-04, HANATAKA Shinya +.\" Modified 2000-09-23, HANATAKA Shinya +.\" Updated 2001-06-25, Kentaro Shirakata +.\" Updated 2001-10-15, Kentaro Shirakata +.\" Updated 2001-12-13, Kentaro Shirakata +.\" Updated 2002-10-21, Kentaro Shirakata +.\" Updated 2003-01-27, Kentaro Shirakata +.\" Updated 2003-09-12, Kentaro Shirakata +.\" Updated 2005-03-19, Akihiro MOTOKI +.\" Updated 2005-12-26, Akihiro MOTOKI +.\" Updated 2008-07-31, Akihiro MOTOKI, LDP v3.05 +.\" Updated 2013-05-06, Akihiro MOTOKI +.\" +.TH WAIT 2 2014\-08\-19 Linux "Linux Programmer's Manual" .SH 名前 wait, waitpid, waitid \- プロセスの状態変化を待つ .SH 書式 @@ -63,8 +79,9 @@ wait, waitpid, waitid \- プロセスの状態変化を待つ \fBpid_t waitpid(pid_t \fP\fIpid\fP\fB, int *\fP\fIstatus\fP\fB, int \fP\fIoptions\fP\fB);\fP -\fBint waitid(idtype_t \fP\fIidtype\fP\fB, id_t \fP\fIid\fP\fB, siginfo_t *\fP\fIinfop\fP\fB, -int \fP\fIoptions\fP\fB);\fP +\fBint waitid(idtype_t \fP\fIidtype\fP\fB, id_t \fP\fIid\fP\fB, siginfo_t *\fP\fIinfop\fP\fB, int \fP\fIoptions\fP\fB);\fP + /* これは glibc と POSIX のインターフェイスである。 + 生のシステムコールについての情報は「注意」の節を参照。 */ .sp .in -4n glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): @@ -226,13 +243,14 @@ waitable 状態のプロセスをそのままにする。この後で wait コ \fBwaitpid\fP(): 成功すると、状態が変化した子プロセスのプロセスID を返す。 \fBWNOHANG\fP が指定されていて、 \fIpid\fP で指示された子プロセスが一つ以上存在するが、どの子プロセスでも 状態変化が起こっていなかった場合は、 0 を返す。 エラーの場合 \-1 を返す。 -.\" FIXME: As reported by Vegard Nossum, if infop is NULL, then waitid() +.\" FIXME As reported by Vegard Nossum, if infop is NULL, then waitid() .\" returns the PID of the child. Either this is a bug, or it is intended .\" behavior that needs to be documented. See my Jan 2009 LKML mail .\" "waitid() return value strangeness when infop is NULL". \fBwaitid\fP(): 成功すると 0 を返す。 \fBWNOHANG\fP が指定されていて、 \fIpid\fP -で指示された子プロセスで状態変化が起こっていなかった場合にも 0 を返す。 エラーの場合 \-1 を返す。 エラーの場合、これらのシステムコールはいずれも -\fIerrno\fP に適切な値を設定する。 +で指示された子プロセスで状態変化が起こっていなかった場合にも 0 を返す。 +.PP +エラーの場合 \-1 を返す。 エラーの場合、これらのシステムコールはいずれも \fIerrno\fP に適切な値を設定する。 .SH エラー .TP \fBECHILD\fP @@ -256,17 +274,18 @@ SVr4, 4.3BSD, POSIX.1\-2001. カーネルはゾンビプロセスについて最小限の情報 (PID、終了ステータス、 リソース使用状況) を保持する。 ゾンビプロセスは、 wait によってシステムから削除されない限り、 カーネルのプロセステーブルの 1 エントリを消費する。このプロセステーブルが 一杯になると、新たにプロセスを作ることができなくなる。 親プロセスが終了すると、その親プロセスの「ゾンビ」の 子プロセスは (もしあれば) -\fBinit\fP(8) の養子となる。 \fBinit\fP(8) は wait を自動的に実行し、ゾンビを削除する。 +\fBinit\fP(1) の養子となる。 \fBinit\fP(1) は wait を自動的に実行し、ゾンビを削除する。 POSIX.1\-2001 では以下のように規定されている。 \fBSIGCHLD\fP の動作が \fBSIG_IGN\fP に設定されたか、 \fBSIGCHLD\fP に対して \fBSA_NOCLDWAIT\fP フラグが設定された場合 (\fBsigaction\fP(2) 参照)、終了した子プロセスはゾンビにはならず、 \fBwait\fP() や \fBwaitpid\fP() の呼び出しは全ての子プロセスが終了するまで停止し、 子プロセスが全部終了した後 \fIerrno\fP に \fBECHILD\fP を設定して失敗する。 (もともとの POSIX 標準は \fBSIGCHLD\fP に \fBSIG_IGN\fP を設定した場合の振る舞いを未規定のままにしている。 \fBSIGCHLD\fP のデフォルトの動作が「無視」であるにもかかわらず、 \fBSIGCHLD\fP -の動作として \fBSIG_IGN\fP を明示的に設定した場合にはゾンビプロセスの子プロセスの扱いが 異なる点に注意すること。) Linux 2.6 -はこの仕様に準拠している。 しかし、Linux 2.4 (とそれ以前のバージョン) はそうではない: \fBSIGCHLD\fP が無視される状態で -\fBwait\fP() または \fBwaitpid\fP() が呼び出された場合、 \fBSIGCHLD\fP が無視されていないかのように振る舞う。 -つまり、呼び出しによって次の子プロセスの終了までブロックされ、 終了した子プロセスの PID と状態が返される。 +の動作として \fBSIG_IGN\fP を明示的に設定した場合にはゾンビプロセスの子プロセスの扱いが 異なる点に注意すること。) + +Linux 2.6 はこの仕様に準拠している。 しかし、Linux 2.4 (とそれ以前のバージョン) はそうではない: \fBSIGCHLD\fP +が無視される状態で \fBwait\fP() または \fBwaitpid\fP() が呼び出された場合、 \fBSIGCHLD\fP +が無視されていないかのように振る舞う。 つまり、呼び出しによって次の子プロセスの終了までブロックされ、 終了した子プロセスの PID と状態が返される。 .SS "Linux での注意" Linux カーネルでは、カーネルによってスケジュールされるスレッドは プロセスと明確に区別できる構成要素ではない。スレッドは Linux 固有の \fBclone\fP(2) システムコールを使用して生成されるプロセスに過ぎない。 移植性のある \fBpthread_create\fP(3) @@ -291,6 +310,10 @@ Linux 2.4 より前では、スレッドは単に特殊なプロセスであっ \fB__WNOTHREAD\fP (Linux 2.4 以降) .\" since patch-2.4.0-test8 同じスレッドグループの他のスレッドの子プロセスは待たない。 Linux 2.4 より前ではデフォルトであった。 +.SS "C ライブラリとカーネル ABI の違い" +生の \fBwaitid\fP() システムコールは \fIstruct rusage\ *\fP 型の第 5 引数を取る。 この引数が NULL 以外の場合、 +この引数が子プロセスのリソース使用状況を返すのに使用される。 これは \fBwait4\fP(2) と同じ方法である。 詳細は \fBgetrusage\fP(2) +を参照。 .SH バグ POSIX.1\-2008 によると、 \fBwaitid\fP() を呼び出すアプリケーションは、 \fIinfop\fP が \fIsiginfo_t\fP 構造体を指していること (つまり \fIinfop\fP が NULL でないポインタであること) を保証しなければならない。 Linux では、 @@ -374,6 +397,5 @@ main(int argc, char *argv[]) \fBsigaction\fP(2), \fBsignal\fP(2), \fBwait4\fP(2), \fBpthread_create\fP(3), \fBcredentials\fP(7), \fBsignal\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部である。 +プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。