Skip to main content

إشارة - لينكس / قيادة يونكس

Linux Tutorial for Beginners: Introduction to Linux Operating System (قد 2025)

Linux Tutorial for Beginners: Introduction to Linux Operating System (قد 2025)
Anonim

يدعم Linux كلا الإشارات الموثوقة POSIX (المشار إليها فيما بعد بـ "الإشارات القياسية") وإشارات POSIX في الوقت الفعلي.

الإشارات القياسية

يدعم Linux الإشارات القياسية المدرجة أدناه. تعتمد العديد من أرقام الإشارة على العمارة ، كما هو موضح في عمود "القيمة". (حيث يتم إعطاء ثلاث قيم ، يكون أولها عادة صالحًا لـ alpha و sparc ، والوسط لـ i386 ، و ppc ، و sh ، وآخر من أجل mips.

أ- يدل على أن الإشارة غير موجودة في البنية المقابلة.)

تحدد الإدخالات الموجودة في عمود "الإجراء" بالجدول الإجراء الافتراضي للإشارة ، كما يلي:

مصطلح

الإجراء الافتراضي هو إنهاء العملية.

IGN

الإجراء الافتراضي هو تجاهل الإشارة.

النواة

الإجراء الافتراضي هو إنهاء العملية وتفريغ الأساسية.

توقف

الإجراء الافتراضي هو إيقاف العملية.

أولاً الإشارات الموضحة في معيار POSIX.1 الأصلي.

إشارةالقيمةعملتعليق
أو موت عملية السيطرة
SIGINT2مصطلحمقاطعة من لوحة المفاتيح
SIGQUIT3النواةانسحب من لوحة المفاتيح
SIGILL4النواةتعليمات غير قانونية
SIGABRT6النواةإشارة إحباط من إجهاض (3)
SIGFPE8النواةاستثناء نقطة عائمة
SIGKILL9مصطلحاقتل الإشارة
SIGSEGV11النواةمرجع ذاكرة غير صالح
SIGPIPE13مصطلحالأنبوب المكسور: الكتابة إلى الأنبوب بدون قارئات
SIGALRM14مصطلحإشارة توقيت من إنذار (2)
SIGTERM15مصطلحإشارة الإنهاء
SIGUSR130,10,16مصطلحإشارة المعرفة من قبل المستخدم 1
SIGUSR231,12,17مصطلحإشارة المعرفة من قبل المستخدم 2
SIGCHLD20,17,18IGNتوقف الطفل أو أنهى
SIGCONT19,18,25 تواصل إذا توقفت
SIGSTOP17,19,23توقفعملية التوقف
SIGTSTP18,20,24توقفتوقف عن الكتابة في tty
SIGTTIN21,21,26توقفمدخلات tty لعملية الخلفية
SIGTTOU22,22,27توقفالناتج tty لعملية الخلفية

الإشاراتSIGKILL وSIGSTOP لا يمكن القبض عليه أو حظره أو تجاهله.

المقبل الإشارات ليست في معيار POSIX.1 ولكن وصفها في SUSV2 و SUSv3 / POSIX 1003.1-2001.

إشارةالقيمةعملتعليق
SIGPOLL مصطلححدث قابل للطعن (Sys V). مرادف SIGIO
SIGPROF27,27,29مصطلحاختتام الموقت التنميط
SIGSYS12,-,12النواةحجة سيئة للروتين (SVID)
SIGTRAP5النواةتتبع / نقطة توقف الفخ
SIGURG16,23,21IGNحالة عاجلة على المقبس (4.2 BSD)
SIGVTALRM26,26,28مصطلحالمنبه الظاهري (4.2 BSD)
SIGXCPU24,24,30النواةتجاوز حد وقت وحدة المعالجة المركزية (4.2 BSD)
SIGXFSZ25,25,31النواةتم تجاوز حد حجم الملف (4.2 BSD)

ما يصل إلى ويتضمن Linux 2.2 ، السلوك الافتراضي لـSIGSYS, SIGXCPU, SIGXFSZو (على معماريات أخرى غير SPARC و MIPS)SIGBUS كان إنهاء العملية (دون تفريغ الأساسية). (في بعض UNices الأخرى الإجراء الافتراضي لـSIGXCPU وSIGXFSZ هو إنهاء العملية بدون تفريغ أساسي.) يتوافق Linux 2.4 مع متطلبات POSIX 1003.1-2001 لهذه الإشارات ، مما يؤدي إلى إنهاء العملية بملف أساسي.

القادم مختلف اشارات اخرى.

إشارةالقيمةعملتعليق
SIGEMT7,-,7مصطلح
SIGSTKFLT-,16,-مصطلحخطأ المكدس في المعالج الثانوي (غير مستخدمة)
SIGIO23,29,22مصطلحI / O ممكن الآن (4.2 BSD)
SIGCLD-,-,18IGNمرادف لـ SIGCHLD
SIGPWR29,30,19مصطلحانقطاع التيار الكهربائي (النظام الخامس)
SIGINFO29,-,- مرادف ل SIGPWR
SIGLOST-,-,-مصطلحفقدت قفل الملف
SIGWINCH28,28,20IGNإشارة تغيير حجم النافذة (4.3 BSD ، Sun)
SIGUNUSED-,31,-مصطلحإشارة غير مستخدمة (سوف تكون SIGSYS)

(الإشارة 29 هيSIGINFO / SIGPWR على ألفا ولكنSIGLOST على sparc.)

SIGEMT لم يتم تحديدها في POSIX 1003.1-2001 ، ولكن لا تظهر أبدًا على معظم Unices الأخرى ، حيث يكون الإجراء الافتراضي لها هو إنهاء العملية باستخدام تفريغ أساسي.

SIGPWR (الذي لم يتم تحديده في POSIX 1003.1-2001) عادةً ما يتم تجاهله بشكل افتراضي على تلك الأرصدة الأخرى حيث تظهر.

SIGIO (الذي لم يتم تحديده في POSIX 1003.1-2001) يتم تجاهله افتراضيًا على العديد من Unices الأخرى.

إشارات الوقت الفعلي

يدعم Linux إشارات الوقت الفعلي كما تم تعريفها في الأصل في ملحقات الوقت الفعلي POSIX.4 (وهي الآن مضمنة في POSIX 1003.1-2001). يدعم Linux 32 إشارة في الوقت الحقيقي ، مرقمة من 32 (SIGRTMIN) إلى 63 (SIGRTMAX). (يجب أن تشير البرامج دائمًا إلى الإشارات في الوقت الفعلي باستخدام الترميزSIGRTMIN+ n ، نظرًا لأن نطاق أرقام الإشارات في الوقت الفعلي يختلف عبر Unices.)

على عكس الإشارات القياسية ، لا تحتوي إشارات الوقت الفعلي على معان محددة مسبقًا: يمكن استخدام المجموعة الكاملة من الإشارات في الوقت الفعلي لأغراض محددة من قبل التطبيق. (لاحظ أن تطبيق LinuxThreads يستخدم الإشارات الثلاثة الأولى في الوقت الفعلي).

الإجراء الافتراضي لإشارة في الوقت الحقيقي غير معالج هو إنهاء عملية الاستلام.

تتميز إشارات الوقت الفعلي بما يلي:

  1. يمكن أن تنتظم عدة حالات من إشارات الوقت الفعلي. على النقيض من ذلك ، إذا تم تسليم عدة مثيلات للإشارة القياسية أثناء حظر هذه الإشارة حاليًا ، يتم وضع مثيل واحد فقط في قائمة الانتظار.
  2. إذا تم إرسال الإشارة باستخدامsigqueue(2) ، يمكن إرسال قيمة مرافقة (إما عدد صحيح أو مؤشر) مع الإشارة. إذا قامت عملية الاستلام بإنشاء معالج لهذه الإشارة باستخدامSA_SIGACTION علم لsigaction(2) ثم يمكن الحصول على هذه البيانات عبر si_value مجال siginfo_t بنية تمريرها كوسيطة الثاني إلى المعالج. علاوة على ذلك ، فإن si_pid و si_uid يمكن استخدام حقول هذه البنية للحصول على PID ومعرف المستخدم الحقيقي لعملية إرسال الإشارة.
  3. يتم تسليم الإشارات في الوقت الحقيقي في أمر مضمون. يتم تسليم إشارات متعددة في الوقت الفعلي من نفس النوع بالترتيب الذي تم إرسالها به. إذا تم إرسال إشارات مختلفة في الوقت الفعلي إلى عملية ، يتم تسليمها بدءًا من الإشارة ذات الأرقام الأقل. (أي أن الإشارات ذات الأرقام المنخفضة لها الأولوية القصوى.)

إذا كانت الإشارات القياسية وفي الوقت الفعلي معلقة في عملية ما ، فإن POSIX تتركها غير محددة ويتم تسليمها أولاً. يعطي Linux ، مثل العديد من التطبيقات الأخرى ، الأولوية للإشارات القياسية في هذه الحالة.

ووفقًا لـ POSIX ، يجب أن يسمح التنفيذ على الأقل بوضع إشارات في الوقت الفعلي بما يعادل _POSIX_SIGQUEUE_MAX (32) في قائمة الانتظار. ومع ذلك ، بدلاً من وضع حد لكل عملية ، يفرض Linux حدًا على مستوى النظام على عدد إشارات الوقت الفعلي في قائمة الانتظار لكل العمليات.

يمكن الاطلاع على هذا الحد (ومع الامتياز) تغيرت عن طريق / بروك / SYS / نواة / rtsig ماكس ملف. ملف ذو صلة ، / بروك / SYS / نواة / rtsig ماكس ، يمكن استخدامها لمعرفة عدد الإشارات في الوقت الحقيقي في قائمة الانتظار حاليا.

التاكيد الى

POSIX.1

مهم: استخدم ال رجل أمر ( رجل٪ ) لمعرفة كيفية استخدام الأمر على جهاز الكمبيوتر الخاص بك.