Documentación offline PHP master

sapi_windows_set_ctrl_handler

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

sapi_windows_set_ctrl_handler

Establece o elimina un gestor de eventos CTRL

Descripción#

sapi_windows_set_ctrl_handler(callable $handler, [bool $add]): bool
```php

Establece o elimina un gestor de eventos `CTRL`, que permite a los procesos CLI de Windows interceptar o ignorar los eventos `CTRL+C` y `CTRL+BREAK`. Tenga en cuenta que en entornos multihilo, esto solo es posible cuando se llama desde el hilo principal.

## Parámetros

`handler`  
Una función de retrollamada a establecer o eliminar. Si se establece, esta función será llamada cada vez que ocurra un evento <span class="keycombo"> +CTRL+ +C+ </span> o <span class="keycombo"> +CTRL+ +BREAK+ </span>. La función debe tener la siguiente firma:

```php
handler(int $event): void

event
El evento CTRL que se ha recibido; ya sea PHP_WINDOWS_EVENT_CTRL_C o PHP_WINDOWS_EVENT_CTRL_BREAK.

Establecer un null handler hace que el proceso ignore los eventos +CTRL+ +C+ o +CTRL+ +BREAK+ .

add
Si true, el gestor se establece. Si false, el gestor se elimina.

Valores devueltos#

Esta función retorna true en caso de éxito o false si ocurre un error.

Ejemplos#

Uso básico de sapi_windows_set_ctrl_handler

Este ejemplo muestra cómo interceptar los eventos CTRL.

<?php
function ctrl_handler(int $event)
{
    switch ($event) {
        case PHP_WINDOWS_EVENT_CTRL_C:
            echo "Se ha presionado CTRL+C\n";
            break;
        case PHP_WINDOWS_EVENT_CTRL_BREAK:
            echo "Se ha presionado CTRL+BREAK\n";
            break;
    }
}

sapi_windows_set_ctrl_handler('ctrl_handler');
while (true); // bucle infinito, para que el gestor pueda ser activado
?>

Véase también#

sapi_windows_generate_ctrl_event