سؤال

ويمكن لأي أحد أن يقول لي ماذا يحدث إذا يتلقى برنامج مولتيثريد إشارة SIGSTOP أثناء تنفيذ mq_send؟

هل كانت مفيدة؟

المحلول

وصفحة الرجل لmq_send تشير تنفيذه على رأس mq_timedsend، وهو استدعاء النظام في لينكس. استدعاءات النظام هي ذرية عموما وذلك لأنها إما تنجح أو لم يفعلوا ذلك. إذا تمت مقاطعة مكالمة النظام عن طريق إشارة، فإن السلوك المعتاد هو أن يعود -1 ومجموعة errno إلى EINTR. يبدو mq_send لديه هذا السلوك.

والأساس، ويجب أن تحقق لEINTR، وإعادة المحاولة المكالمة إذا فشلت في هذا السبيل. هذا مهم بشكل خاص للمكالمات النظام التي قد منع مثل recv أو select، لأن لديهم فرصة أكبر من أن يقطعه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top