التابع fork‎ الخاص بالصنف Kernel في روبي

من موسوعة حسوب
< Ruby‏ | Kernel
مراجعة 12:52، 15 نوفمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

ينشئ التابع fork عملية فرعية (subprocess). في حال تمرير كتلة، فستُنفّذ تلك الكتلة في العملية الفرعية، كما أن قيمة حالة الخروج عند الانتهاء ستساوي الصفر. خلا ذلك، سيعيد التابع fork مرتين؛ مرةً في العملية الأب (parent process)، حيث يعيد معرف العملية (pid) الفرعية، ومرة في العملية الفرعية، حيث يعيد nil.

يمكن للعملية الفرعية الخروج باستخدام exit!‎ لتجنب تشغيل دوال التابع at_exit. يجب أن تستخدم العملية الأب التابع Process.wait لتجميع حالات إنهاء عملياتها الفرعية، أو تستخدم Process.detach لتسجيل إهمال تلك الحالات؛ خلاف ذلك، قد يُراكم نظام التشغيل عمليات ميتة (zombie processes).

الخيط (thread) الذي استدعى التابع fork هو الخيط الوحيد في العملية الفرعية التي تم إنشاؤها. لا ينسخ التابع fork الخيوط الأخرى.

إذا كان fork غير قابل للاستخدام، فسيعيد الاستدعاء Process.respond_to?(:fork)‎ القيمة false.

لاحظ أنَّ fork(2)‎ ليست متوفرة على بعض أنظمة التشغيل مثل Windows و NetBSD 4. لذلك يجب استخدام spawn()‎ بدلاً من fork()‎.

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

fork  [{ block }] integer or nil
fork [{ block }] integer or nil

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

يعاد مُعرِّف العملية (pid) الفرعية، أو تعاد القيمة nil.

انظر أيضا

  • التابع spawn: ينفذ أمرًا محددًا، ويعيد معرّفه.

مصادر