Frage

kann mir jemand sagen, was passiert, wenn Multi-Thread-Programm empfängt SIGSTOP Signal während der Ausführung von mq_send?

War es hilfreich?

Lösung

Der Mann Seite für mq_send gibt es oben auf mq_timedsend implementiert, die ein Systemaufruf in Linux. Systemaufrufe sind in der Regel atomar, dass sie entweder erfolgreich sein oder sie es nicht tun. Wenn ein Systemaufruf durch ein Signal unterbrochen wird, ist das übliche Verhalten zurückzukehren -1 und setzt errno EINTR. Es sieht aus wie mq_send dieses Verhalten hat.

Grundsätzlich sollten Sie für EINTR überprüfen, und den Anruf wiederholen, wenn es auf diese Weise versagt. Dies ist besonders wichtig für Systemaufrufe, die wie recv oder select blockieren können, da sie eine höhere Chance, unterbrochen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top