الفرق بين المراجعتين ل"Ruby/Signal/trap"
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>trap</code> الخاص بالصنف <code>Signal</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف...') |
|||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Signal]] | [[تصنيف: Ruby Signal]] | ||
− | يحدد التابع trap معالج الإشارات (handling of signals) | + | يحدد التابع <code>trap</code> معالج الإشارات (handling of signals). |
− | + | الوسيط الأول (انظر فقرة البنية العامة) يمثل اسم [[Ruby/Signal|إشارة]] ([[Ruby/String|سلسلة نصية]] مثل "<code>SIGALRM</code>" أو "<code>SIGUSR1</code>" وغير ذلك) أو رقم [[Ruby/Signal|إشارة]]. يمكن حذف الأحرف "<code>SIG</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> المعالج السابق للإشارة المعينة. | ||
==البنية العامة== | ==البنية العامة== | ||
<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>[[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