التابع fork
الخاص بالصنف Kernel
في روبي
ينشئ التابع عملية فرعية (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).