التابع Process.kill في روبي

من موسوعة حسوب
< Ruby‏ | Process

يرسل التابع kill إشارة محدَّدة إلى عملية ذات مُعرِّف معطى أو إلى جميع العمليات التي معرِّف المجموعة التي تملكه مساويًا إلى معرِّف المجموعة للعملية المستدعية.

البنية العامة

kill(signal, pid, ...)  integer

المعاملات

signal

عدد صحيح يمثِّل رقم الإشارة أو سلسلة نصية تمثِّل اسم الإشارة بحسب POSIX (مع أو بدون السابقة SIG). إن كان عددًا صحيحًا موجبًا، إن كان عددًا سالبًا (يبدأ بإشارة الناقص)، فستُقتَل مجموعات العملية (process groups) بدلًا من العمليات. ليست جميع الإشارات مدعومة على كل المنصات. مفاتيح وقيم Signal.list هي أسماء وأرقام إشارة مشهورة.

إن كانت قيمة هذا المعامل عددًا صحيحًا ولكن لا يشير إلى أية إشارة، فسيُرمى الاستثناء Errno::EINVAL أو RangeError. باستثناء ذلك وما لم يكن المعامل signal سلسلةً نصيةً أو رمزًا يشير إلى اسم إشارة معروف، سيُرمَى الاستثناء ArgumentError.

pid

عدد صحيح يشير إلى مُعرِّف العملية المراد إرسال الإشارة إليها. إن كانت قيمته 0، فستُرسل الإشارة signal إلى جميع العمليات التي معرِّف المجموعة التي تملكه مساويًا إلى معرِّف المجموعة للعملية المستدعية. سيَرمَى الاستثناء Errno::ESRCH أو RangeError إن كانت قيمة المُعرِّف pid غير صالحة، أو سيُرمَى الاستثناء Errno::EPERM عند فشل العملية بسبب عدم امتلاك الأذونات. في هذه الحالات، قد تُرسَل إشارات إلى عمليات سابقة.

القيم المعادة

يعاد عدد صحيح يشير إلى العملية التي أرسلت الإشارة إليها.

أمثلة

مثال على استعمال التابع kill:

pid = fork do
   Signal.trap("HUP") { puts "Ouch!"; exit }
   # ... do some work ...
end
# ...
Process.kill("HUP", pid)
Process.wait

ناتج تنفيذ هذا المثال هو:

Ouch!

انظر أيضًا

  • التابع abort: ينهي تنفيذ العملية مباشرةً بشكل فعَّال عبر استدعاء Kernel.exit(false)‎.
  • التابع exit: يبدأ عملية الإنهاء لشيفرة روبي البرمجية عبر اطلاق الاستثناء SystemExit.

مصادر