English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
مهمتنا هي إنشاء عملية فرعية واستخدامfork()
يظهر الدالة في Python معرف عملية الوالد والعمليات الفرعية.
عند استخدامهfork()
، سيقوم بإنشاء نسخته الخاصة، وهو جانب مهم جدًا في LINUX وUNIX.fork()
تطبيق بشكل رئيسي في بيئات متعددة النواة، مما يعني أن التتابع من نواة الوالد إلى نواة الأبناء سيعيد تنفيذ نفس التتابع. عند حدوث خطأ، سيعود هذا الطريقة بقيمة سالبة، بينما سيعود للعمليات الفرعية بـ0، وإلا سيعود بقيمة إيجابية، مما يعني أننا في عملية الوالد.
ال}fork()
يمكن استخدام module من module OS أو من module الـ pty المسمى PTY. لذلك، يجب علينا استيراد os أو pty.
لـfork()
يُستخدم لإنشاء عملية دون إرسال أي معلمات ولفوز بمعرف العملية. يُستخدمfork()
سبب إنشاء عملية جديدة (تكون عملية فرعية للدعوة) هو تنفيذ التعليمات التالية. عند إنشاء عملية فرعية، تنفذ كلتا العمليتين التعليمتين التالية.
fork()
يمكننا فهم قيمتنا العائدة بأنها إذا كانت تساوي 0 فإننا في عملية الطفل، وإذا كانت إيجابية فإننا في عملية الأب، وإذا كانت سالبة فإن ذلك يعني أن حدث خطأ ما.
import os def parentchild(): n = os.fork() if n > 0: print("عملية الأب: ", os.getpid()) else: print("عملية الطفل: ", os.getpid()) # كود المُقادم parentchild()
نتيجة الإخراج
عملية الأب: 8023 عملية الطفل: 8024 $
يُعرف module الـ pty لمعالجة مفهوم الـ pty. باستخدام هذه الميزة، يمكننا بدء عملية أخرى، أو يمكننا قراءة أو كتابة من خلال وحدة التحكم في الشاشة.
يكون هذا المodule موجهًا بشكل كبير نحو المنصة. يجب علينا استخدام نظام UNIX لتفيذ هذه العمليات.
import pty, os def process_parent_child(): (process_id, fd) = pty.fork() print("معرف عملية الحالية هو: " + str(os.getpid())) print("معرف عملية الطفل هو: " + str(process_id)) process_parent_child()
نتيجة الإخراج
معرف عملية الحالية هو: 12508 معرف عملية الطفل هو: 12509