الفرق بين المراجعتين لصفحة: «Ruby/Kernel/trap»

من موسوعة حسوب
< Ruby‏ | Kernel
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>trap‎</code> الخاص بالصنف <code>Kernel</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف...'
 
تدقيق
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 3: سطر 3:
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Kernel]]
[[تصنيف: Ruby Kernel]]
يحدد التابع trap معالج الإشارات (handling of signals). الوسيط الأول يمثل اسم إشارة (سلسلة نصية مثل "SIGALRM" أو "SIGUSR1" وغير ذلك) أو رقم إشارة. يمكن حذف الأحرف "SIG" من اسم الإشارة. تحدد التعليمة المعطاة cmd أو الكتلة الكود البرمجي المراد تشغيله عند إطلاق الإشارة. إذا كانت التعليمة هي السلسلة النصية "IGNORE" أو "SIG_IGN" ، فسيتم تجاهل الإشارة. أما إذا كانت تساوي "DEFAULT" أو "SIG_DFL" ، فسيُستدعى معالج روبي الافتراضي. لكن إذا كانت تساوي "EXIT" ، فستنهي الإشارة البرنامج النصي. إذا كان التعليمة تساوي "SYSTEM_DEFAULT" ، فسيتم استدعاء معالج نظام التشغيل الافتراضي. خلا ذلك، سيتم تشغيل التعليمة أو الكتلة المعطاة. سيتم استدعاء اسم الإشارة الخاص "EXIT"، أو رقم الإشارة 0، قبل إنهاء البرنامج مباشرة. يعيد التابع trap المعالج السابق للإشارة المعينة.
يحدد التابع <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> المعالج السابق للإشارة المعينة.
<syntaxhighlight lang="ruby">Terminating: 27461
Child died
Terminating: 27460‎</syntaxhighlight>
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">trap( signal, command ) → obj
<syntaxhighlight lang="ruby">trap( signal, command ) → obj
سطر 14: سطر 11:
==المعاملات==
==المعاملات==
===<code>signal‎</code>===
===<code>signal‎</code>===
سلسلة نصية تمثل اسم إشارة.


===<code>command‎</code>===
===<code>command‎</code>===


التعليمة المراد تنفيذها عند إطلاق الإشارة.


==القيمة المُعادة==
=== <code>block</code> ===
الكتلة المراد تنفيذها عند إطلاق الإشارة.
==القيمة المعادة==
يعاد المعالج السابق للإشارة المعينة.


==أمثلة==
==أمثلة==
سطر 24: سطر 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
Terminating: 27460‎</syntaxhighlight>
==انظر أيضا==
==انظر أيضا==
* التابع <code>[[Ruby/Kernel/trace_var|trace_var]]</code>: يضبط التابع trace_var تعقّبات تعيين المتغيرات الكلية. يحدد الوسيط <code>symbol</code> المتغير (إما على شكل سلسلة نصية أو معرف رمز [symbol identifier]). يتم تنفيذ الوسيط cmd (الذي قد يكون سلسلة نصية أو كائن <code>Proc</code>) أو كتلة برمجية كلما تم تعيين المتغير. تتلقى الكتلة أو الكائن <code>Proc</code> القيمة الجديدة للمتغير كوسيط. انظر أيضا <code>Kernel::untrace_var</code>.
* التابع <code>[[Ruby/Kernel/trace_var|trace_var]]</code>: يضبط تعقّبات تعيين المتغيرات العامة.  
* التابع <code>[[Ruby/Kernel/untrace_var|untrace_var]]</code>: يزيل التابع untrace_var التعقب للتعليمة cmd المحددة على المتغير الكلي المحدد ثم يعيد <code>nil</code>. في حال عدم تمرير الوسيط cmd، فسيزيل التعقب نهائيًا لهذا المتغير ويعيد مصفوفة تحتوي على التعليمات المٌزالة بالفعل.


==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-trap قسم التابع trap‎ في الصنف Kernel‎ في توثيق روبي الرسمي.]
*[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: يضبط تعقّبات تعيين المتغيرات العامة.

مصادر