父進(jìn)程使用while(1) 掛起進(jìn)程,子進(jìn)程中用到了exit(1) 但是最終ps -ef |grep php 發(fā)現(xiàn)子進(jìn)程并沒有退出,是什么原因造成這個問題的,正常來說子進(jìn)程不是應(yīng)該會退出嗎?
<?php
for($i=0;$i<10;$i++){
fork_worker();
}
function fork_worker(){
$pid = pcntl_fork();
if($pid == 0){ //child processes
echo "子進(jìn)程\r\n";
$this_id = getmypid();
echo $this_id."\r\n";
exit(1);
}elseif($pid > 0){ //master processes
echo "父進(jìn)程\r\n";
}
}
while(1);
?>
忘答疑解惑
2 回答

長風(fēng)秋雁
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個贊
父進(jìn)程沒有調(diào)用 wait
的情況下,子進(jìn)程會成為僵尸進(jìn)程,不會被回收。
<?php
$id = [];
for($i=0;$i<10;$i++){
$id[] = fork_worker();
}
function fork_worker(){
$pid = pcntl_fork();
if($pid == 0){ //child processes
echo "子進(jìn)程\r\n";
$this_id = getmypid();
echo $this_id."\r\n";
exit(1);
}elseif($pid > 0){ //master processes
echo "父進(jìn)程\r\n";
return $pid;
}
}
foreach($id as $i) {
pcntl_wait($i);
}
while(1);
?>
- 2 回答
- 0 關(guān)注
- 1498 瀏覽
添加回答
舉報(bào)
0/150
提交
取消