pcntl_sigwaitinfo

Waits for signals

&reftitle.description; ``int``false```pcntl_sigwaitinfo` `array` `signals` `array` `info`[]

The `pcntl_sigwaitinfo` function suspends execution of the calling script until one of the signals given in `signals` are delivered. If one of the signal is already pending (e.g. blocked by `pcntl_sigprocmask`), `pcntl_sigwaitinfo` will return immediately.

&reftitle.parameters;

`signals`

- Array of signals to wait for.

`info`

- The `info` parameter is set to an array containing information about the signal.

  The following elements are set for all signals:

  - signo: Signal number
  - errno: An error number
  - code: Signal code

  The following elements may be set for the `SIGCHLD` signal:

  - status: Exit value or signal
  - utime: User time consumed
  - stime: System time consumed
  - pid: Sending process ID
  - uid: Real user ID of sending process

  The following elements may be set for the `SIGILL`, `SIGFPE`, `SIGSEGV` and `SIGBUS` signals:

  - addr: Memory location which caused fault

  The following element may be set for the `SIGPOLL` signal:

  - band: Band event
  - fd: File descriptor number
&reftitle.returnvalues;

Returns a signal number on success,&return.falseforfailure;.

&reftitle.changelog;

&Version; | &Description;
8.4.0 | A `ValueError` is thrown if `signal` is empty.
8.4.0 | A `TypeError` is thrown if `signal` value is not an `int`.
8.4.0 | A `ValueError` is thrown if `signal` value is invalid.

&reftitle.examples;

### `pcntl_sigwaitinfo` example

    <?php
    echo "Blocking SIGHUP signal\n";
    pcntl_sigprocmask(SIG_BLOCK, array(SIGHUP));

    echo "Sending SIGHUP to self\n";
    posix_kill(posix_getpid(), SIGHUP);

    echo "Waiting for signals\n";
    $info = array();
    pcntl_sigwaitinfo(array(SIGHUP), $info);
    ?>

&reftitle.seealso;

- `pcntl_sigprocmask`
- `pcntl_sigtimedwait`