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

من موسوعة حسوب
< Ruby‏ | Process
مراجعة 09:09، 2 يناير 2019 بواسطة جميل-بيلوني (نقاش | مساهمات) (إنشاء الصفحة.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

ينشئ التابع fork عملية فرعية. إن أعطيت كتلةٌ، فستُنفَّذ هذه الكتلة في العملية الفرعية ثم تُنهَى العملية الفرعية مع حالة خروج تساوي إلى الصفر. خلاف ذلك، يعيد استدعاء التابع fork قيمتين، الأولى يعيدها في العملية الأب وهي مُعرِّف العملية الأبن، والثانية في العملية الابن وهي القيمة nil. تستطيع العملية الابن الخروج باستعمال التابع !Kernel.exit لتجنب تنفيذ أي دالة خروج مرتبطة عبر التابع at_exit. يجب أن تستعمل العملية الأب التابع Process.wait لجمع حالات الإنهاء (termination statuses) لعملياتهم الأبناء أو أن تستعمل Process.detach عند عدم الاكتراث لحالاتهم. خلاف ذلك، سيُجمِّع ويراكم نظام التشغيل عمليات ميتة (zombie processes).

الخيط المستدعي للتابع fork هو الخيط الوحيد في العملية الابن المنشأة. لا ينسخ التابع fork خيوط أخرى.

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

انتبه إلى أن الدالة fork(2)‎ غير متاحة على بعض المنصات مثل ويندوز و NetBSD 4. نتيجةً لذلك، يجب عليك استعمال التابع spawn بدلًا من التابع fork.

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

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

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

تعاد قيمتان، الأولى في العملية الأب وهي مُعرِّف العملية الأبن، والثانية في العملية الابن وهي القيمة nil.

انظر أيضًا

  • التابع exec: يستبدل العملية الحالية عبر تشغيل الأمر الخارجي المعطى.

مصادر