質問

mq_sendの実行中にマルチスレッドプログラムがSIGSTOPシグナルを受信した場合、何が起こるか教えてください。

役に立ちましたか?

解決

mq_send のmanページは、Linuxのシステムコールである mq_timedsend の上に実装されていることを示しています。システムコールは一般に、成功するかしないかのどちらかという点でアトミックです。システムコールがシグナルによって中断された場合、通常の動作は-1を返し、 errno EINTR に設定することです。 mq_send にこの動作があるようです。

基本的に、 EINTR を確認し、この方法で失敗した場合は呼び出しを再試行する必要があります。これは、 recv select のようにブロックされる可能性のあるシステムコールにとって特に重要です。割り込みが発生する可能性が高いからです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top