الفرق بين المراجعتين ل"Ruby/Signal/trap"

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

مراجعة 09:23، 2 نوفمبر 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‎

تعليمة

القيمة المُعادة

يعيد التابع trap المعالج السابق للإشارة المعينة.

أمثلة

مثال على استخدام التابع trap‎:

Signal.trap(0, proc { puts "Terminating: #{$$}" })
Signal.trap("CLD")  { puts "Child died" }
fork && Process.wait

الناتج:

Terminating: 27461
Child died
Terminating: 27460

انظر أيضا

مصادر