मुझे कुछ फ़ाइल में पुनर्निर्देशित मानक त्रुटि स्ट्रीम के साथ एक नई प्रक्रिया बनाने की आवश्यकता है। जिस कोड से बाल प्रक्रिया बनाई जा रही है, उसके पास कोई कंसोल उपलब्ध नहीं है, ऐसे में ऐसे मामले हैं जब GetStdHandle (कोई भी) 0 लौटाएगा। बाल प्रक्रिया किसी भी कारण से अपने सभी मानक आईओ हैंडल को डुप्लिकेट करने का प्रयास करेगी (बाल प्रक्रिया के लिए स्रोत कोड अनुपलब्ध है) तो इसके सभी हैंडल वैध होना चाहिए।"नूल" फ़ाइल कैसे खोलें?
तो मैं एक ही तरीके से उस प्रक्रिया को चलाने की आवश्यकता के रूप में यह साथ कंसोल से भाग गया जा सकती है:
someproc <nul >nul 2>err
मैं इसके लिए कुछ मायनों देखें: 1. पाइप के दो जोड़ी बनाएँ। यह संभवतः अच्छा समाधान है, लेकिन यह मेरे लिए बहुत जटिल होगा। 2. CreateFile ("nul", ...) फ़ंक्शन कॉल के साथ "nul" फ़ाइल खोलें। इस कॉल द्वारा कोई फ़ाइल नहीं बनाई जा रही है, लेकिन यह भी मुझे अजीब लग रहा है। 3. INVALID_HANDLE_VALUE का उपयोग करें। यह भी काम करता है, लेकिन मुझे लगता है कि एक और बच्चे की प्रक्रियाओं के साथ अलग-अलग समस्याएं हो सकती हैं।
मुझे विश्वास है कि बेहतर तरीके हैं।
बहुत अच्छा! संभावनाओं को सूचीबद्ध करने के लिए धन्यवाद। –