الفرق بين المراجعتين لصفحة: «Ruby/Signal»
< Ruby
لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 4: | سطر 4: | ||
تسمح العديد من أنظمة التشغيل بإرسال إشارات إلى العمليات (processes) قيد التشغيل. | تسمح العديد من أنظمة التشغيل بإرسال إشارات إلى العمليات (processes) قيد التشغيل. | ||
لبعض الإشارات تأثير محدد على العملية، بينما تكون أخرى مرتبطة بالشيفرة البرمجية، وتتصرف بناء عليها. على سبيل المثال، قد تقوم العملية بإمساك (trap) إشارة <code>USR1</code> واستخدامها في عملية التصحيح (debugging)، أو قد تستخدم الإشارة <code>TERM</code> لبدء إيقاف تشغيل مُراقب (controlled shutdown). | لبعض الإشارات تأثير محدد على العملية، بينما تكون أخرى مرتبطة بالشيفرة البرمجية، وتتصرف بناء عليها. على سبيل المثال، قد تقوم العملية بإمساك (trap) إشارة <code>USR1</code> واستخدامها في عملية التصحيح (debugging)، أو قد تستخدم الإشارة <code>TERM</code> لبدء إيقاف تشغيل مُراقب (controlled shutdown).<syntaxhighlight lang="ruby">pid = fork do | ||
<syntaxhighlight lang="ruby">pid = fork do | |||
Signal.trap("USR1") do | Signal.trap("USR1") do | ||
$debug = !$debug | $debug = !$debug | ||
سطر 22: | سطر 21: | ||
Process.kill("USR1", pid) | Process.kill("USR1", pid) | ||
# ... | # ... | ||
Process.kill("TERM", pid)</syntaxhighlight> | Process.kill("TERM", pid)</syntaxhighlight>الناتج سيكون:<syntaxhighlight lang="ruby"> Debug now: true | ||
<syntaxhighlight lang="ruby"> Debug now: true | |||
Debug now: false | Debug now: false | ||
Terminating...</syntaxhighlight> | Terminating...</syntaxhighlight>أسماء الإشارة المتوفرة وتفسيراتها تعتمد على النظام المستخدم. كما الحال مع صياغات تسليم الإشارات ( Signal delivery semantics). لهذا فلا ينبغي التعويل على شكل محدد من تسليم الإشارات. | ||
أسماء | |||
==توابع الصنف العامة (Public Class Methods)== | ==توابع الصنف العامة (Public Class Methods)== | ||
===[[Ruby/Signal/list | التابع list]]=== | ===[[Ruby/Signal/list| التابع list]]=== | ||
بعبد قائمة بأسماء الإشارة التي تم تعيينها إلى أرقام الإشارة الأصلية المقابلة. | بعبد قائمة بأسماء الإشارة التي تم تعيينها إلى أرقام الإشارة الأصلية المقابلة. | ||
===[[Ruby/Signal/signame | التابع signame]]=== | ===[[Ruby/Signal/signame| التابع signame]]=== | ||
يحول رقم | يحول رقم الإشارة إلى اسم إشارة. | ||
===[[Ruby/Signal/trap | التابع trap]]=== | ===[[Ruby/Signal/trap| التابع trap]]=== | ||
يحدد التابع trap معالج الإشارات (handling of signals) | يحدد التابع trap معالج الإشارات (handling of signals) | ||
== مصادر == | |||
*[http://ruby-doc.org/core-2.5.1/Signal.html قسم الصنف Signal في توثيق روبي الرسمي.] | *[http://ruby-doc.org/core-2.5.1/Signal.html قسم الصنف Signal في توثيق روبي الرسمي.] |
مراجعة 09:30، 2 نوفمبر 2018
تسمح العديد من أنظمة التشغيل بإرسال إشارات إلى العمليات (processes) قيد التشغيل.
لبعض الإشارات تأثير محدد على العملية، بينما تكون أخرى مرتبطة بالشيفرة البرمجية، وتتصرف بناء عليها. على سبيل المثال، قد تقوم العملية بإمساك (trap) إشارة USR1
واستخدامها في عملية التصحيح (debugging)، أو قد تستخدم الإشارة TERM
لبدء إيقاف تشغيل مُراقب (controlled shutdown).
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). لهذا فلا ينبغي التعويل على شكل محدد من تسليم الإشارات.
توابع الصنف العامة (Public Class Methods)
التابع list
بعبد قائمة بأسماء الإشارة التي تم تعيينها إلى أرقام الإشارة الأصلية المقابلة.
التابع signame
يحول رقم الإشارة إلى اسم إشارة.
التابع trap
يحدد التابع trap معالج الإشارات (handling of signals)