array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.pcntl-fork.php', 1 => 'pcntl_fork', ), 'up' => array ( 0 => 'ref.pcntl.php', 1 => 'PCNTL 関数', ), 'prev' => array ( 0 => 'function.pcntl-exec.php', 1 => 'pcntl_exec', ), 'next' => array ( 0 => 'function.pcntl-get-last-error.php', 1 => 'pcntl_get_last_error', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/pcntl/functions/pcntl-fork.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
pcntl_fork — 現在実行中のプロセスをフォークする
pcntl_fork() 関数は、親プロセスとその PID および PPID のみが異なる子プロセスを生成します。システム上でのフォークの 動作の具体的な詳細については、実行するシステムの fork(2) の マニュアルを参照ください。
この関数にはパラメータはありません。
成功時に、子プロセスの PID が親プロセスの実行スレッドに返され、 子プロセスの実行スレッドには 0 が返されます。失敗した場合、親プロセスの コンテキストに -1 が返され、子プロセスは生成されずに、PHP のエラーが 出力されます。
例1 pcntl_fork() の例
<?php
$pid = pcntl_fork();
if ($pid == -1) {
die('fork できません');
} else if ($pid) {
// 親プロセスの場合
pcntl_wait($status); // ゾンビプロセスから守る
} else {
// 子プロセスの場合
}
?>