转:
1、捕获子进程退出(监听SIGCHLD信号,然后调用 pcntl_wait 函数)
declare(ticks=1);pcntl_signal(SIGCHLD, "sig_handler");function sig_handler($signo){ switch ($signo) { case SIGCHLD: $status = 0; $child_id = pcntl_wait($status); echo sprintf("child exit id: {$child_id} \n"); exit(0); break; default: echo 'uncaugh signal !'; }}$pid = pcntl_fork();if($pid>0){ echo sprintf("fork child id: {$pid} \n"); while(1){ sleep(1); }}else{ echo "child exit \n";}
2、捕获子进程退出(直接调用 pcntl_wai* 函数)
3、捕获子进程退出 (io复用监控进程间的管道可读)