FORK(2)

名前
fork, vfork - 子プロセスを生成する

書式
#include <unistd.h>

pid_t fork(void);
pid_t vfork(void);

説明
fork は親プロセスとPID(プロセス ID)，および PPID(親プロセス ID)だけが異 なる子プロセスを生成する。 この時，資源利用量は 0 に設定される ファイルロックと保留しているシグナルは引き継がれない。

Linux では， fork を 書き込み時コピー(copy-on-write)・ページを用いて実装している。 したがって、fork に必要な時間とメモリは 親プロセスのページ・テーブルを複製するためと、 子プロセス自身のタスク構造を作るのに必要なもののみである。

返り値
成功した場合、親の実行スレッドには子プロセスの PID が返され， 子の実行スレッドには 0 が返される。 失敗した場合、親プロセスに -1 を返し，子プロセスは生成されない。 また， errno が適切に設定される。

エラー

EAGAIN
    fork は，親プロセスのページ・テーブルをコピーし子プロセスのタスク構造に 生成に必要なメモリを割り当てることができなかった。

バグ
Linux では， vfork は， fork の別名にすぎない。

準拠
fork は SVr4, SVID, POSIX, X/OPEN, BSD 4.3 に準拠している。

関連項目
clone(2), execve(2), wait(2)