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

من موسوعة حسوب
< Ruby‏ | Kernel
مراجعة 20:53، 21 أكتوبر 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>fork‎</code> الخاص بالصنف <code>Kernel</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

ينشئ التابع عملية فرعية (subprocess). في حال إعطاء كتلة، فستُنفّذ تلك الكتلة في العملية الفرعية، كما أن قيمة الحالة عند الانتهاء ستساوي صفر. وإلا ، فإن استدعاء التابع fork سيقوم بالإعادة مرتين، مرة في العملية الأم (parent, process)، حيث يعيد معرف العملية الفرعية، ومرة في العملية الفرعية، حيث يعيد nil. يمكن للعملية الفرعية الخروج باستخدام Kernel.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

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

انظر أيضا

  • التابع fail: في حال استدعاء التابع بدون إعطاء أي وسائط، فسبُطلق الاستثناء في $! أو يطلق RuntimeError إذا كان $! يساوي nil. في حال تمرير وسيط واحد String، فسيطلق RuntimeError مع سلسلة نصية كرسالة. حلا ذلك، يجب أن يكون الوسيط الأول هو اسم صنف Exception (أو كائنًا يعيد كائن من النوع Exception عند إرسال رسالة exception). يحدد الوسيط الاختياري الثانية الرسالة المرتبطة بالاستثناء، أما الوسيط الثالث فهو مصفوفة تضم معلومات الاستدعاء. تُضبط الاستثناءات بواسطة الجملة rescue من كتل begin...end.
  • التابع format: يعيد التابع السلسلة النصية الناتجة من تطبيق format_string على أي وسائط إضافية. داخل السلسلة النصية format_string، ستُنسخ كل الأحرف في النتيجة باستثناء تسلسلات التنسيق (format sequences).

مصادر