重定向子进程输出到文件

来源:互联网 发布:sql合并两列查询结果 编辑:程序博客网 时间:2024/04/26 13:40
CString elfname;CString cmdline;CString outfile;STARTUPINFO   startupinfo; HANDLE   houtputfile; char buffer[100];PROCESS_INFORMATION   pinfo; CDebugTombstoneDlg * pthis = (CDebugTombstoneDlg *) lpParameter;int itemID = pthis->m_linenum;pthis->m_list.GetItemText(itemID, 1, buffer, 100);elfname.Insert(0, buffer);cmdline += "arm-linux-androideabi-objdump.exe -C -D -S ";elfname.Replace("/","\\");cmdline += pthis->m_sympath;cmdline += elfname;startupinfo.cb=sizeof(STARTUPINFO); GetStartupInfo(&startupinfo); startupinfo.dwFlags=STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; startupinfo.wShowWindow=SW_HIDE; SECURITY_ATTRIBUTES psa={sizeof(psa),NULL,TRUE};;psa.bInheritHandle=TRUE;outfile += pthis->m_sympath;outfile += "\\";outfile += "output";outfile += itemID + 48;outfile += ".txt";houtputfile = CreateFile((LPSTR)(LPCTSTR)outfile, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, &psa, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);startupinfo.hStdOutput = houtputfile;startupinfo.hStdInput = houtputfile;startupinfo.hStdError = houtputfile;if(houtputfile == INVALID_HANDLE_VALUE){ AfxMessageBox("Create file Error!"); return GetLastError(); } if(!CreateProcess(NULL, (LPSTR)(LPCTSTR)cmdline, NULL, NULL, TRUE, NULL, NULL, NULL, &startupinfo, &pinfo)) {return GetLastError();}WaitForSingleObject(pinfo.hProcess, 120 * 1000);TerminateProcess(pinfo.hProcess, 1);CloseHandle(houtputfile);return 0;