الفرق بين المراجعتين لصفحة: «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