Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पाइप का उपयोग करके पैरेंट और चाइल्ड प्रोसेस के बीच संचार के लिए पायथन प्रोग्राम

समस्या विवरण

fork का उपयोग करना चाइल्ड प्रोसेस बनाने का सबसे आसान तरीका है। fork() ओएस स्टैंडर्ड पायथन लाइब्रेरी का हिस्सा है।

यहां, हम इस कार्य को pipe() के उपयोग से हल करते हैं। एक प्रोसेस से दूसरे प्रोसेस में जानकारी पास करने के लिए pipe() का उपयोग किया जाता है। दो-तरफा संचार के लिए दो पाइप का उपयोग किया जा सकता है, प्रत्येक दिशा के लिए एक क्योंकि pipe() यूनिडायरेक्शनल है।

एल्गोरिदम

  1. पढ़ने और लिखने के लिए फाइल डिस्क्रिप्टर r, w।
  2. fork का उपयोग करके एक प्रोसेस बनाएं।
  3. यदि प्रोसेस आईडी 0 है तो चाइल्ड प्रोसेस बनाएं।
  4. अन्यथा पैरेंट प्रोसेस बनाएं।

उदाहरण कोड

import os

def parentchild(cwrites):
    r, w = os.pipe()
    pid = os.fork()
    if pid:
        os.close(w)
        r = os.fdopen(r)
        print("पैरेंट पढ़ रहा है")
        str = r.read()
        print("पैरेंट पढ़ता है =", str)
    else:
        os.close(r)
        w = os.fdopen(w, 'w')
        print("चाइल्ड लिख रहा है")
        w.write(cwrites)
        print("चाइल्ड लिखता है = ", cwrites)
        w.close()

# ड्राइवर कोड
cwrites = "Python Program"
parentchild(cwrites)

आउटपुट

चाइल्ड लिख रहा है
चाइल्ड लिखता है = Python Program
पैरेंट पढ़ रहा है
पैरेंट पढ़ता है = Python Program
  1. Python से बाइनरी ट्री की रूट को लीफ नोड पर कैसे बदलें? Python से बाइनरी ट्री की रूट को लीफ नोड पर कैसे बदलें?

    लीफ नोड को नया रूट बनाने के लिए पैरेंट पॉइंटर्स का उपयोग करके ट्री को रीस्ट्रक्चर करें: लेफ्ट चाइल्ड राइट बन जाता है, पैरेंट लेफ्ट बन जाता है। एल्गोरिदम रिकर्सिव हेल्पर helper(node, new_par)। अगर नोड मूल रूट है: पैरेंट सेट करें, लेफ्ट/राइट चाइल्ड जो new_par हैं उन्हें None करें। अगर लेफ्ट चाइल्ड है

  1. Python से पैरेंट पॉइंटर्स का उपयोग करके बाइनरी ट्री का LCA कैसे ढूंढें? Python से पैरेंट पॉइंटर्स का उपयोग करके बाइनरी ट्री का LCA कैसे ढूंढें?

    पैरेंट पॉइंटर्स होने पर, एक नोड के सभी एंसेस्टर्स को सेट में स्टोर करके दूसरे नोड के एंसेस्टर्स चेक करें। एल्गोरिदम path_p_r लिस्ट में x के सभी एंसेस्टर्स (रूट तक) स्टोर करें। y से ऊपर जाते हुए चेक करें: अगर y path_p_r में है, तो वही LCA है। नहीं मिला तो y = y.parent जारी रखें। उदाहरण कोड LCA = 5

  1. Python से पोस्टऑर्डर ट्रैवर्सल से एक्सप्रेशन ट्री कैसे बनाएं और मूल्यांकन करें? Python से पोस्टऑर्डर ट्रैवर्सल से एक्सप्रेशन ट्री कैसे बनाएं और मूल्यांकन करें?

    पोस्टफिक्स एक्सप्रेशन से स्टैक-आधारित एल्गोरिदम से एक्सप्रेशन ट्री बनाएं और रिकर्सिवली मूल्यांकन करें। एल्गोरिदम buildTree(postfix): स्टैक में (नोड, साइड) टपल्स रखें। पोस्टफिक्स से पॉप करके ट्री बनाएं। evaluate(root): अगर नोड न्यूमेरिक तो वैल्यू रिटर्न। वरना लेफ्ट/राइट रिकर्सिवली मूल्यांकन करके ऑपर