से आउटपुट एकत्र करने के लिए हैंडल का उपयोग करके मैं अपने जीयूआई एप्लिकेशन से विंडोज में बाहरी कंसोल एप्लिकेशन चलाने के लिए CreateProcess() का उपयोग कर रहा हूं। मैं किसी भी तरह आउटपुट इकट्ठा करना चाहता हूं यह जानने के लिए कि त्रुटियां हैं या नहीं। अब मुझे पता है कि मुझे hStdOutput के साथ कुछ करना है, लेकिन मैं समझने में असफल रहा। मैं C++ और एक अनुभवहीन प्रोग्रामर के लिए नया हूं और मुझे वास्तव में नहीं पता कि एक हैंडल के साथ क्या करना है या पाइप को कैसे प्रकाश देना है।CreateProcess()
मैं आउटपुट को किसी प्रकार के चर (या फ़ाइल) में कैसे प्राप्त करूं?
void email::run(string path,string cmd){
WCHAR * ppath=new(nothrow) WCHAR[path.length()*2];
memset(ppath,' ',path.length()*2);
WCHAR * pcmd= new(nothrow) WCHAR[cmd.length()*2];
memset(pcmd,' ',cmd.length()*2);
string tempstr;
ToWCHAR(path,ppath); //creates WCHAR from my std::string
ToWCHAR(cmd,pcmd);
STARTUPINFO info={sizeof(info)};
info.dwFlags = STARTF_USESHOWWINDOW; //hide process
PROCESS_INFORMATION processInfo;
if (CreateProcess(ppath,pcmd, NULL, NULL, FALSE, 0, NULL, NULL, &info, &processInfo))
{
::WaitForSingleObject(processInfo.hProcess, INFINITE);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
}
delete[](ppath);
delete[](pcmd);
}
इस कोड को शायद किसी भी सभ्य प्रोग्रामर चीख करता है, लेकिन (मैं यह भी कहना नहीं करना चाहिए यह :) यह काम करता है ;-)
:
यह मैं क्या एक पल है प्रश्न: मैं फ़ाइल को आउटपुट पढ़ने के लिए hstdOutput का उपयोग कैसे करूं (उदाहरण के लिए)?
संबंधित: [? Stdin stdout के साथ एक exe/प्रक्रिया का शुभारंभ और stderr] (http://stackoverflow.com/questions/5485923/launch-an-exe-process-with-stdin -stdout और stderr/39,648,986)। साथ ही, [छोटी-प्रक्रिया-लाइब्रेरी] देखें (https://github.com/eidheim/tiny-process-library) जो बहुत सुविधाजनक है। – Delgan