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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث

ينشئ التابع 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: ينفذ أمرًا محدد، ويعيد معرّفه.

مصادر