Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

156
Vistas
El controlador pthread_cleanup_push no funciona para SIGINT (Ctrl C)

Tengo un código similar a:

 myThread() { pthread_cleanup_push(CleanupHandler , NULL) while (true) { /* some code here */ } pthread_cleanup_pop(NULL) } static void CleanupHandler(void *arg) { printf("Cleaned\n"); }

Pero si termino mi aplicación usando ^C (SIGINT), el controlador de limpieza no funciona. ¿Es eso lo esperado? ¿Cuál es la solución para que CleanupHandler funcione en ^C?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Sí, esto se espera, según la página man, pthread_cleanup_push() se ejecuta en las siguientes 3 circunstancias:

 1) When a thread is canceled 2) thread terminates using pthread_exit() 3) when pthread_cleanup_pop()

Para solucionar su problema, puede registrar un controlador de señal para SIGINT, desde ese controlador use pthread_exit() o pthread_cancel() para ejecutar su controlador. ¡Espero que esto ayude!

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda