ru_php/ext/pcntl/tests/pcntl_waitid.phpt

44 lines
1,006 B
PHP

--TEST--
pcntl_waitid()
--EXTENSIONS--
pcntl
posix
--SKIPIF--
<?php
if (!function_exists('pcntl_waitid')) die('skip pcntl_waitid unavailable');
?>
--FILE--
<?php
$pid = pcntl_fork();
if ($pid == -1) {
die("failed");
} else if ($pid) {
// invalid flags
var_dump(pcntl_waitid(P_PID, $pid, $siginfo, 0));
var_dump(pcntl_get_last_error() == PCNTL_EINVAL);
var_dump(pcntl_waitid(P_PID, $pid, $siginfo, WSTOPPED));
posix_kill($pid, SIGCONT);
var_dump(pcntl_waitid(P_PID, $pid, $siginfo, WCONTINUED));
posix_kill($pid, SIGUSR1);
var_dump(pcntl_waitid(P_PID, $pid, $siginfo, WEXITED));
var_dump($siginfo["status"]);
} else {
pcntl_signal(SIGUSR1, function ($_signo, $_siginfo) { exit(42); });
posix_kill(posix_getpid(), SIGSTOP);
$nanoseconds = 100;
while (true) {
pcntl_signal_dispatch();
time_nanosleep(0, $nanoseconds);
$nanoseconds *= 2;
}
}
?>
--EXPECTF--
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
int(42)