الفرق بين المراجعتين لصفحة: «Ruby/Kernel/fork»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>fork</code> الخاص بالصنف <code>Kernel</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف...' |
لا ملخص تعديل |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Kernel]] | [[تصنيف: Ruby Kernel]] | ||
ينشئ التابع عملية فرعية (subprocess). في حال إعطاء كتلة، فستُنفّذ تلك الكتلة في العملية الفرعية، كما أن قيمة الحالة عند الانتهاء ستساوي صفر. وإلا ، فإن استدعاء التابع <code>fork</code> سيقوم بالإعادة مرتين، مرة في العملية الأم (parent | ينشئ التابع <code>fork</code> عملية فرعية (subprocess). في حال إعطاء كتلة، فستُنفّذ تلك الكتلة في العملية الفرعية، كما أن قيمة الحالة عند الانتهاء ستساوي صفر. وإلا ، فإن استدعاء التابع <code>fork</code> سيقوم بالإعادة مرتين، مرة في العملية الأم (parent process)، حيث يعيد معرف العملية (pid) الفرعية، ومرة في العملية الفرعية، حيث يعيد <code>nil</code>. | ||
المهمة الفرعية (thread) التي استدعت التابع fork | |||
إذا كان fork غير قابل للاستخدام ، فسيعيد التعبير Process. | يمكن للعملية الفرعية الخروج باستخدام <code>[[Ruby/Kernel/exit-21|exit!]]</code> لتجنب تشغيل دوال <code>[[Ruby/Kernel/at exit|at_exit]]</code>. يجب أن تستخدم العملية الأم التابع <code>Process.wait</code> لتجميع حالات إنهاء عملياتها الفرعية، أو تستخدم <code>Process.detach</code> لتسجيل إهمال تلك الحالات؛ خلاف ذلك، قد يُراكم نظام التشغيل عمليات الزومبي (zombie processes). | ||
لاحظ أن fork(2) ليست متوفرة على بعض أنظمة التشغيل مثل Windows و NetBSD 4. لذلك يجب استخدام spawn () بدلاً من fork (). | |||
المهمة الفرعية (thread) التي استدعت التابع <code>fork</code> هي المهمة الفرعية الوحيدة في العملية الفرعية التي تم إنشاؤها. لا ينسخ التابع <code>fork</code> المهام الفرعية الأخرى. | |||
إذا كان <code>fork</code> غير قابل للاستخدام ، فسيعيد التعبير <code>Process.respond_to?(:fork)</code> القيمة <code>false</code>. | |||
لاحظ أن <code>fork(2)</code> ليست متوفرة على بعض أنظمة التشغيل مثل Windows و NetBSD 4. لذلك يجب استخدام <code>[[Ruby/Kernel/spawn|spawn()]]</code> بدلاً من <code>fork()</code>. | |||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">fork [{ block }]→ integer or nil | <syntaxhighlight lang="ruby">fork [{ block }]→ integer or nil | ||
fork [{ block }]→ integer or nil</syntaxhighlight> | fork [{ block }]→ integer or nil</syntaxhighlight> | ||
==القيمة المُعادة== | ==القيمة المُعادة== | ||
يعيد معرف العملية (pid) الفرعية، أو يعيد <code>nil</code>. | |||
==انظر أيضا== | ==انظر أيضا== | ||
* التابع <code>[[Ruby/Kernel/ | * التابع <code>[[Ruby/Kernel/spawn|spawn]]</code>: ينفذ أمرًا محدد، ويعيد معرّفه. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-fork قسم التابع fork في الصنف Kernel في توثيق روبي الرسمي.] | *[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-fork قسم التابع fork في الصنف Kernel في توثيق روبي الرسمي.] |
مراجعة 21:01، 21 أكتوبر 2018
ينشئ التابع 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
: ينفذ أمرًا محدد، ويعيد معرّفه.