الفرق بين المراجعتين لصفحة: «Ruby/Kernel/trap»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) تدقيق |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Kernel]] | [[تصنيف: Ruby Kernel]] | ||
يحدد التابع <code>trap</code> معالج الإشارات (handling of signals). الوسيط الأول يمثل اسم إشارة (سلسلة نصية مثل " | يحدد التابع <code>trap</code> معالج الإشارات (handling of signals). الوسيط الأول يمثل اسم إشارة (سلسلة نصية مثل "SIGALRM" أو "SIGUSR1" وغير ذلك) أو رقم إشارة. يمكن حذف الأحرف "SIG" من اسم الإشارة. تحدد التعليمة <code>command</code> أو الكتلة المعطاة الكود البرمجي المراد تشغيله عند إطلاق الإشارة. إذا كانت التعليمة تساوي السلسلة النصية "IGNORE" أو "SIG_IGN" ، فسيتم تجاهل الإشارة. أما إذا كانت تساوي "DEFAULT" أو "SIG_DFL" ، فسيُستدعى معالج روبي الافتراضي. لكن إذا كانت تساوي "EXIT" ، فستنهي الإشارة البرنامج النصي. إذا كان التعليمة تساوي "SYSTEM_DEFAULT" ، فسيتم استدعاء معالج نظام التشغيل الافتراضي. خلا ذلك، سيتم تشغيل التعليمة أو الكتلة المعطاة. وسيتم استدعاء اسم الإشارة الخاص "EXIT"، أو رقم الإشارة 0، | ||
قبل إنهاء البرنامج مباشرة. يعيد التابع <code>trap</code> المعالج السابق للإشارة المعينة. | قبل إنهاء البرنامج مباشرة. يعيد التابع <code>trap</code> المعالج السابق للإشارة المعينة. | ||
سطر 15: | سطر 15: | ||
===<code>command</code>=== | ===<code>command</code>=== | ||
التعليمة المراد تنفيذها عند إطلاق الإشارة. | |||
== | |||
=== <code>block</code> === | |||
الكتلة المراد تنفيذها عند إطلاق الإشارة. | |||
==القيمة المعادة== | |||
يعاد المعالج السابق للإشارة المعينة. | |||
==أمثلة== | ==أمثلة== | ||
سطر 23: | سطر 26: | ||
<syntaxhighlight lang="ruby">Signal.trap(0, proc { puts "Terminating: #{$$}" }) | <syntaxhighlight lang="ruby">Signal.trap(0, proc { puts "Terminating: #{$$}" }) | ||
Signal.trap("CLD") { puts "Child died" } | Signal.trap("CLD") { puts "Child died" } | ||
fork && Process.wait</syntaxhighlight> | fork && Process.wait</syntaxhighlight>ناتج تنفيذ المثال هو:<syntaxhighlight lang="ruby">Terminating: 27461 | ||
Child died | Child died | ||
Terminating: 27460</syntaxhighlight> | Terminating: 27460</syntaxhighlight> | ||
==انظر أيضا== | ==انظر أيضا== | ||
* التابع <code>[[Ruby/Kernel/trace_var|trace_var]]</code>: يضبط | * التابع <code>[[Ruby/Kernel/trace_var|trace_var]]</code>: يضبط تعقّبات تعيين المتغيرات العامة. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-trap قسم | *[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-trap قسم التابع trap في الصنف Kernel في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 06:38، 17 نوفمبر 2018
يحدد التابع trap
معالج الإشارات (handling of signals). الوسيط الأول يمثل اسم إشارة (سلسلة نصية مثل "SIGALRM" أو "SIGUSR1" وغير ذلك) أو رقم إشارة. يمكن حذف الأحرف "SIG" من اسم الإشارة. تحدد التعليمة command
أو الكتلة المعطاة الكود البرمجي المراد تشغيله عند إطلاق الإشارة. إذا كانت التعليمة تساوي السلسلة النصية "IGNORE" أو "SIG_IGN" ، فسيتم تجاهل الإشارة. أما إذا كانت تساوي "DEFAULT" أو "SIG_DFL" ، فسيُستدعى معالج روبي الافتراضي. لكن إذا كانت تساوي "EXIT" ، فستنهي الإشارة البرنامج النصي. إذا كان التعليمة تساوي "SYSTEM_DEFAULT" ، فسيتم استدعاء معالج نظام التشغيل الافتراضي. خلا ذلك، سيتم تشغيل التعليمة أو الكتلة المعطاة. وسيتم استدعاء اسم الإشارة الخاص "EXIT"، أو رقم الإشارة 0،
قبل إنهاء البرنامج مباشرة. يعيد التابع trap
المعالج السابق للإشارة المعينة.
البنية العامة
trap( signal, command ) → obj
trap( signal ) {| | block } → obj
المعاملات
signal
سلسلة نصية تمثل اسم إشارة.
command
التعليمة المراد تنفيذها عند إطلاق الإشارة.
block
الكتلة المراد تنفيذها عند إطلاق الإشارة.
القيمة المعادة
يعاد المعالج السابق للإشارة المعينة.
أمثلة
مثال على استخدام التابع trap
:
Signal.trap(0, proc { puts "Terminating: #{$$}" })
Signal.trap("CLD") { puts "Child died" }
fork && Process.wait
ناتج تنفيذ المثال هو:
Terminating: 27461
Child died
Terminating: 27460
انظر أيضا
- التابع
trace_var
: يضبط تعقّبات تعيين المتغيرات العامة.