OSDN Git Service

Update drafts for LDP 3.67
[linuxjm/LDP_man-pages.git] / draft / man2 / clone.2
index eedbf57..6b855b2 100644 (file)
@@ -66,7 +66,7 @@
 .\" Updated 2012-05-08, Akihiro MOTOKI <amotoki@gmail.com>
 .\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
 .\" Updated 2012-05-08, Akihiro MOTOKI <amotoki@gmail.com>
 .\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
-.TH CLONE 2 2013\-04\-16 Linux "Linux Programmer's Manual"
+.TH CLONE 2 2014\-02\-27 Linux "Linux Programmer's Manual"
 .SH 名前
 clone, __clone2 \- 子プロセスを作成する
 .SH 書式
 .SH 名前
 clone, __clone2 \- 子プロセスを作成する
 .SH 書式
@@ -98,7 +98,7 @@ glibc ラッパー関数の機能検査マクロの要件 (\fBfeature_test_macro
 glibc 2.14 以降:
 _GNU_SOURCE
 .TP  4
 glibc 2.14 以降:
 _GNU_SOURCE
 .TP  4
-.\" FIXME See http://sources.redhat.com/bugzilla/show_bug.cgi?id=4749
+.\" See http://sources.redhat.com/bugzilla/show_bug.cgi?id=4749
 glibc 2.14 より前:
 _BSD_SOURCE || _SVID_SOURCE
     /* _GNU_SOURCE も定義される */
 glibc 2.14 より前:
 _BSD_SOURCE || _SVID_SOURCE
     /* _GNU_SOURCE も定義される */
@@ -112,7 +112,7 @@ _BSD_SOURCE || _SVID_SOURCE
 メインの説明はラッパー関数に関するものである。 素のシステムコールにおける差分はこのページの最後の方で説明する。
 
 \fBfork\fP(2) とは異なり、\fBclone\fP() では、子プロセス (child process)
 メインの説明はラッパー関数に関するものである。 素のシステムコールにおける差分はこのページの最後の方で説明する。
 
 \fBfork\fP(2) とは異なり、\fBclone\fP() では、子プロセス (child process)
\81¨å\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81¨ã\81\8cã\80\81ã\83¡ã\83¢ã\83ªç©ºé\96\93ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\81®ã\83\86ã\83¼ã\83\96ã\83«ã\80\81ã\82·ã\82°ã\83\8aã\83«ã\83»ã\83\8fã\83³ã\83\89ã\83©ã\81®ã\83\86ã\83¼ã\83\96ã\83«ã\81ªã\81©ã\81® å®\9fè¡\8cã\82³ã\83³ã\83\86ã\82­ã\82¹ã\83\88ã\81®ä¸\80é\83¨ã\82\92å\85±æ\9c\89ã\81§ã\81\8dã\82\8bã\80\82
+と呼び出し元のプロセスとが、メモリ空間、ファイルディスクリプタのテーブル、シグナルハンドラのテーブルなどの 実行コンテキストの一部を共有できる。
 (このマニュアルにおける「呼び出し元のプロセス」は、通常は 「親プロセス」と一致する。但し、後述の \fBCLONE_PARENT\fP の項も参照のこと)
 
 \fBclone\fP()  の主要な使用法はスレッド (threads) を実装することである:
 (このマニュアルにおける「呼び出し元のプロセス」は、通常は 「親プロセス」と一致する。但し、後述の \fBCLONE_PARENT\fP の項も参照のこと)
 
 \fBclone\fP()  の主要な使用法はスレッド (threads) を実装することである:
@@ -161,13 +161,13 @@ wake (起床) させる。 このアドレスは \fBset_tid_address\fP(2)  シ
 オープン・クローズや、ファイルディスクリプタ・フラグの変更)  を行っても、もう一方のプロセスには影響を与えない。
 .TP 
 \fBCLONE_FS\fP (Linux 2.0 以降)
 オープン・クローズや、ファイルディスクリプタ・フラグの変更)  を行っても、もう一方のプロセスには影響を与えない。
 .TP 
 \fBCLONE_FS\fP (Linux 2.0 以降)
-\fBCLONE_FS\fP ã\81\8c設å®\9aã\81\95ã\82\8cã\81\9få ´å\90\88ã\80\81å\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81¨å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81\8cå\90\8cã\81\98ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 
\83\85å ±ã\82\92å\85±æ\9c\89ã\81\99ã\82\8bã\80\82ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 æ\83\85å ±ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 ã\81®ã\83«ã\83¼ã\83\88 (root)ã\80\81 ã\82«ã\83¬ã\83³ã\83\88ã\83»ã\83¯ã\83¼ã\82­ã\83³ã\82°ã\83»ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ª (current
-working directory)  や umask などである。 呼び出し元のプロセスや子プロセスのどちらか一方によって \fBchroot\fP(2),
+\fBCLONE_FS\fP が設定された場合、呼び出し元のプロセスと子プロセスが同じファイルシステム
\83\85å ±ã\82\92å\85±æ\9c\89ã\81\99ã\82\8bã\80\82ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 æ\83\85å ±ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81®ã\83«ã\83¼ã\83\88 (root)ã\80\81 ã\82«ã\83¬ã\83³ã\83\88ã\83¯ã\83¼ã\82­ã\83³ã\82°ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ª (current working
+directory)  や umask などである。 呼び出し元のプロセスや子プロセスのどちらか一方によって \fBchroot\fP(2),
 \fBchdir\fP(2), \fBumask\fP(2)  が呼び出されると、もう一方のプロセスにも影響が及ぶ。
 
 \fBCLONE_FS\fP が設定されていない場合、子プロセスは、 \fBclone\fP()
 \fBchdir\fP(2), \fBumask\fP(2)  が呼び出されると、もう一方のプロセスにも影響が及ぶ。
 
 \fBCLONE_FS\fP が設定されていない場合、子プロセスは、 \fBclone\fP()
\81\8cå®\9fè¡\8cã\81\95ã\82\8cã\81\9fæ\99\82ç\82¹ã\81§ã\81®ã\80\81å\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\82·ã\82¹ã\83\86ã\83 æ\83\85å ±ã\81®ã\82³ã\83\94ã\83¼ã\82\92 ä½¿ç\94¨ã\81\99ã\82\8bã\80\82 ã\81\93ã\82\8c以é\99\8dã\81¯ã\80\81å\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81¨å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81®ä¸\80æ\96¹ã\81\8c
+が実行された時点での、呼び出し元のプロセスのファイルシステム情報のコピーを 使用する。 これ以降は、呼び出し元のプロセスと子プロセスの一方が
 \fBchroot\fP(2), \fBchdir\fP(2), \fBumask\fP(2)  を呼び出しても、もう一方のプロセスには影響を与えない。
 .TP 
 \fBCLONE_IO\fP (Linux 2.6.25 以降)
 \fBchroot\fP(2), \fBchdir\fP(2), \fBumask\fP(2)  を呼び出しても、もう一方のプロセスには影響を与えない。
 .TP 
 \fBCLONE_IO\fP (Linux 2.6.25 以降)
@@ -193,7 +193,7 @@ I/O コンテキストは、ディスクスケジュールの I/O スコープ
 
 .\" commit 7eafd7c74c3f2e67c27621b987b28397110d643f
 .\" https://lwn.net/Articles/312232/
 
 .\" commit 7eafd7c74c3f2e67c27621b987b28397110d643f
 .\" https://lwn.net/Articles/312232/
-IPC 名前空間は、独立の System V IPC オブジェクト空間 (\fBsvipc\fP(7) 参照) を提供する 。 (Linux 2.6.30
+IPC 名前空間は、独立の System\ V IPC オブジェクト空間 (\fBsvipc\fP(7) 参照) を提供する 。 (Linux 2.6.30
 以降では) 独立した POSIX メッセージキュー空間 (\fBmq_overview\fP(7) 参照) も提供される。 これらの IPC
 機構に共通の特徴として、 IPC オブジェクトはファイルシステムのパス名とは違った仕組みで識別されるという点がある。
 
 以降では) 独立した POSIX メッセージキュー空間 (\fBmq_overview\fP(7) 参照) も提供される。 これらの IPC
 機構に共通の特徴として、 IPC オブジェクトはファイルシステムのパス名とは違った仕組みで識別されるという点がある。
 
@@ -320,15 +320,15 @@ UTS 名前空間は、 \fBuname\fP(2)  が返す識別子の集合である。 
 (\fBset_thread_area\fP(2)  を参照のこと)
 .TP 
 \fBCLONE_SIGHAND\fP (Linux 2.0 以降)
 (\fBset_thread_area\fP(2)  を参照のこと)
 .TP 
 \fBCLONE_SIGHAND\fP (Linux 2.0 以降)
-\fBCLONE_SIGHAND\fP ã\81\8c設å®\9aã\81\95ã\82\8cã\81\9få ´å\90\88ã\80\81å\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81¨å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81¯å\90\8cã\81\98ã\82·ã\82°ã\83\8aã\83«ã\83»ã\83\8fã\83³
+\fBCLONE_SIGHAND\fP が設定された場合、呼び出し元のプロセスと子プロセスは同じシグナルハン
 ドラのテーブルを共有する。呼び出し元のプロセスまたは子プロセスのどちらかが \fBsigaction\fP(2)
 を呼び出してシグナルに対応する動作を変更した場合、 もう一方のプロセスのシグナル動作も変更される。 但し、呼び出し元のプロセスと子プロセスは、
 ドラのテーブルを共有する。呼び出し元のプロセスまたは子プロセスのどちらかが \fBsigaction\fP(2)
 を呼び出してシグナルに対応する動作を変更した場合、 もう一方のプロセスのシグナル動作も変更される。 但し、呼び出し元のプロセスと子プロセスは、
\83\97ã\83­ã\82»ã\82¹æ¯\8eã\81«ã\80\81ã\82·ã\82°ã\83\8aã\83«ã\83»ã\83\9eã\82¹ã\82¯ (signal mask) ã\81¨å\87¦ç\90\86å¾\85ã\81¡ã\82·ã\82°ã\83\8aã\83«ã\81®é\9b\86å\90\88 ã\82\92æ\8c\81ã\81£ã\81¦ã\81\84ã\82\8bã\80\82ã\81\93ã\81®ã\81\9fã\82\81ã\80\81ã\81\82ã\82\8bã\83\97ã\83­ã\82»ã\82¹ã\81¯ã\80\81
+プロセス毎に、シグナルマスク (signal mask) と処理待ちシグナルの集合 を持っている。このため、あるプロセスは、
 \fBsigprocmask\fP(2)  を使用して、もう一方のプロセスに影響を与えずに シグナルを禁止 (block) したり許可 (unblock)
 したりできる。
 
 \fBCLONE_SIGHAND\fP が設定されていない場合、子プロセスは \fBclone\fP()
 \fBsigprocmask\fP(2)  を使用して、もう一方のプロセスに影響を与えずに シグナルを禁止 (block) したり許可 (unblock)
 したりできる。
 
 \fBCLONE_SIGHAND\fP が設定されていない場合、子プロセスは \fBclone\fP()
\81\8cå®\9fè¡\8cã\81\95ã\82\8cã\81\9fæ\99\82ç\82¹ã\81§ã\81®ã\80\81å\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81®ã\82·ã\82°ã\83\8aã\83«ã\83»ã\83\8fã\83³ã\83\89ã\83©ã\81® ã\82³ã\83\94ã\83¼ã\82\92ç¶\99æ\89¿ã\81\99ã\82\8bã\80\82ã\81\93ã\82\8c以é\99\8dã\81¯ã\80\81ä¸\80æ\96¹ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81\8c \fBsigaction\fP(2)
+が実行された時点での、呼び出し元のプロセスのシグナルハンドラの コピーを継承する。これ以降は、一方のプロセスが \fBsigaction\fP(2)
 を呼び出しても、もう一方のプロセスには影響を与えない。
 
 Linux 2.6.0\-test6 以降では、 \fBCLONE_SIGHAND\fP を指定する場合、 \fBCLONE_VM\fP も \fIflags\fP
 を呼び出しても、もう一方のプロセスには影響を与えない。
 
 Linux 2.6.0\-test6 以降では、 \fBCLONE_SIGHAND\fP を指定する場合、 \fBCLONE_VM\fP も \fIflags\fP
@@ -343,57 +343,57 @@ Linux 2.6.0\-test6 以降では、 \fBCLONE_SIGHAND\fP を指定する場合、
 Linux 2.6.38 で完全に\fI削除\fPされた。
 .TP 
 \fBCLONE_SYSVSEM\fP (Linux 2.5.10 以降)
 Linux 2.6.38 で完全に\fI削除\fPされた。
 .TP 
 \fBCLONE_SYSVSEM\fP (Linux 2.5.10 以降)
-\fBCLONE_SYSVSEM\fP がセットされると、子プロセスと呼び出し元プロセスは一つの System V セマフォのアンドゥ値リスト
+\fBCLONE_SYSVSEM\fP がセットされると、子プロセスと呼び出し元プロセスは一つの System\ V セマフォのアンドゥ値リスト
 (\fBsemop\fP(2)  参照) を共有する。このフラグがセットされていなければ、 子プロセスは独自のアンドゥリストを持つ
 (リストの初期値は空である)。
 .TP 
 \fBCLONE_THREAD\fP (Linux 2.4.0\-test8以降)
 (\fBsemop\fP(2)  参照) を共有する。このフラグがセットされていなければ、 子プロセスは独自のアンドゥリストを持つ
 (リストの初期値は空である)。
 .TP 
 \fBCLONE_THREAD\fP (Linux 2.4.0\-test8以降)
-\fBCLONE_THREAD\fP ã\81\8c設å®\9aã\81\95ã\82\8cã\81\9få ´å\90\88ã\80\81å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81¯å\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81¨å\90\8cã\81\98ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81« ç½®ã\81\8bã\82\8cã\82\8bã\80\82 \fBCLONE_THREAD\fP
\81«ã\81¤ã\81\84ã\81¦ã\81®ä»¥é\99\8dã\81®è­°è«\96ã\82\92読ã\81¿ã\82\84ã\81\99ã\81\8fã\81\99ã\82\8bã\81\9fã\82\81ã\80\81 ã\80\8cã\82¹ã\83¬ã\83\83ã\83\89ã\80\8dã\81¨ã\81\84ã\81\86ç\94¨èª\9eã\81¯ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81®ä¸­ã\81®ã\83\97ã\83­ã\82»ã\82¹ã\82\92 å\8f\82ç\85§ã\81\99ã\82\8bã\81®ã\81«ä½¿ã\81\86ã\81\93ã\81¨ã\81¨ã\81\99ã\82\8bã\80\82
+\fBCLONE_THREAD\fP が設定された場合、子プロセスは呼び出し元のプロセスと同じスレッドグループに 置かれる。 \fBCLONE_THREAD\fP
+についての以降の議論を読みやすくするため、 「スレッド」という用語はスレッドグループの中のプロセスを 参照するのに使うこととする。
 
 
\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81¯ã\80\81 ã\82¹ã\83¬ã\83\83ã\83\89é\9b\86å\90\88ã\81§ä¸\80ã\81¤ã\81® PID ã\82\92å\85±æ\9c\89ã\81\99ã\82\8bã\81¨ã\81\84ã\81\86 POSIX ã\82¹ã\83¬ã\83\83ã\83\89ã\81®æ¦\82念ã\82\92ã\82µã\83\9dã\83¼ã\83\88ã\81\99ã\82\8bã\81\9fã\82\81ã\81« Linux 2.4
\81«å\8a ã\81\88ã\82\89ã\82\8cã\81\9fæ©\9fè\83½ã\81§ã\81\82ã\81£ã\81\9fã\80\82 å\86\85é\83¨ç\9a\84ã\81«ã\81¯ã\80\81ã\81\93ã\81®å\85±æ\9c\89 PID ã\81¯ã\81\84ã\82\8fã\82\86ã\82\8bã\81\9dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81® ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97è­\98å\88¥å­\90 (TGID) ã\81§ã\81\82ã\82\8bã\80\82 Linux
-2.4 ä»¥é\99\8dã\81§ã\81¯ã\80\81 \fBgetpid\fP(2)  ã\81®å\91¼ã\81³å\87ºã\81\97ã\81§ã\81¯ã\81\9dã\81®ã\83\97ã\83­ã\82»ã\82¹ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97 ID ã\82\92è¿\94ã\81\99ã\80\82
+スレッドグループは、 スレッド集合で一つの 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 と同じ値の
 
 あるグループに属するスレッドは (システム全体で) 一意なスレッド ID (TID)  で区別できる。新しいスレッドの TID は \fBclone\fP()
 の呼び出し元へ関数の結果として返され、 スレッドは自分自身の TID を \fBgettid\fP(2)  で取得できる。
 
 \fBCLONE_THREAD\fP を指定せずに \fBclone\fP()  の呼び出しが行われると、 生成されたスレッドはそのスレッドの TID と同じ値の
-TGID ã\82\92æ\8c\81ã\81¤ æ\96°ã\81\97ã\81\84ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81«ç½®ã\81\8bã\82\8cã\82\8bã\80\82ã\81\93ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81¯ æ\96°ã\81\97ã\81\84ã\82¹ã\83¬ã\83\83ã\83\89ã\83»グループの「リーダー」である。
+TGID ã\82\92æ\8c\81ã\81¤ æ\96°ã\81\97ã\81\84ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81«ç½®ã\81\8bã\82\8cã\82\8bã\80\82ã\81\93ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81¯ æ\96°ã\81\97ã\81\84ã\82¹ã\83¬ã\83\83ã\83\89グループの「リーダー」である。
 
 \fBCLONE_THREAD\fP を指定して作成された新しいスレッドは、 (\fBCLONE_PARENT\fP の場合と同様に)  \fBclone\fP()
 
 \fBCLONE_THREAD\fP を指定して作成された新しいスレッドは、 (\fBCLONE_PARENT\fP の場合と同様に)  \fBclone\fP()
\82\92å\91¼ã\81³å\87ºã\81\97å\85\83ã\81¨å\90\8cã\81\98親ã\83\97ã\83­ã\82»ã\82¹ã\82\92æ\8c\81ã\81¤ã\80\82 ã\81\9dã\81®ã\81\9fã\82\81ã\80\81 \fBgetppid\fP(2)  ã\82\92å\91¼ã\81¶ã\81¨ã\80\81ä¸\80ã\81¤ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\99ã\82¹ã\83¬ã\83\83ã\83\89ã\81¯å\85¨ã\81¦å\90\8cã\81\98å\80¤ã\82\92è¿\94ã\81\99ã\80\82
+を呼び出し元と同じ親プロセスを持つ。 そのため、 \fBgetppid\fP(2)  を呼ぶと、一つのスレッドグループに属すスレッドは全て同じ値を返す。
 \fBCLONE_THREAD\fP で作られたスレッドが終了した際に、 そのスレッドを \fBclone\fP()  を使って生成したスレッドには
 \fBSIGCHLD\fP (もしくは他の終了シグナル) は送信されない。 また、 \fBwait\fP(2)
 を使って終了したスレッドの状態を取得することもできない (そのようなスレッドは \fIdetached\fP (分離された) といわれる)。
 
 \fBCLONE_THREAD\fP で作られたスレッドが終了した際に、 そのスレッドを \fBclone\fP()  を使って生成したスレッドには
 \fBSIGCHLD\fP (もしくは他の終了シグナル) は送信されない。 また、 \fBwait\fP(2)
 を使って終了したスレッドの状態を取得することもできない (そのようなスレッドは \fIdetached\fP (分離された) といわれる)。
 
-スレッド・グループに属す全てのスレッドが終了した後、 そのスレッド・グループの親プロセスに \fBSIGCHLD\fP (もしくは他の終了シグナル)
-が送られる。
+スレッドグループに属す全てのスレッドが終了した後、 そのスレッドグループの親プロセスに \fBSIGCHLD\fP (もしくは他の終了シグナル) が送られる。
 
 
\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\99ã\81\84ã\81\9aã\82\8cã\81\8bã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81\8c \fBexecve\fP(2)  ã\82\92å®\9fè¡\8cã\81\99ã\82\8bã\81¨ã\80\81ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\83»リーダー以外の全てのスレッドは
-çµ\82äº\86ã\81\95ã\82\8cã\80\81æ\96°ã\81\97ã\81\84ã\83\97ã\83­ã\82»ã\82¹ã\81\8cã\81\9dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\83»リーダーの下で 実行される。
\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\99ã\81\84ã\81\9aã\82\8cã\81\8bã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81\8c \fBexecve\fP(2)  ã\82\92å®\9fè¡\8cã\81\99ã\82\8bã\81¨ã\80\81ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97リーダー以外の全てのスレッドは
+çµ\82äº\86ã\81\95ã\82\8cã\80\81æ\96°ã\81\97ã\81\84ã\83\97ã\83­ã\82»ã\82¹ã\81\8cã\81\9dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97リーダーの下で 実行される。
 
 
\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\99ã\82¹ã\83¬ã\83\83ã\83\89ã\81®ä¸\80ã\81¤ã\81\8c \fBfork\fP(2)  ã\82\92使ã\81£ã\81¦å­\90ã\83\97ã\83­ã\82»ã\82¹ã\82\92ä½\9cæ\88\90ã\81\97ã\81\9få ´å\90\88ã\80\81 ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81®ã\81©ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81§ã\81\82ã\81£ã\81¦ã\82\82
-その子供を \fBwait\fP(2)  できる。
\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\99ã\82¹ã\83¬ã\83\83ã\83\89ã\81®ä¸\80ã\81¤ã\81\8c \fBfork\fP(2)  ã\82\92使ã\81£ã\81¦å­\90ã\83\97ã\83­ã\82»ã\82¹ã\82\92ä½\9cæ\88\90ã\81\97ã\81\9få ´å\90\88ã\80\81 ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81®ã\81©ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81§ã\81\82ã\81£ã\81¦ã\82\82 ã\81\9dã\81®å­\90ä¾\9bã\82\92
+\fBwait\fP(2)  できる。
 
 Linux 2.5.35 以降では、 \fBCLONE_THREAD\fP を指定する場合、 \fIflags\fP に \fBCLONE_SIGHAND\fP
 
 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)  ã\82\92使ã\81£ã\81¦ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97å\85¨ä½\93 (ã\81¤ã\81¾ã\82\8a TGID) ã\81«ã\82·ã\82°ã\83\8aã\83«ã\82\92é\80\81ã\82\8bã\81\93ã\81¨ã\82\82ã\81§ã\81\8dã\82\8cã\81°ã\80\81 \fBtgkill\fP(2)
+\fBkill\fP(2)  を使ってスレッドグループ全体 (つまり TGID) にシグナルを送ることもできれば、 \fBtgkill\fP(2)
 を使って特定のスレッド (つまり TID) にシグナルを送ることもできる。
 
 シグナルの配送と処理はプロセス全体に影響する: ハンドラを設定していないシグナルがあるスレッドに配送されると、
 を使って特定のスレッド (つまり TID) にシグナルを送ることもできる。
 
 シグナルの配送と処理はプロセス全体に影響する: ハンドラを設定していないシグナルがあるスレッドに配送されると、
\81\9dã\81®ã\82·ã\82°ã\83\8aã\83«ã\81¯ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81®å\85¨ã\83¡ã\83³ã\83\90ã\83¼ã\81«å½±é\9f¿ã\82\92å\8f\8aã\81¼ã\81\99 (çµ\82äº\86ã\81\97ã\81\9fã\82\8aã\80\81å\81\9cæ­¢ã\81\97ã\81\9fã\82\8aã\80\81å\8b\95ä½\9cã\82\92ç¶\99ç¶\9aã\81\97ã\81\9fã\82\8aã\80\81ç\84¡è¦\96ã\81\95ã\82\8cã\81\9fã\82\8aã\81\99ã\82\8b\80\82
+そのシグナルはスレッドグループの全メンバーに影響を及ぼす (終了したり、停止したり、動作を継続したり、無視されたりする)。
 
 各々のスレッドは独自のシグナルマスクを持っており、 \fBsigprocmask\fP(2)  で設定できる。 だが、処理待ちのシグナルには、
 
 各々のスレッドは独自のシグナルマスクを持っており、 \fBsigprocmask\fP(2)  で設定できる。 だが、処理待ちのシグナルには、
-\fBkill\fP(2)  ã\81§é\80\81ä¿¡ã\81\95ã\82\8cã\82\8bã\83\97ã\83­ã\82»ã\82¹å\85¨ä½\93ã\81«å¯¾ã\81\99ã\82\8bã\82\82ã\81® (ã\81¤ã\81¾ã\82\8aã\80\81ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81® ã\81©ã\81®ã\83¡ã\83³ã\83\90ã\83¼ã\81«ã\82\82é\85\8dé\80\81ã\81§ã\81\8dã\82\8bã\82\82ã\81®) ã\81¨ã\80\81
+\fBkill\fP(2)  で送信されるプロセス全体に対するもの (つまり、スレッドグループの どのメンバーにも配送できるもの) と、
 \fBtgkill\fP(2)  で送信される個々のスレッドに対するものがありえる。 \fBsigpending\fP(2)
 を呼び出すと、プロセス全体に対する処理待ちシグナルと呼び出し元の スレッドに対する処理待ちシグナルを結合したシグナル集合が返される。
 
 \fBtgkill\fP(2)  で送信される個々のスレッドに対するものがありえる。 \fBsigpending\fP(2)
 を呼び出すと、プロセス全体に対する処理待ちシグナルと呼び出し元の スレッドに対する処理待ちシグナルを結合したシグナル集合が返される。
 
-\fBkill\fP(2)  ã\82\92使ã\81£ã\81¦ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81«ã\82·ã\82°ã\83\8aã\83«ã\81\8cé\80\81ã\82\89ã\82\8cã\81\9få ´å\90\88ã\81§ã\80\81 ã\81\9dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81\8cã\81\9dã\81®ã\82·ã\82°ã\83\8aã\83«ã\81«å¯¾ã\81\99ã\82\8bã\82·ã\82°ã\83\8aã\83«ã\83»ハンドラが
\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\81\9fã\81¨ã\81\8dã\81«ã\81¯ã\80\81ã\82·ã\82°ã\83\8aã\83«ã\83»ã\83\8fã\83³ã\83\89ã\83©ã\81¯ã\82¹ã\83¬ã\83\83ã\83\89ã\83»グループの メンバーのうち、ただ一つのスレッドでだけ起動される。ハンドラが
+\fBkill\fP(2)  ã\82\92使ã\81£ã\81¦ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81«ã\82·ã\82°ã\83\8aã\83«ã\81\8cé\80\81ã\82\89ã\82\8cã\81\9få ´å\90\88ã\81§ã\80\81 ã\81\9dã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\82°ã\83«ã\83¼ã\83\97ã\81\8cã\81\9dã\81®ã\82·ã\82°ã\83\8aã\83«ã\81«å¯¾ã\81\99ã\82\8bã\82·ã\82°ã\83\8aã\83«ハンドラが
\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\81\9fã\81¨ã\81\8dã\81«ã\81¯ã\80\81ã\82·ã\82°ã\83\8aã\83«ã\83\8fã\83³ã\83\89ã\83©ã\81¯ã\82¹ã\83¬ã\83\83ã\83\89グループの メンバーのうち、ただ一つのスレッドでだけ起動される。ハンドラが
 起動されるスレッドは、そのシグナルを禁止 (block) していない メンバーの中から一つだけが勝手に (arbitrarily) 選ばれる。
 起動されるスレッドは、そのシグナルを禁止 (block) していない メンバーの中から一つだけが勝手に (arbitrarily) 選ばれる。
\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\99è¤\87æ\95°ã\81®ã\82¹ã\83¬ã\83\83ã\83\89ã\81\8c \fBsigwaitinfo\fP(2)  ã\82\92使ã\81£ã\81¦å\90\8cã\81\98ã\82·ã\82°ã\83\8aã\83«ã\82\92å¾\85ã\81£ã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81
+スレッドグループに属す複数のスレッドが \fBsigwaitinfo\fP(2)  を使って同じシグナルを待っている場合、
 これらのスレッドの中から一つをカーネルが勝手に選択し、 そのスレッドが \fBkill (2)\fP を使って送信されたシグナルを受信する。
 .TP 
 \fBCLONE_UNTRACED\fP (Linux 2.5.46 以降)
 これらのスレッドの中から一つをカーネルが勝手に選択し、 そのスレッドが \fBkill (2)\fP を使って送信されたシグナルを受信する。
 .TP 
 \fBCLONE_UNTRACED\fP (Linux 2.5.46 以降)
@@ -432,7 +432,7 @@ Linux 2.5.35 以降では、 \fBCLONE_THREAD\fP を指定する場合、 \fIflag
 .in
 生のシステムコールのもう一つの違いは、 \fIchild_stack\fP 引き数がゼロでも良いことである。この場合には、どちらかのプロセスが
 スタックを変更した時に、書き込み時コピー (copy\-on\-write) 方式により
 .in
 生のシステムコールのもう一つの違いは、 \fIchild_stack\fP 引き数がゼロでも良いことである。この場合には、どちらかのプロセスが
 スタックを変更した時に、書き込み時コピー (copy\-on\-write) 方式により
-å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81\8cã\82¹ã\82¿ã\83\83ã\82¯ã\83»ã\83\9aã\83¼ã\82¸ã\81®ç\8b¬ç«\8bã\81\97ã\81\9fã\82³ã\83\94ã\83¼ã\82\92å¾\97ã\82\89ã\82\8cã\82\8bã\81\93ã\81¨ã\81\8cä¿\9d証ã\81\95ã\82\8cã\82\8bã\80\82 ã\81\93ã\81®å ´å\90\88ã\80\81正常ã\81«å\8b\95ä½\9cã\81\95ã\81\9bã\82\8bã\81\9fã\82\81ã\81«ã\81¯ã\80\81 \fBCLONE_VM\fP
+子プロセスがスタックページの独立したコピーを得られることが保証される。 この場合、正常に動作させるためには、 \fBCLONE_VM\fP
 オプションを指定してはならない。
 
 いくつかのアーキテクチャでは、システムコールの引き数の順序は上記とは異なっている。 microblaze, ARM, ARM 64, PA\-RISC,
 オプションを指定してはならない。
 
 いくつかのアーキテクチャでは、システムコールの引き数の順序は上記とは異なっている。 microblaze, ARM, ARM 64, PA\-RISC,
@@ -531,14 +531,14 @@ CLONE_THREAD と一緒に指定する必要はなくなった。 このフラグ
 
 i386 上では、 \fBclone\fP()  は vsyscall 経由ではなく、直接 \fIint $0x80\fP 経由で呼び出すべきである。
 .SH バグ
 
 i386 上では、 \fBclone\fP()  は vsyscall 経由ではなく、直接 \fIint $0x80\fP 経由で呼び出すべきである。
 .SH バグ
-NPTL ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\83©ã\82¤ã\83\96ã\83©ã\83ªã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8b GNU C ã\83©ã\82¤ã\83\96ã\83©ã\83ªã\81®ã\81\84ã\81\8fã\81¤ã\81\8bã\81®ã\83\90ã\83¼ã\82¸ã\83§ã\83³ ã\81«ã\81¯ã\80\81 \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 を作って作成された場合には、
 のラッパー関数が含まれており、このラッパー関数は PID をキャッシュする。 このキャッシュ処理が正しく動作するためには glibc の
 \fBclone\fP()  のラッパー関数での助けが必要だが、現状の実装では、 ある状況下においてキャッシュが最新とならない可能性がある。 特に、
 \fBclone\fP()  の呼び出し直後にシグナルが子プロセスに配送された場合に、 そのシグナルに対するハンドラ内で \fBgetpid\fP(2)
 を呼び出すと、それまでに clone のラッパー関数が子プロセスの PID キャッシュを 更新する機会が得られていなければ、呼び出し元プロセス
 ("親プロセス") の PID が 返される可能性がある。 (この議論では、子プロセスが \fBCLONE_THREAD\fP
 を使って作成された場合のことは無視している。 子プロセスが \fBCLONE_THREAD\fP を作って作成された場合には、
\91¼ã\81³å\87ºã\81\97å\85\83ã\81¨å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81¯å\90\8cã\81\98ã\82¹ã\83¬ã\83\83ã\83\89ã\83»ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\99ã\81®ã\81§ã\80\81 \fBgetpid\fP(2)  ã\81¯å­\90ã\83\97ã\83­ã\82»ã\82¹ã\81¨ \fBclone\fP()
+呼び出し元と子プロセスは同じスレッドグループに属すので、 \fBgetpid\fP(2)  は子プロセスと \fBclone\fP()
 を呼び出したプロセスで同じ値を返すのが「正しい」。 キャッシュが最新とならない問題 (stale\-cache problem) は、 \fIflags\fP
 に \fBCLONE_VM\fP が含まれている場合にも発生しない。)  本当の値を得るためには、次のようなコードを使う必要があるかもしれない。
 .nf
 を呼び出したプロセスで同じ値を返すのが「正しい」。 キャッシュが最新とならない問題 (stale\-cache problem) は、 \fIflags\fP
 に \fBCLONE_VM\fP が含まれている場合にも発生しない。)  本当の値を得るためには、次のようなコードを使う必要があるかもしれない。
 .nf
@@ -553,11 +553,10 @@ NPTL スレッド・ライブラリを含んでいる GNU C ライブラリの
 .\" https://bugzilla.redhat.com/show_bug.cgi?id=417521
 .\" http://sourceware.org/bugzilla/show_bug.cgi?id=6910
 .SH 例
 .\" https://bugzilla.redhat.com/show_bug.cgi?id=417521
 .\" http://sourceware.org/bugzilla/show_bug.cgi?id=6910
 .SH 例
-.SS "別の UTS 名前空間で動作する子プロセスを作成する"
 以下のプログラムは、 別の UTS 名前空間で動作する子プロセスを \fBclone\fP() を使って作成する例である。 子プロセスは、自分の UTS
 名前空間においてホスト名を変更する。 それから、親プロセスと子プロセスの両方でシステムのホスト名を表示し、 親プロセスと子プロセスの UTS
 名前空間でホスト名が異なることを確認する。 このプログラムの使用方法については \fBsetns\fP(2) を参照。
 以下のプログラムは、 別の UTS 名前空間で動作する子プロセスを \fBclone\fP() を使って作成する例である。 子プロセスは、自分の UTS
 名前空間においてホスト名を変更する。 それから、親プロセスと子プロセスの両方でシステムのホスト名を表示し、 親プロセスと子プロセスの UTS
 名前空間でホスト名が異なることを確認する。 このプログラムの使用方法については \fBsetns\fP(2) を参照。
-
+.SS プログラムのソース
 .nf
 #define _GNU_SOURCE
 #include <sys/wait.h>
 .nf
 #define _GNU_SOURCE
 #include <sys/wait.h>
@@ -649,6 +648,6 @@ main(int argc, char *argv[])
 \fBset_thread_area\fP(2), \fBset_tid_address\fP(2), \fBsetns\fP(2), \fBtkill\fP(2),
 \fBunshare\fP(2), \fBwait\fP(2), \fBcapabilities\fP(7), \fBpthreads\fP(7)
 .SH この文書について
 \fBset_thread_area\fP(2), \fBset_tid_address\fP(2), \fBsetns\fP(2), \fBtkill\fP(2),
 \fBunshare\fP(2), \fBwait\fP(2), \fBcapabilities\fP(7), \fBpthreads\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。