صفحة الصنف Signal في روبي

من موسوعة حسوب
< Ruby
مراجعة 09:24، 2 نوفمبر 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Signal</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Signal تسمح العديد م...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

تسمح العديد من أنظمة التشغيل بإرسال إشارات إلى العمليات (processes) قيد التشغيل. لبعض الإشارات تأثير محدد على العملية، بينما تكون أخرى مرتبطة بالشيفرة البرمجية، وتتصرف بناء عليها. على سبيل المثال، قد تقوم العملية بإمساك (trap) إشارة USR1 واستخدامها في عملية التصحيح (debugging)، وقد تستخدم الإشارة TERM لبدء إيقاف تشغيل غير مراقب.

pid = fork do
  Signal.trap("USR1") do
    $debug = !$debug
    puts "Debug now: #$debug"
  end
  Signal.trap("TERM") do
    puts "Terminating..."
    shutdown()
  end
  # . . . do some work . . .
end
Process.detach(pid)
# Controlling program:
Process.kill("USR1", pid)
# ...
Process.kill("USR1", pid)
# ...
Process.kill("TERM", pid)

سيُنتج: 
 Debug now: true
 Debug now: false
Terminating...
أسماء الإشارات المتوفرة وتفسيراتها تعتمد على النظام المستخدم. صياغات تسليم الإشارات (debugging) (Signal) قد تتعلق أيضًا بنوع النظام المستخدم. لهذا فلا ينبغي التعويل على شكل محدد من تسليم الإشارات.

توابع الصنف العامة (Public Class Methods)

التابع list

بعبد قائمة بأسماء الإشارة التي تم تعيينها إلى أرقام الإشارة الأصلية المقابلة.

التابع signame

يحول رقم الككك إلى اسم ككك. ثم يعيد القيمة nil إن لم يكن الوسيط signo رقم ككك صالح.

التابع trap

يحدد التابع trap معالج الإشارات (handling of signals). الوسيط الأول يمثل اسم ككك (سسس مثل "SIGALRM" أو "SIGUSR1" وغير ذلك) أو رقم ككك. يمكن حذف الأحرف "SIG" من اسم الإشارة. تحدد التعليمة المعطاة (command) أو الكتلة الكود البرمجي المراد تشغيله عند إطلاق الإشارة. إذا كانت التعليمة تساوي السلسلة النصية "IGNORE" أو "SIG_IGN"، فسيتم تجاهل الإشارة. أما إذا كانت تساوي "DEFAULT" أو "SIG_DFL"، فسيُستدعى معالج روبي الافتراضي. لكن إذا كانت تساوي "EXIT" ، فستُنهي الإشارة البرنامج النصي. إذا كان التعليمة تساوي "SYSTEM_DEFAULT" ، فسيتم استدعاء معالج نظام التشغيل الافتراضي. خلا ذلك، سيتم تشغيل التعليمة أو الكتلة المعطاة. سيتم استدعاء اسم الإشارة الخاص "EXIT"، أو رقم الإشارة 0، قبل إنهاء البرنامج مباشرة. يعيد التابع trap المعالج السابق للإشارة المعينة.