1--TEST-- 2pcntl_waitid() 3--EXTENSIONS-- 4pcntl 5posix 6--SKIPIF-- 7<?php 8 if (!function_exists('pcntl_waitid')) die('skip pcntl_waitid unavailable'); 9?> 10--FILE-- 11<?php 12$pid = pcntl_fork(); 13if ($pid == -1) { 14 die("failed"); 15} else if ($pid) { 16 // invalid flags 17 var_dump(pcntl_waitid(P_PID, $pid, $siginfo, 0)); 18 var_dump(pcntl_get_last_error() == PCNTL_EINVAL); 19 20 var_dump(pcntl_waitid(P_PID, $pid, $siginfo, WSTOPPED)); 21 posix_kill($pid, SIGCONT); 22 var_dump(pcntl_waitid(P_PID, $pid, $siginfo, WCONTINUED)); 23 posix_kill($pid, SIGUSR1); 24 var_dump(pcntl_waitid(P_PID, $pid, $siginfo, WEXITED)); 25 var_dump($siginfo["status"]); 26} else { 27 pcntl_signal(SIGUSR1, function ($_signo, $_siginfo) { exit(42); }); 28 posix_kill(posix_getpid(), SIGSTOP); 29 pcntl_signal_dispatch(); 30 sleep(42); 31 pcntl_signal_dispatch(); 32 exit(6); 33} 34?> 35--EXPECTF-- 36bool(false) 37bool(true) 38bool(true) 39bool(true) 40bool(true) 41int(42) 42