es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Capturar SIGINT en Xcode 12.5.1

En Xcode, quiero hacer algo cuando se presiona ctrl + c, pero parece que lldb no captura la señal SIGINT. Intenté con el programa C++ más simple, solo para una prueba:

#include <stdio.h>
#include <signal.h>

void sigintHandler(int sig_num)
{
    signal(SIGINT, sigintHandler);
    printf("Estoy haciendo algo \n");
    fflush(stdout);
}

int main ()
{
    signal(SIGINT, sigintHandler);

    while(1)
    {        
    }
    return 0;
}

Pero no funcionó. También intenté con la solución:

process handle SIGINT -s false
process handle SIGINT -p true

Aún así, no hace nada. ¿Qué estoy haciendo mal?</signal.h></stdio.h>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando capturar la señal SIGINT en Xcode, pero el depurador (lldb) no la está capturando.

    Una posible solución es agregar la línea “set use-external-irpc false” en tu archivo ~/.lldbinit. Esto obligará a lldb a capturar las señales por sí mismo, en lugar de utilizar un proceso externo.

    Otra solución sería cambiar tu controlador de la señal SIGINT a algo diferente, como capturar la señal utilizando la función “std::signal” en lugar de la función “signal”. Esto puede funcionar mejor con Xcode y lldb.

    También es posible que haya un problema con tu configuración de Xcode o lldb, por lo que es posible que desees verificar si hay actualizaciones o reinstalar Xcode/lldb si es necesario.

Comments are closed.