हमारा कार्य एक चाइल्ड प्रोसेस बनाना और fork() फ़ंक्शन का उपयोग करके पायथन में पैरेंट और चाइल्ड दोनों प्रोसेस की प्रोसेस आईडी प्रदर्शित करना है।
जब हम fork() का उपयोग करते हैं, तो यह स्वयं की एक प्रति बनाता है, यह LINUX, UNIX का एक बहुत महत्वपूर्ण पहलू है। fork() मुख्य रूप से मल्टीथ्रेडिंग वातावरण के लिए लागू होता है जिसका अर्थ है कि थ्रेड का निष्पादन डुप्लिकेट होता है जिससे पैरेंट थ्रेड से एक चाइल्ड थ्रेड बनता है। जब कोई त्रुटि होती है, तो मेथड एक नकारात्मक मान लौटाएगा और चाइल्ड प्रोसेस के लिए, यह 0 लौटाता है, अन्यथा, यह सकारात्मक मान लौटाता है जिसका अर्थ है कि हम पैरेंट प्रोसेस में हैं।
fork() मॉड्यूल का उपयोग os मॉड्यूल से या प्स्यूडो टर्मिनल मॉड्यूल जिसे pty कहा जाता है से किया जा सकता है। इसलिए हमें इसके लिए os या pty इम्पोर्ट करना चाहिए।
fork() का उपयोग एक प्रक्रिया बनाने के लिए किया जाता है, इसका कोई तर्क नहीं होता और यह प्रोसेस आईडी लौटाता है। fork() का उपयोग करने का मुख्य कारण एक नई प्रक्रिया बनाना है जो कॉलर की चाइल्ड प्रक्रिया बन जाती है। जब एक नई चाइल्ड प्रक्रिया बनाई जाती है, तो दोनों प्रक्रियाएं अगली इंस्ट्रक्शन निष्पादित करेंगी।
fork() का वापसी मान हम समझ सकते हैं कि हम किस प्रक्रिया में हैं जब 0 लौटाता है तो इसका मतलब है कि हम चाइल्ड प्रोसेस में हैं और यदि सकारात्मक मान लौटाता है तो इसका मतलब है कि हम पैरेंट प्रोसेस में हैं और नकारात्मक मान लौटाता है मतलब कुछ त्रुटि हुई।
उदाहरण कोड
import os
def parentchild():
n = os.fork()
if n > 0:
print("Parent process : ", os.getpid())
else:
print("Child proces : ", os.getpid())
# ड्राइवर कोड
parentchild()
आउटपुट
Parent process : 8023 Child process : 8024 $
प्स्यूडो-टर्मिनल यूटिलिटी मॉड्यूल pty प्स्यूडो-टर्मिनल अवधारणाओं को संभालने के लिए परिभाषित है। इसका उपयोग करके हम एक और प्रक्रिया शुरू कर सकते हैं, और प्रोग्राम का उपयोग करके कंट्रोलिंग टर्मिनल से पढ़ या लिख भी सकते हैं।
यह मॉड्यूल अत्यधिक प्लेटफ़ॉर्म ओरिएंटेड है। हमें इन ऑपरेशन को करने के लिए UNIX सिस्टम का उपयोग करना चाहिए।
उदाहरण कोड
import pty, os
def process_parent_child():
(process_id, fd) = pty.fork()
print("The Process ID for the Current process is: " + str(os.getpid()))
print("The Process ID for the Child process is: " + str(process_id))
process_parent_child()
आउटपुट
The Process ID for the Current process is: 12508 The Process ID for the Child process is: 12509