الصنف Signal
في روبي
< Ruby
تسمح العديد من أنظمة التشغيل بإرسال إشارات إلى العمليات (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
يربط معالجًا بإشارة محدَّدة.