ما هي معادلات بايثون لوظائف sighold وsigrelse الموجودة في لغة C؟

StackOverflow https://stackoverflow.com/questions/113170

  •  02-07-2019
  •  | 
  •  

سؤال

يبدو أن وحدة إشارة Python لا تحتوي على أي شيء مشابه لوظائف sighold وsigrelse الموجودة في لغة C، باستخدام signal.h.هل هناك معادلات بايثون لـ أي نوع؟

تشكرات!

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

المحلول

لا توجد روابط مباشرة لهذا في بايثون.الوصول إليها من خلال ctypes أمر سهل بما فيه الكفاية؛هنا مثال.

import ctypes, signal
libc = ctypes.cdll.LoadLibrary("libc.so.6")
libc.sighold(signal.SIGKILL)
libc.sigrelse(signal.SIGKILL)

لست على دراية باستخدام هذه الاستدعاءات، لكن انتبه إلى أن معالجات الإشارة في Python تعمل بشكل مختلف عن لغة C.عندما يتم إرفاق كود بايثون بإشارة رد الاتصال، يتم التقاط الإشارة على الجانب C من المترجم الفوري ويتم وضعها في قائمة الانتظار.تتم مقاطعة المترجم أحيانًا لأغراض التدبير المنزلي الداخلي (وتبديل الخيط، وما إلى ذلك).وخلال هذه المقاطعة سيتم استدعاء معالج بايثون للإشارة.

كل هذا لأقوله، فقط انتبه إلى أن معالجة إشارات Python أقل تزامنًا من معالجات إشارات C العادية.

نصائح أخرى

لا توجد طريقة "لحظر" الإشارات مؤقتًا من الأقسام المهمة (نظرًا لأن هذا غير مدعوم في جميع إصدارات Unix).

https://docs.python.org/library/signal.html

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