التابع Signal.trap
في روبي
يربط التابع trap
معالجًا بإشارة محدَّدة.
البنية العامة
trap( signal, command ) → obj
trap( signal ) {| | block } → obj
يمثل المعامل signal
اسم إشارة (سلسلة نصية مثل "SIGALRM
" أو "SIGUSR1
" وغير ذلك) أو رقم إشارة. يمكن حذف الأحرف "SIG
" من اسم الإشارة.
تحدد التعليمة command
أو الكتلة block
المعطاة الشيفرة أو الأوامر المراد تنفيذها عند إطلاق الإشارة. إذا كانت التعليمة تساوي السلسلة النصية "IGNORE
" أو "SIG_IGN
"، فسيتم تجاهل الإشارة. أما إذا كانت تساوي "DEFAULT
" أو "SIG_DFL
"، فسيُستدعَى معالج روبي الافتراضي. لكن إذا كانت تساوي "EXIT
" ، فستُنهي الإشارة البرنامج النصي. وإذا كان التعليمة تساوي "SYSTEM_DEFAULT
"، فسيتم استدعاء معالج نظام التشغيل الافتراضي. خلا ذلك، سيتم تشغيل التعليمة أو الكتلة المعطاة.
سيتم استدعاء اسم الإشارة الخاص "EXIT
"، أو رقم الإشارة 0
، قبل إنهاء البرنامج مباشرة. وسيعيد التابع trap
المعالج السابق للإشارة المعينة.
المعاملات
signal
اسم الاشارة المراد ربطها بمعالج.
command
التعليمة المراد تنفيذها عند استلام الإشارة.
القيمة المعادة
يعاد المعالج السابق المرتبط بالإشارة signal
.
أمثلة
مثال على استخدام التابع trap
:
Signal.trap(0, proc { puts "Terminating: #{$$}" })
Signal.trap("CLD") { puts "Child died" }
fork && Process.wait
الناتج:
Terminating: 27461
Child died
Terminating: 27460
انظر أيضًا
- التابع
list
: يعيد قائمة بأسماء الإشارة المعيَّنة لأرقام الإشارة الأصلية المقابلة لها. - التابع
signame
: يحول رقم الإشارة إلى الاسم المقابل لها.