CreateProcess()를 사용하여 Windows에서 GUI 응용 프로그램으로 외부 콘솔 응용 프로그램을 실행하고 있습니다. 오류가 있는지 여부를 알기 위해 어떻게 든 출력을 수집하고 싶습니다. 이제 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을 사용하여 출력을 파일 (예 :)로 읽으려면 어떻게해야합니까?
관련 : [? 열려진 표준 입력 표준 출력과 EXE/프로세스를 시작하고 (http://stackoverflow.com/questions/5485923/launch-an-exe-process-with-stdin -stdout-and-stderr/39648986). 또한 [tiny-process-library] (https://github.com/eidheim/tiny-process-library)를 보면 매우 편리합니다. – Delgan