函数名称:pcntl_wait()
函数描述:pcntl_wait()函数用于等待或返回fork的子进程状态。
适用版本:PHP 4 >= 4.1.0, PHP 5, PHP 7
用法: int pcntl_wait ( int &$status [, int $options = 0 [, array &$rusage ]] )
参数:
返回值:
示例:
<?php
$pid = pcntl_fork();
if ($pid == -1) {
// 创建子进程失败
die('fork failed');
} elseif ($pid) {
// 父进程
pcntl_wait($status); // 等待子进程结束
if (pcntl_wifexited($status)) {
echo "子进程正常终止,退出状态为:" . pcntl_wexitstatus($status) . "\n";
} elseif (pcntl_wifstopped($status)) {
echo "子进程被暂停,暂停信号为:" . pcntl_wstopsig($status) . "\n";
} elseif (pcntl_wifsignaled($status)) {
echo "子进程被信号终止,终止信号为:" . pcntl_wtermsig($status) . "\n";
}
} else {
// 子进程
sleep(5); // 模拟子进程工作
exit(0); // 子进程正常退出
}
?>
在上面的示例中,我们使用pcntl_fork()函数创建了一个子进程。父进程使用pcntl_wait()函数等待子进程结束,并根据子进程的状态进行相应的处理。子进程在sleep()函数后调用exit()函数正常退出。父进程通过pcntl_wifexited()、pcntl_wifstopped()和pcntl_wifsignaled()等函数判断子进程的结束状态,并使用pcntl_wexitstatus()、pcntl_wstopsig()和pcntl_wtermsig()等函数获取相应的状态信息。