sum =2 时为什么不会挂起父进程呢
$sum = 0;
while(true){
$sum++;
$pid= pcntl_fork();
switch($pid){
case "-1":
echo"couldn't fork";
break;
case "0":{
var_dump(getmypid());
var_dump(pcntl_wifexited($status), pcntl_wifstopped($status), pcntl_wifsignaled($status), pcntl_wexitstatus($status), pcntl_wtermsig($status));
echo 'ppppppppp';
exit(0);
}
default: {
if($sum == 2){
// $subPid = pcntl_waitpid(-1, $status, SI_ASYNCIO);
$subPid = pcntl_wait($status);
echo '挂起'."\n";
}
var_dump('主'.getmypid());
var_dump($subPid);
echo "I'm child" . getmypid() . "\n";
echo 'ccp';
//就会执行子进程
sleep(30);
echo "\n\n\n";
}
// exit(0);
}
var_dump(getmypid());
echo 'iiiiiii';
if($sum == 2)
break;
}
这个是答案
string(8) "主26003"
NULL
I'm child26003
ccpint(26004)
bool(true)
bool(false)
bool(false)
int(0)
int(0)
ppppppppp
int(26003)
iiiiiii挂起
string(8) "主26003"
int(26004)
I'm child26003
ccpint(26005)
bool(true)
bool(false)
bool(false)
int(0)
int(0)
ppppppppp
int(26003)
iiiiiii
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
认证高级PHP讲师