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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

تسمح العديد من أنظمة التشغيل بإرسال إشارات إلى العمليات (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...‎

أسماء الإشارة المتوفرة وتفسيراتها تعتمد على النظام المستخدم. كما هو الحال مع صياغات توصيل الإشارات (Signal delivery semantics). لهذا، لا ينبغي التعويل على شكل محدد من أشكال توصيل الإشارات.

توابع الصنف العامة

list

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

signame

يحول رقم الإشارة إلى الاسم المقابل لها.

trap

يربط معالجًا بإشارة محدَّدة. 

مصادر