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

من موسوعة حسوب
< Ruby‏ | Signal
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>trap‎</code> الخاص بالصنف <code>Signal</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف...')
 
ط (مراجعة وتدقيق.)
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 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]]
يحدد التابع 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> معالجًا بإشارة محدَّدة.
 
 
الناتج:
 
<syntaxhighlight lang="ruby">Terminating: 27461
 
Child died
 
Terminating: 27460‎</syntaxhighlight>
 
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">trap( signal, command ) → obj
 
<syntaxhighlight lang="ruby">trap( signal, command ) → obj
trap( signal ) {| | block } → obj‎</syntaxhighlight>
+
trap( signal ) {| | block } → obj‎</syntaxhighlight>يمثل المعامل <code>signal</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>EXIT</code>"، أو رقم الإشارة <code>0</code>، قبل إنهاء البرنامج مباشرة. وسيعيد التابع <code>trap</code> المعالج السابق للإشارة المعينة.
 
==المعاملات==
 
==المعاملات==
 
===<code>signal‎</code>===
 
===<code>signal‎</code>===
 +
اسم الاشارة المراد ربطها بمعالج.
 +
 
===<code>command‎</code>===
 
===<code>command‎</code>===
 +
التعليمة المراد تنفيذها عند استلام الإشارة.
  
==القيمة المُعادة==
+
==القيمة المعادة==
 +
يعاد المعالج السابق المرتبط بالإشارة <code>signal</code>.
  
 
==أمثلة==
 
==أمثلة==
سطر 22: سطر 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>
+
fork && Process.wait‎</syntaxhighlight>الناتج:<syntaxhighlight lang="text">Terminating: 27461
==انظر أيضا==
+
Child died
* التابع <code>[[Ruby/Signal/signame|signame]]</code>: يحول  رقم ال[[Ruby/Signal|إشارة]] إلى اسم [[Ruby/Signal|إشارة]]. ثم يعيد القيمة <code>nil</code> إن لم يكن الوسيط signo  رقم [[Ruby/Signal|إشارة]] صالح.
+
Terminating: 27460‎</syntaxhighlight>
 +
==انظر أيضًا==
 +
* التابع <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‎

انظر أيضًا

مصادر