无法从freeGlut项目获取stdoutput

Cannot get stdoutput from freeGlut project

本文关键字:获取 stdoutput 项目 freeGlut      更新时间:2023-10-16

我有一个免费供过于求项目,该项目包含计算voronoy网格、初始化免费供过过于求然后绘制网格的代码。

pre-calculations
...
printf("Elapsed %lf secondsn", (double)(clock() - start)/CLOCKS_PER_SEC);
glutInit            ( &argc, argv );
glutInitDisplayMode ( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH );
glutInitWindowSize  ( WIDTH, HEIGHT );
// create window
glutCreateWindow ( "Voronoy" );
// register handlers
glutDisplayFunc  ( display );
glutReshapeFunc  ( reshape );
glutKeyboardFunc ( key     );

glutMainLoop ();

return 0;
...

因此,该程序在控制台模式下工作,然后创建freeglut窗口。我还有一个单独的程序,它从连接到这个的stdout管道中读取。我用这个参数创建流程

STARTUPINFO        si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdInput = stdinput.ReadPipe();
si.hStdOutput = stdoutput.WritePipe();
si.hStdError = stderror.WritePipe();
stdoutput.DuplicateReadPipe();
if ( !CreateProcess( "j:\Projects\study\fortune\Debug\voronoy.exe",//"C:\GnuWin32\bin\ls.exe",
    NULL,
    NULL, NULL,
    TRUE,
    (CREATE_SUSPENDED | CREATE_SEPARATE_WOW_VDM | CREATE_NO_WINDOW),
    NULL, NULL,
    &si, &process_info) )
{
    throw("!!!");
}
DWORD w = ResumeThread(process_info.hThread);
CloseHandle(process_info.hProcess);
CloseHandle(process_info.hThread);

我还尝试了MSDN中的标准管道示例。

问题是程序没有从管道接收到任何数据。我还在cmd.exe中尝试了voronoy.exe>test.txt,但test.txt仍然为空。但若我在并没有管道的情况下运行它,它运行得很好,我可以在控制台中看到输出。

答案很简单。我需要通过简单地调用来刷新std输出

fflush(stdout);