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

100
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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