Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有pcntl_分叉的PHP无限循环_Php_Loops_Pcntl - Fatal编程技术网

带有pcntl_分叉的PHP无限循环

带有pcntl_分叉的PHP无限循环,php,loops,pcntl,Php,Loops,Pcntl,我需要编写满足以下几个条件的代码: 是一个无限循环 4叉后,进入睡眠状态5秒 在子进程中,执行一些事情 在父进程中时,再次分叉 当它返回-1时,捕获异常 以下是我到目前为止所写的内容: while(true) { for ($i = 1; $i <= 4; ++$i) { $pid = pcntl_fork(); if($pid == 0){ //execute stuff } else if ($pid

我需要编写满足以下几个条件的代码:

  • 是一个无限循环
  • 4叉后,进入睡眠状态5秒
  • 在子进程中,执行一些事情
  • 在父进程中时,再次分叉
  • 当它返回-1时,捕获异常
以下是我到目前为止所写的内容:

while(true) {
    for ($i = 1; $i <= 4; ++$i) {
        $pid = pcntl_fork();
        if($pid == 0){
            //execute stuff
        } else if ($pid == -1){
            //error
        } else if($pid > 0) {
            //fork again?
        }
    }
    sleep(5);
}
while(true){
对于($i=1;$i 0){
//又是叉子?
}
}
睡眠(5);
}

但我觉得这完全是错误的。而且我也不知道如何再次在家长身上叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉叉。这应该是什么样子?

这是为了学习,还是你正在解决一个真正的问题?另外,在您分叉4次并进入睡眠(5)后,代码应该再次分叉4次还是只分叉一次?您得到的是分叉炸弹-每个子进程也会分叉。@Mjh学习目的。我的朋友刚刚给了我代码应该满足的条件。它应该再去4次。一次又一次。直到时间结束,或者服务器关闭:p一旦您在
中,而(true)
,在睡眠5秒钟后,您将再次分叉(这是您的父进程正在做的)。开始阅读
pcntl\u fork