需要说明pcnt_fork()

时间:2014-03-27 06:37:08

标签: php pcntl

我是pcnt_fork的新手,

<?php
  $pid = pcntl_fork();
  echo $pid;
  if($pid) {
  // parent process runs what is here
  echo "-parent\n";
   }
  else {
  // child process runs what is here
  echo "-child\n";
  } ?>

ouptut: 25347父 0 - 子

我的问题是,这里$ pid将是子进程的进程ID,即25347对吗? 然后它应该回应父母那么为什么它也给0孩子作为输出......任何人都可以解释

3 个答案:

答案 0 :(得分:0)

pcntl-fork(就像叉子一样)分叉一个孩子,但它并没有关闭父母。

最后,您有2个正在运行的进程,即父进程和子进程。

您收到的2行印刷品来自2个不同的流程:收到孩子的pid的父母和孩子本身。

答案 1 :(得分:0)

成功时,子进程的PID在父进程的执行中返回,并在子进程的执行中返回0。失败时,将在父上下文中返回-1,不会创建子进程,并引发PHP错误。

答案 2 :(得分:0)

这是fork操作后的状态:

           fork()
      +------+-----+
    child    |   parent
-------------+------------
> echo $pid  | > echo $pid
0            | 4650