Question

Quelqu'un peut-il me dire ce qui se passe si un programme multithread reçoit le signal SIGSTOP lors de l'exécution de mq_send?

Était-ce utile?

La solution

La page de manuel relative à mq_send indique qu'elle est implémentée au-dessus de mq_timedsend , qui est un appel système sous Linux. Les appels système sont généralement atomiques dans la mesure où ils réussissent ou non. Si un appel système est interrompu par un signal, le comportement habituel consiste à renvoyer -1 et à définir errno sur EINTR . Il semble que mq_send ait ce comportement.

En gros, vous devriez vérifier EINTR et réessayer l'appel s'il échoue de cette manière. Ceci est particulièrement important pour les appels système susceptibles de se bloquer, tels que recv ou select , car ils risquent davantage d'être interrompus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top