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