我有一个简单的控制台应用程序,为我提供了Visual Studio 2010中的一些预生成功能。它继续产生其他子进程(尽管等待终止这些子进程在Visual Studio中捕获控制台应用程序的输出
当我在Visual Studio外部运行应用程序时,它的所有消息等都出现在控制台窗口(即stdout)中,但是当我在VS下运行此应用程序时,在构建中看不到任何输出窗口。
有谁知道这是为什么?
它很讨厌。
编辑:进一步检查我设法让我的应用程序的标准输出出现,但子进程的标准输出没有出现。有任何想法吗?
我再直接使用下面的代码的子进程的标准输出:
STARTUPINFO si;
GetStartupInfo(&si);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
PROCESS_INFORMATION pi;
// Create the process.
if (!CreateProcess(applicationName.GetCStr(), cmd.CStr(), NULL, NULL, TRUE, 0, NULL, workingDir.GetCStr(), &si, &pi))
{
// Failed to create process!!
return false;
}
除非您另有说明,否则不要子进程自动继承其父母的标准I/O句柄? – ChrisV 2011-01-20 16:03:34