2009-02-27 10 views
5

Win32 प्रोग्रामिंग में सी में से एक कार्यक्रम कैद:निष्पादित और एक अन्य

क्या एक और Win32 कार्यक्रम के भीतर एक Win32 कंसोल कार्यक्रम क्रियान्वित, और प्रोग्राम है जो निष्पादन आउटपुट को कैप्चर करना शुरू कर दिया है करने के लिए सबसे अच्छा तरीका है? फिलहाल मैंने प्रोग्राम को आउटपुट को फ़ाइल में रीडायरेक्ट किया है, लेकिन मुझे यकीन है कि मुझे कुछ प्रकार की पाइप खोलने में सक्षम होना चाहिए?

उत्तर

5

बच्चे की प्रक्रिया शुरू करने के लिए CreateProcess Win32 API का उपयोग करें। hStdInput, hStdOutput और hStdError के साथ एक STARTUPINFO संरचना फ़ाइल के लिए सेट हैंडल इसे करने के लिए

पास संभालती आप खोला (या तो असली फाइल या स्मृति फ़ाइलों काम करना चाहिए मैप किया गया)। आपको तीनों को निर्दिष्ट करने की आवश्यकता नहीं है, आप केवल उन्हीं को रीडायरेक्ट कर सकते हैं जिन्हें आपको वास्तव में चाहिए; सबसे आम मामला hStdOutput है।

यदि आप बच्चे की प्रक्रिया के साथ संवाद करना चाहते हैं (hStdInput के माध्यम से), तो आपको WaitForInputIdle पर कॉल करके प्रारंभ करने की प्रतीक्षा करनी होगी।

+0

धन्यवाद, एक मेमोरी मैप फ़ाइल में stdoutput को निर्देशित करना ठीक उसी प्रकार था जो मैं बाद में था। –

संबंधित मुद्दे