التابع Process.exit
في روبي
ينشئ التابع 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
: يستبدل العملية الحالية عبر تشغيل الأمر الخارجي المعطى. - التابع
spawn
: يُنفِّذ أمرًا محدَّدًا ثم يعيد مُعرِّف العملية الخاصة به.