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

102
Views
¿Se detienen todos los subprocesos cuando uno de ellos recibe una señal y ninguno de ellos la bloquea?

Estoy ejecutando una aplicación multiproceso escrita en C en Linux.

Para detener la ejecución, envío SIGINT y, desde el controlador de señales, llamo a varias rutinas de limpieza y, finalmente, llamo a exit(0) .

¿Siguen ejecutándose los otros subprocesos o pueden ejecutarse (cambio de contexto) mientras el controlador ejecuta las rutinas de limpieza?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

El manejo de una señal no provoca la suspensión de otros subprocesos durante la ejecución del controlador de señales. Además, generalmente no es seguro llamar a la mayoría de las funciones que necesitaría para la limpieza (¡incluida incluso exit !) Desde un controlador de señal a menos que pueda asegurarse de que no interrumpa una función no segura de señal asíncrona.

Lo que debe hacer es simplemente almacenar el hecho de que SIGINT se recibió de alguna manera segura para señales asíncronas y hacer que el programa actúe en esa condición como parte de su flujo normal de ejecución, fuera del controlador de señales. Luego, puede sincronizar adecuadamente con otros subprocesos (usando mutexes, variables de condición, etc.) para lograr un apagado adecuado y seguro. El método ideal es ni siquiera instalar un controlador de señales, sino bloquear todas las señales y tener un subproceso de manejo de señales dedicado que llame a sigwaitinfo en un bucle para aceptar señales.

over 4 years ago · Santiago Trujillo Report

0

Sí, se entrega una señal a un subproceso, elegido de una manera no especificada. Sin embargo, solo se consideran los subprocesos que no bloquean la señal; si todos los subprocesos bloquean la señal, permanece en cola hasta que un subproceso la desbloquea.

(Entonces, si hace que todos los subprocesos bloqueen la señal, puede usar la señal como un mecanismo de sincronización determinista entre procesos, por ejemplo, usando sigwait ).

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!