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>
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.