Pregunta

¿Alguien puede decirme qué sucede si el programa multiproceso recibe la señal SIGSTOP durante la ejecución de mq_send?

¿Fue útil?

Solución

La página de manual para mq_send indica que se implementa sobre mq_timedsend , que es una llamada al sistema en Linux. Las llamadas al sistema son generalmente atómicas en el sentido de que tienen éxito o no. Si una señal interrumpe una llamada al sistema, el comportamiento habitual es devolver -1 y establecer errno en EINTR . Parece que mq_send tiene este comportamiento.

Básicamente, debe verificar EINTR y volver a intentar la llamada si falla de esta manera. Esto es particularmente importante para las llamadas al sistema que pueden bloquearse como recv o select , ya que tienen una mayor probabilidad de ser interrumpidas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top