Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

151
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!