pcntl_wifexited总是返回true
问题描述:
井子进程可能会因错误退出,但pcntl_wifexited总是返回truepcntl_wifexited总是返回true
<?php
//Sample code :
$child_pid = pcntl_fork();
if ($child_pid === 0)
{
//This is child process
$my_var = rand(1,5);
if($my_var == 2)
{
//2 is not allowed
exit(1); //exit with error
}
if($my_var == 4)
{
//4 is unknown
i_crash_now(); //crash
}
echo 'end of child' . "\n";
exit(0); //exit standard
}
else
{
sleep(1); //waiting for child with ninja code (don't do that at home, this was made by professional ninjas)
pcntl_waitpid($child_pid, $status, WNOHANG);
var_dump(pcntl_wstopsig($status)); //in case 2 > 1, in case 4 > 255, else 0
var_dump(pcntl_wifexited($status)); //always true;
}
exit(0);
我可以使用信号来发现错误,但我没有得到与pcntl_wifexited什么是错的()。
这是否与WNOHANG
选项有关?
答
我想象pcntl_waitpid行为类似于正常的waitpid调用。
如果没有进程终止,WNOHANG会强制waitpid返回0 [类似于零超时]。
因此,退出代码将显示为正常。
关于忍者代码的LOL! – 2011-01-20 17:24:31
如果子状态码表示正常退出,则返回TRUE,否则返回FALSE。 – 2011-01-20 18:06:17