माइक्रोसॉफ्ट यहाँ सुरक्षित खेला। उनके लेख में, "Creating a Child Process with Redirected Input and Output", वे कह रहे हैं:क्या मुझे बाद में बाल प्रक्रिया के स्वामित्व वाले विरासत वाले हैंडल को बंद करना है?
शेष प्रक्रिया को समाप्त होने पर शेष खुले हैंडल साफ़ किए जाते हैं।
एक बड़े आवेदन में संसाधन रिसाव से बचने के लिए, स्पष्ट रूप से बंद हैंडल।
जो पूरी तरह से बेकार है। क्या संभालता है? किस प्रक्रिया में?
मैं इसके चारों ओर अपना सिर प्राप्त करना चाहता हूं।
जब SECURITY_ATTRIBUTES.bInheritHandle = TRUE
के साथ मूल प्रक्रिया में एक हैंडल बनाया जाता है, तो एक बाल प्रक्रिया इसे देख और उपयोग कर सकती है, और हैंडल में दोनों प्रक्रियाओं में समान मूल्य और पहुंच अधिकार हैं।
लेकिन क्या यह वही संभाल है, या यह एक प्रतिलिपि है जो समान संख्यात्मक प्रतिनिधित्व करने के लिए होती है?
अगर मैं एक बच्चे की प्रक्रिया के लिए एक hRead
संभाल पारित इतना है कि यह एक पाइप से पढ़ सकते हैं, और बच्चे प्रक्रिया संभाल बंद कर देता है, मैं भी माता-पिता की प्रक्रिया से इसे बंद करना चाहिए? क्या यह बाल प्रक्रिया के तहत पाइप को मिटा नहीं देगा?
मेरे प्रयोगों से पता चलता है कि CloseHandle
बच्चे को बंद करने के बाद बच्चे को पास किए गए hRead
को बंद करने की कोशिश करते समय सफलता प्राप्त होती है। यह हां के लिए जोरदार तर्क देता है, आपको इसे बंद करना चाहिए। हालांकि, मैं यहां एक और ठोस सलाह की सराहना करता हूं।
आह। तो जब मैं एक बच्चे की प्रक्रिया पैदा करता हूं तो हैंडल * क्लोन किया जाता है। यही वह था जो मैं बाद में था। – GSerg