使用createprocess进行输出重定向,在cmd中启动程序命令行模式 ,程序是第三方的,执行后直接退出并没有输出,而是程序中使用AttachConsole 重定向了自己的输入输出,这就使得我用cmd 执行程序时 能看到程序的输出,使用createprocess重定向输出却拿不到输出的内容
IDT中AttachConsole代码
attached_ = AttachConsole(ATTACH_PARENT_PROCESS);
if (attached_)
{
freopen("conin$", "r+t", stdin);
freopen("conout$", "w+t", stdout);
freopen("conout$", "w+t", stderr);
}
我写的管道重定向代码
char command[1024];
strcpy(command,"cmd.exe ");
strcat(command,"/c IDT.exe -i config.xml");
STARTUPINFOW si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = g_hWrite;
si.hStdOutput = g_hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
USES_CONVERSION;
if (!CreateProcess(NULL, A2T(command),NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
CloseHandle(g_hWrite);
CloseHandle(g_hRead);
return 1;
}
if (WAIT_TIMEOUT == WaitForSingleObject(pi.hProcess, INFINITE))
{
return 1;
}
CloseHandle(g_hWrite);
最简单的
strcat(command,"/c IDT.exe -i config.xml >x:\\result.txt");
然后读取 x:\result.txt