الفرق بين المراجعتين ل"Ruby/Signal"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (مراجعة وتدقيق.)
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Signal</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: الصنف <code>Signal</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 +
[[تصنيف: Ruby Class]]
 
[[تصنيف: Ruby Signal]]
 
[[تصنيف: Ruby Signal]]
تسمح العديد من أنظمة التشغيل بإرسال إشارات إلى العمليات (processes) قيد التشغيل.   
+
تسمح العديد من أنظمة التشغيل بإرسال إشارات إلى العمليات (processes) قيد التشغيل للتحكم بها.   
  
لبعض الإشارات تأثير محدد على العملية، بينما تكون أخرى مرتبطة بالشيفرة البرمجية، وتتصرف بناء عليها. على سبيل المثال، قد تقوم العملية بإمساك (trap) إشارة <code>USR1</code> واستخدامها في عملية التصحيح (debugging)، أو قد تستخدم الإشارة <code>TERM</code> لبدء إيقاف تشغيل مُراقب (controlled shutdown).<syntaxhighlight lang="ruby">pid = fork do
+
بعض الإشارات لها تأثير محدد على العملية، بينما تكون أخرى مرتبطة بالشيفرة البرمجية، وتتصرف بناء عليها. على سبيل المثال، قد تقوم العملية بإمساك (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>الناتج سيكون:<syntaxhighlight lang="ruby"> Debug now: true
+
Process.kill("TERM", pid)</syntaxhighlight>ناتج تنفيذ هذه الشيفرة هو:<syntaxhighlight lang="text"> Debug now: true
 
  Debug now: false
 
  Debug now: false
Terminating...‎</syntaxhighlight>أسماء الإشارة المتوفرة وتفسيراتها تعتمد على النظام المستخدم. كما الحال مع صياغات تسليم الإشارات ( Signal delivery semantics). لهذا فلا ينبغي التعويل على شكل محدد من تسليم الإشارات.
+
Terminating...‎</syntaxhighlight>أسماء الإشارة المتوفرة وتفسيراتها تعتمد على النظام المستخدم. كما هو الحال مع صياغات توصيل الإشارات (Signal delivery semantics). لهذا، لا ينبغي التعويل على شكل محدد من أشكال توصيل الإشارات.
==توابع الصنف العامة (Public Class Methods)==
+
==توابع الصنف العامة==
===[[Ruby/Signal/list| التابع list]]===
+
===[[Ruby/Signal/list|<code>list</code>]]===
بعبد  قائمة بأسماء الإشارة التي تم تعيينها إلى أرقام الإشارة الأصلية المقابلة.
+
يعيد قائمة بأسماء الإشارة المعيَّنة لأرقام الإشارة الأصلية المقابلة لها.
===[[Ruby/Signal/signame| التابع signame]]===
+
===[[Ruby/Signal/signame|<code>signame</code>]]===
يحول  رقم الإشارة إلى اسم إشارة.
+
يحول  رقم الإشارة إلى الاسم المقابل لها.
===[[Ruby/Signal/trap| التابع trap]]===
+
===[[Ruby/Signal/trap|<code>trap</code>]]===
يحدد التابع 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 في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 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

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

مصادر