OSDN Git Service

(split) LDP: Release pages for LDP v3.39.
[linuxjm/LDP_man-pages.git] / release / man2 / fork.2
index d27fdba..b143d4c 100644 (file)
 .\"     Greatly expanded, to describe all attributes that differ
 .\"    parent and child.
 .\"
 .\"     Greatly expanded, to describe all attributes that differ
 .\"    parent and child.
 .\"
-.\" Japanese Version Copyright (c) 1996 TABATA Tomohira
-.\"         all rights reserved.
-.\" Translated Thu Jun 27 20:35:06 JST 1996
-.\"         by TABATA Tomohira <loba@k2.t.u-tokyo.ac.jp>
-.\" Modified Sun Dec 14 00:43:22 JST 1997
-.\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
-.\" Modified Tue Jul 10 05:36:22 JST 2001
-.\"         by Yuichi SATO <ysato@h4.dion.ne.jp>, LDP v1.38
-.\" Updated & Modified Wed Dec 29 12:33:12 JST 2004
-.\"         by Yuichi SATO <ysato444@yahoo.co.jp>, LDP v2.01
-.\" Updated & Modified Wed Jan  3 04:11:03 JST 2007 by Yuichi SATO, LDP v2.43
-.\" Updated 2008-08-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.05
+.\"*******************************************************************
 .\"
 .\"
-.TH FORK 2 2009-04-27 "Linux" "Linux Programmer's Manual"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH FORK 2 2012\-02\-27 Linux "Linux Programmer's Manual"
 .SH 名前
 fork \- 子プロセスを生成する
 .SH 書式
 .SH 名前
 fork \- 子プロセスを生成する
 .SH 書式
-.B #include <unistd.h>
+\fB#include <unistd.h>\fP
 .sp
 .sp
-.B pid_t fork(void);
+\fBpid_t fork(void);\fP
 .SH 説明
 .SH 説明
-.BR fork ()
-は呼び出し元プロセスを複製して新しいプロセスを生成する。
-\fIchild\fP で参照される新しいプロセスは、以下の点を除き、
+\fBfork\fP()  は呼び出し元プロセスを複製して新しいプロセスを生成する。 \fIchild\fP で参照される新しいプロセスは、以下の点を除き、
 \fIparent\fP で参照される呼び出し元プロセスの完全な複製である:
 .IP * 3
 \fIparent\fP で参照される呼び出し元プロセスの完全な複製である:
 .IP * 3
-子プロセスは独自のプロセス ID を持ち、
-この PID は既存のどのプロセスグループ
-.RB ( setpgid (2))
-の ID とも一致しない。
+子プロセスは独自のプロセス ID を持ち、 この PID は既存のどのプロセスグループ (\fBsetpgid\fP(2))  の ID とも一致しない。
 .IP *
 子プロセスの親プロセス ID は、親プロセスのプロセス ID と同じである。
 .IP *
 .IP *
 子プロセスの親プロセス ID は、親プロセスのプロセス ID と同じである。
 .IP *
-子プロセスは親プロセスのメモリロック
-.RB ( mlock (2),
-.BR mlockall (2))
-を引き継がない。
+子プロセスは親プロセスのメモリロック (\fBmlock\fP(2), \fBmlockall\fP(2))  を引き継がない。
 .IP *
 .IP *
-プロセスの資源利用量
-.RB ( getrusage (2))
-と CPU タイムカウンタ
-.RB ( times (2))
-が、子プロセスでは 0 にリセットされる。
+プロセスの資源利用量 (\fBgetrusage\fP(2))  と CPU タイムカウンタ (\fBtimes\fP(2))  が、子プロセスでは 0
+にリセットされる。
 .IP *
 .IP *
-子プロセスの処理待ちのシグナルの集合
-.RB ( sigpending (2))
-は、初期状態では空になる。
+子プロセスの処理待ちのシグナルの集合 (\fBsigpending\fP(2))  は、初期状態では空になる。
 .IP *
 .IP *
-子プロセスは親プロセスからセマフォ調整
-.RB ( semop (2))
-を引き継がない。
+子プロセスは親プロセスからセマフォ調整 (\fBsemop\fP(2))  を引き継がない。
 .IP *
 .IP *
-子プロセスは親プロセスからレコードロック
-.RB ( fcntl (2))
-を引き継がない。
+子プロセスは親プロセスからレコードロック (\fBfcntl\fP(2))  を引き継がない。
 .IP *
 .IP *
-子プロセスは親プロセスからタイマー
-.RB ( setitimer (2),
-.BR alarm (2),
-.BR timer_create (2))
+子プロセスは親プロセスからタイマー (\fBsetitimer\fP(2), \fBalarm\fP(2), \fBtimer_create\fP(2))
 を引き継がない。
 .IP *
 を引き継がない。
 .IP *
-子プロセスは親プロセスから主だった非同期 I/O 操作を引き継がない
-.RB ( aio_read (3),
-.BR aio_write (3)
-参照)。
-また、親プロセスから非同期 I/O コンテキストを引き継がない
-.RB ( io_setup (2)
-参照)。
+子プロセスは親プロセスから主だった非同期 I/O 操作を引き継がない (\fBaio_read\fP(3), \fBaio_write\fP(3)  参照)。
+また、親プロセスから非同期 I/O コンテキストを引き継がない (\fBio_setup\fP(2)  参照)。
 .PP
 .PP
-上記のリストにあるプロセス属性は、POSIX.1-2001 で全て指定されている。
-親プロセスと子プロセスは、以下の Linux 固有のプロセス属性も異なる:
+上記のリストにあるプロセス属性は、POSIX.1\-2001 で全て指定されている。 親プロセスと子プロセスは、以下の Linux
+固有のプロセス属性も異なる:
 .IP * 3
 .IP * 3
-子プロセスは親プロセスからディレクトリ変更通知 (dnotify)
-.RB ( fcntl (2)
-における
-.B F_NOTIFY
-の説明を参照) を引き継がない。
+子プロセスは親プロセスからディレクトリ変更通知 (dnotify)  (\fBfcntl\fP(2)  における \fBF_NOTIFY\fP の説明を参照)
+を引き継がない。
 .IP *
 .IP *
-.BR prctl (2)
-の
-.B PR_SET_PDEATHSIG
-の設定がリセットされ、子プロセスは親プロセスが終了したときに
+\fBprctl\fP(2)  の \fBPR_SET_PDEATHSIG\fP の設定がリセットされ、子プロセスは親プロセスが終了したときに
 シグナルを受信しない。
 .IP *
 シグナルを受信しない。
 .IP *
-.BR madvise (2)
-の
-.B MADV_DONTFORK
-フラグでマークされたメモリマッピングは、
-.BR fork ()
+\fBmadvise\fP(2)  の \fBMADV_DONTFORK\fP フラグでマークされたメモリマッピングは、 \fBfork\fP()
 によって引き継がれない。
 .IP *
 によって引き継がれない。
 .IP *
-子プロセスの終了シグナルは常に
-.B SIGCHLD
-である
-.RB ( clone (2)
-を参照)。
+子プロセスの終了シグナルは常に \fBSIGCHLD\fP である (\fBclone\fP(2)  を参照)。
 .PP
 .PP
-さらに以下の点について注意すること:
+以下の点についても注意すること:
 .IP * 3
 .IP * 3
-子プロセスはシングルスレッドで生成される。つまり、
-.BR fork ()
-を呼び出したスレッドとなる。
-親プロセスの仮想アドレス空間全体が子プロセスに複製される。
-これにはミューテックス (mutex) の状態・条件変数・
-pthread オブジェクトが含まれる。
-これが引き起こす問題を扱うには、
-.BR pthread_atfork (3)
-を使うと良いだろう。
+子プロセスはシングルスレッドで生成される。つまり、 \fBfork\fP()  を呼び出したスレッドとなる。
+親プロセスの仮想アドレス空間全体が子プロセスに複製される。 これにはミューテックス (mutex) の状態・条件変数・ pthread
+オブジェクトが含まれる。 これが引き起こす問題を扱うには、 \fBpthread_atfork\fP(3)  を使うと良いだろう。
 .IP *
 .IP *
-子プロセスは親プロセスが持つ
-オープンファイルディスクリプタの集合のコピーを引き継ぐ。
-子プロセスの各ファイルディスクリプタは、
-親プロセスのファイルディスクリプタに対応する
-同じオープンファイル記述 (file description) を参照する
-.RB ( open (2)
-を参照)。
-これは 2 つのディスクリプタが、ファイル状態フラグ・
-現在のファイルオフセット、シグナル駆動 (signal-driven) I/O 属性
-.RB ( fcntl (2)
-における
-.BR F_SETOWN ,
-.B F_SETSIG
-の説明を参照) を共有することを意味する。
+子プロセスは親プロセスが持つ オープンファイルディスクリプタの集合のコピーを引き継ぐ。 子プロセスの各ファイルディスクリプタは、
+親プロセスのファイルディスクリプタに対応する 同じオープンファイル記述 (file description) を参照する (\fBopen\fP(2)
+を参照)。 これは 2 つのディスクリプタが、ファイル状態フラグ・ 現在のファイルオフセット、シグナル駆動 (signal\-driven) I/O 属性
+(\fBfcntl\fP(2)  における \fBF_SETOWN\fP, \fBF_SETSIG\fP の説明を参照) を共有することを意味する。
 .IP *
 .IP *
-子プロセスは親プロセスが持つオープンメッセージキューディスクリプタ
-.RB ( mq_overview (7)
-を参照) の集合のコピーを引き継ぐ。
-子プロセスの各ディスクリプタは、
-親プロセスのディスクリプタに対応する
-同じオープンメッセージキューディスクリプタを参照する。
-これは 2 つのディスクリプタが同じフラグ
-.RI ( mq_flags )
-を共有することを意味する。
+子プロセスは親プロセスが持つオープンメッセージキューディスクリプタ (\fBmq_overview\fP(7)  を参照) の集合のコピーを引き継ぐ。
+子プロセスの各ディスクリプタは、 親プロセスのディスクリプタに対応する 同じオープンメッセージキューディスクリプタを参照する。 これは 2
+つのディスクリプタが同じフラグ (\fImq_flags\fP)  を共有することを意味する。
 .IP *
 .IP *
-子プロセスは、親プロセスのオープン済みのディレクトリストリームの集合
-.RB ( opendir (3)
-参照) のコピーを継承する。
-POSIX.1-2001 では、親プロセスと子プロセス間の対応するディレクトリストリーム
-はディレクトリストリームの位置 (positioning) を共有してもよいとされている。
-Linux/glibc ではディレクトリストリームの位置の共有は行われていない。
+子プロセスは、親プロセスのオープン済みのディレクトリストリームの集合 (\fBopendir\fP(3)  参照) のコピーを継承する。
+POSIX.1\-2001 では、親プロセスと子プロセス間の対応するディレクトリストリーム はディレクトリストリームの位置 (positioning)
+を共有してもよいとされている。 Linux/glibc ではディレクトリストリームの位置の共有は行われていない。
 .SH 返り値
 .SH 返り値
-成功した場合、親プロセスには子プロセスの PID が返され、
-子プロセスには 0 が返される。
-失敗した場合、親プロセスに \-1 が返され、子プロセスは生成されず、
-.I errno
-が適切に設定される。
+成功した場合、親プロセスには子プロセスの PID が返され、 子プロセスには 0 が返される。 失敗した場合、親プロセスに \-1
+が返され、子プロセスは生成されず、 \fIerrno\fP が適切に設定される。
 .SH エラー
 .SH エラー
-.TP
-.B EAGAIN
-親プロセスのページ・テーブルのコピーと
-子プロセスのタスク構造に生成に必要なメモリを
-.BR fork ()
-が割り当てることができなかった。
-.TP
-.B EAGAIN
-呼び出し元の
-.B RLIMIT_NPROC
-資源の制限 (resource limit) に達したために、新しいプロセスを生成できなかった。
-この制限を超えるには、プロセスは
-.B CAP_SYS_ADMIN
-または
-.B CAP_SYS_RESOURCE
-ケーパビリティ (capability) を持っていなくてはならない。
-.TP
-.B ENOMEM
-メモリが足りないために、
-.BR fork ()
-は必要なカーネル構造体を割り当てることができなかった。
+.TP 
+\fBEAGAIN\fP
+親プロセスのページ・テーブルのコピーと 子プロセスのタスク構造に生成に必要なメモリを \fBfork\fP()  が割り当てることができなかった。
+.TP 
+\fBEAGAIN\fP
+呼び出し元の \fBRLIMIT_NPROC\fP 資源の制限 (resource limit) に達したために、新しいプロセスを生成できなかった。
+この制限を超えるには、プロセスは \fBCAP_SYS_ADMIN\fP または \fBCAP_SYS_RESOURCE\fP ケーパビリティ
+(capability) を持っていなくてはならない。
+.TP 
+\fBENOMEM\fP
+メモリが足りないために、 \fBfork\fP()  は必要なカーネル構造体を割り当てることができなかった。
 .SH 準拠
 .SH 準拠
-SVr4, 4.3BSD, POSIX.1-2001.
+SVr4, 4.3BSD, POSIX.1\-2001.
 .SH 注意
 .SH 注意
-Linux では、
-.BR fork ()
-を 書き込み時コピー (copy-on-write)・ページを用いて実装している。
-したがって、fork を行うことの唯一のデメリットは、
-親プロセスのページ・テーブルを複製と
-子プロセス自身のタスク構造の作成のための時間とメモリが必要なことである。
-
-glibc 2.3.3 以降では、
-NPTL スレッド実装の一部として提供されている glibc の
-.BR fork ()
-ラッパー関数は、
-カーネルの
-.BR fork ()
-システムコールを起動するのではなく、
-.BR clone (2)
-を起動する。
-.BR clone (2)
-に渡すフラグとして、伝統的な
-.BR fork ()
-システムコールと同じ効果が得られるようなフラグが指定される。
-glibc のラッパー関数は
-.BR pthread_atfork (3)
-を使って設定されている任意の fork ハンドラを起動する。
-.\" getpid(2) が正しい値を返すことができるように何らかの処理を行う。
+.PP
+Linux では、 \fBfork\fP()  を 書き込み時コピー (copy\-on\-write)・ページを用いて実装している。 したがって、fork
+を行うことの唯一のデメリットは、 親プロセスのページ・テーブルを複製と 子プロセス自身のタスク構造の作成のための時間とメモリが必要なことである。
 
 
+.\" nptl/sysdeps/unix/sysv/linux/fork.c
+.\" and does some magic to ensure that getpid(2) returns the right value.
+glibc 2.3.3 以降では、 NPTL スレッド実装の一部として提供されている
+glibc の\fBfork\fP() ラッパー関数は、 カーネルの \fBfork\fP() システムコール
+を起動するのではなく、\fBclone\fP(2) を起動する。
+\fBclone\fP(2) に渡すフラグとして、伝統的な \fBfork\fP() システムコールと
+同じ効果が得られるようなフラグが指定される (\fBfork\fP() の呼び出しは、
+\fIflags\fP に \fBSIGCHLD\fP だけを指定して \fBclone\fP(2) を呼び出すのと等価である)。
+glibc のラッパー関数は \fBpthread_atfork\fP(3) を使って設定されている
+任意の fork ハンドラを起動する。
 .SH 例
 .SH 例
-.BR pipe (2)
-および
-.BR wait (2)
-を参照。
+\fBpipe\fP(2)  および \fBwait\fP(2)  を参照。
 .SH 関連項目
 .SH 関連項目
-.BR clone (2),
-.BR execve (2),
-.BR setrlimit (2),
-.BR unshare (2),
-.BR vfork (2),
-.BR wait (2),
-.BR daemon (3),
-.BR capabilities (7),
-.BR credentials (7)
+\fBclone\fP(2), \fBexecve\fP(2), \fBsetrlimit\fP(2), \fBunshare\fP(2), \fBvfork\fP(2),
+\fBwait\fP(2), \fBdaemon\fP(3), \fBcapabilities\fP(7), \fBcredentials\fP(7)