时间:2021-07-01 10:21:17 帮助过:20人阅读
$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
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