अजगर प्रलेखन राज्यों popen के लिए: भरने अन्य ओएस पाइप बफ़र्स में से किसी की वजह सेक्या कोई पाइप बफर डेडलॉक समझा सकता है?
चेतावनी का प्रयोग करें बल्कि .stdin.write, .stdout.read से संवाद() या गतिरोध से बचने के लिए .stderr.read और बाल प्रक्रिया को अवरुद्ध करना
अब, मैं यह पता लगाने की कोशिश कर रहा हूं कि यह डेडलॉक कैसे हो सकता है और क्यों।
मेरा मानसिक मॉडल: सबप्रोकस स्टडआउट/गलती के लिए कुछ उत्पन्न करता है, जिसे बफर किया जाता है और बफर भरने के बाद, यह उपप्रोकैस के स्टडआउट/गलती पर फंस जाता है, जो पाइप के माध्यम से मूल प्रक्रिया में भेजता है।
कौन से दस्तावेज कहता है, पाइप के पास इसका स्वयं का बफर है और जब यह भर जाता है या उपप्रोसेस समाप्त हो जाता है, तो यह मूल प्रक्रिया में आ जाता है।
किसी भी तरह से (पाइप बफर के साथ या नहीं), मुझे पूरा यकीन नहीं है कि डेडलॉक कैसे हो सकता है। केवल एक चीज जिसे मैं सोच सकता हूं वह है कि "ग्लोबल" ओएस पाइप बफर प्रक्रियाएं अजीब लगती हैं। दूसरा यह है कि अधिक प्रक्रियाएं एक ही पाइप साझा करेंगी, जो स्वयं पर नहीं होनी चाहिए।
कोई यह समझाने कृपया कर सकते हैं?
यही वह है जो मैं इतना निश्चित नहीं था। धन्यवाद। – Almad