sapi_windows_generate_ctrl_event

Send a CTRL event to another process

&reftitle.description; `bool` `sapi_windows_generate_ctrl_event` `int` `event` `int` `pid` 0

Sends a CTRL event to another process in the same process group.

&reftitle.parameters;

`event`

- The `CTRL` event to send; either `PHP_WINDOWS_EVENT_CTRL_C` or `PHP_WINDOWS_EVENT_CTRL_BREAK`.

`pid`

- The ID of the process to which to send the event to. If `0` is given, the event is sent to all processes of the process group.

&reftitle.returnvalues;

&return.success;

&reftitle.examples;

### Basic `sapi_windows_generate_ctrl_event` Usage

This example shows how to pass along `CTRL+BREAK` events to a child process. In this case the child process echoes `I'm still alive` every second, until the user presses `CTRL+BREAK`, what causes only the child process to be terminated.

    <?php
    // forward CTRL+BREAK events to the child process
    sapi_windows_set_ctrl_handler('sapi_windows_generate_ctrl_event');

    // create a child process which echoes every second
    $cmd = ['php', '-r', 'while (true) { echo "I\'m still alive\n"; sleep(1); }'];
    $descspec = array(['pipe', 'r'], ['pipe', 'w'], ['pipe', 'w']);
    $options = ['create_process_group' => true];
    $proc = proc_open($cmd, $descspec, $pipes, null, null, $options);
    while (true) {
        echo fgets($pipes[1]);
    }
    ?>

&reftitle.seealso;

- `proc_open`
- `sapi_windows_set_ctrl_handler`