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

من موسوعة حسوب
< Ruby‏ | Signal
لا ملخص تعديل
ط مراجعة وتدقيق.
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>trap‎</code> الخاص بالصنف <code>Signal</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: التابع <code>Signal.trap‎</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Signal]]
[[تصنيف: Ruby Signal]]
يحدد التابع <code>trap</code> معالج الإشارات (handling of signals).  
يربط التابع <code>trap</code> معالجًا بإشارة محدَّدة.
==البنية العامة==
<syntaxhighlight lang="ruby">trap( signal, command ) → obj
trap( signal ) {| | block } → obj‎</syntaxhighlight>يمثل المعامل <code>signal</code> اسم [[Ruby/Signal|إشارة]] ([[Ruby/String|سلسلة نصية]] مثل "<code>SIGALRM</code>" أو "<code>SIGUSR1</code>" وغير ذلك) أو رقم [[Ruby/Signal|إشارة]]. يمكن حذف الأحرف "<code>SIG</code>" من اسم الإشارة.


الوسيط الأول (انظر فقرة البنية العامة) يمثل اسم [[Ruby/Signal|إشارة]] ([[Ruby/String|سلسلة نصية]] مثل "<code>SIGALRM</code>" أو "<code>SIGUSR1</code>" وغير ذلك) أو رقم [[Ruby/Signal|إشارة]]. يمكن حذف الأحرف "<code>SIG</code>" من اسم الإشارة.
تحدد التعليمة <code>command</code> أو الكتلة <code>block</code> المعطاة الشيفرة أو الأوامر المراد تنفيذها عند إطلاق الإشارة. إذا كانت التعليمة تساوي السلسلة النصية "<code>IGNORE</code>" أو "<code>SIG_IGN</code>"، فسيتم تجاهل الإشارة. أما إذا كانت تساوي "<code>DEFAULT</code>" أو "<code>SIG_DFL</code>"، فسيُستدعَى معالج روبي الافتراضي. لكن إذا كانت تساوي "<code>EXIT</code>" ، فستُنهي الإشارة البرنامج النصي. وإذا كان التعليمة تساوي "<code>SYSTEM_DEFAULT</code>"، فسيتم استدعاء معالج نظام التشغيل الافتراضي. خلا ذلك، سيتم تشغيل التعليمة أو الكتلة المعطاة.  
 
تحدد التعليمة <code>command</code> أو الكتلة المعطاة الكودَ البرمجي المراد تشغيله عند إطلاق الإشارة. إذا كانت التعليمة تساوي السلسلة النصية "<code>IGNORE</code>" أو "<code>SIG_IGN</code>"، فسيتم تجاهل الإشارة. أما إذا كانت تساوي "<code>DEFAULT</code>" أو "<code>SIG_DFL</code>"، فسيُستدعى معالج روبي الافتراضي. لكن إذا كانت تساوي "<code>EXIT</code>" ، فستُنهي الإشارة البرنامج النصي. وإذا كان التعليمة تساوي "<code>SYSTEM_DEFAULT</code>" ، فسيتم استدعاء معالج نظام التشغيل الافتراضي. خلا ذلك، سيتم تشغيل التعليمة أو الكتلة المعطاة.  


سيتم استدعاء اسم الإشارة الخاص "<code>EXIT</code>"، أو رقم الإشارة <code>0</code>، قبل إنهاء البرنامج مباشرة. وسيعيد التابع <code>trap</code> المعالج السابق للإشارة المعينة.
سيتم استدعاء اسم الإشارة الخاص "<code>EXIT</code>"، أو رقم الإشارة <code>0</code>، قبل إنهاء البرنامج مباشرة. وسيعيد التابع <code>trap</code> المعالج السابق للإشارة المعينة.
==البنية العامة==
<syntaxhighlight lang="ruby">trap( signal, command ) → obj
trap( signal ) {| | block } → obj‎</syntaxhighlight>
==المعاملات==
==المعاملات==
===<code>signal‎</code>===
===<code>signal‎</code>===
اسم الاشارة
اسم الاشارة المراد ربطها بمعالج.


===<code>command‎</code>===
===<code>command‎</code>===
تعليمة
التعليمة المراد تنفيذها عند استلام الإشارة.


==القيمة المُعادة==
==القيمة المعادة==
يعيد التابع <code>trap</code> المعالج السابق للإشارة المعينة.
يعاد المعالج السابق المرتبط بالإشارة <code>signal</code>.


==أمثلة==
==أمثلة==
سطر 27: سطر 25:
<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>الناتج:<syntaxhighlight lang="ruby">Terminating: 27461
fork && Process.wait‎</syntaxhighlight>الناتج:<syntaxhighlight lang="text">Terminating: 27461
Child died
Child died
Terminating: 27460‎</syntaxhighlight>
Terminating: 27460‎</syntaxhighlight>
==انظر أيضا==
==انظر أيضًا==
* التابع <code>[[Ruby/Signal/signame|signame]]</code>: يحول  رقم ال[[Ruby/Signal|إشارة]] إلى اسم [[Ruby/Signal|إشارة]].
* التابع <code>[[Ruby/Signal/list|list]]</code>: يعيد قائمة بأسماء ال[[Ruby/Signal|إشارة]] المعيَّنة لأرقام ال[[Ruby/Signal|إشارة]] الأصلية المقابلة لها.
* التابع <code>[[Ruby/Signal/signame|signame]]</code>: يحول رقم ال[[Ruby/Signal|إشارة]] إلى الاسم المقابل لها.


==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Signal.html#method-c-trap قسم التابع trap‎ في الصنف Signal‎ في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/Signal.html#method-c-trap قسم التابع trap‎ في الصنف Signal‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 08:56، 4 ديسمبر 2018

يربط التابع 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‎

انظر أيضًا

مصادر