函数名:pcntl_wtermsig()
适用版本:PHP 4 >= 4.1.0, PHP 5, PHP 7
用法:pcntl_wtermsig() 函数用于获取由子进程终止所导致的信号编号。
语法:int pcntl_wtermsig ( int $status )
参数:
- status:必需,由 pcntl_waitpid() 或 pcntl_wait() 函数返回的子进程状态。
返回值:
- 返回一个整数,代表由子进程终止所导致的信号编号。
示例:
<?php
$pid = pcntl_fork();
if ($pid == -1) {
die('子进程创建失败');
} elseif ($pid) {
// 父进程代码
pcntl_wait($status); // 等待子进程退出
if (pcntl_wifexited($status)) {
echo "子进程正常退出\n";
} elseif (pcntl_wifsignaled($status)) {
$termsig = pcntl_wtermsig($status);
echo "子进程被信号 {$termsig} 终止\n";
}
} else {
// 子进程代码
sleep(3); // 子进程休眠3秒
exit(123); // 子进程退出并返回状态码123
}
?>
在上面的示例中,我们首先使用 pcntl_fork() 创建了一个子进程。然后在父进程中使用 pcntl_wait() 等待子进程退出,并通过 pcntl_wtermsig() 函数获取子进程终止所导致的信号编号。最后,根据返回的信号编号进行相应的处理。如果子进程正常退出,则输出 "子进程正常退出",如果子进程被信号终止,则输出 "子进程被信号 {信号编号} 终止"。