xref: /php-src/ext/pcntl/tests/pcntl_waitid.phpt (revision c2fd071d)
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