无法从freeGlut项目获取stdoutput
Cannot get stdoutput from freeGlut project
我有一个免费供过于求项目,该项目包含计算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);
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- 从python中调用C++函数并获取返回值
- 如何获取一个数字的前3位
- 获取字符串的长度并将其分配给数组
- 无法获取菜单选择以运行函数.C++
- 数组长度,为什么从命令行获取时不能使用它?
- Boost Spirit,获取迭代器内部语义动作
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 具有默认值的引用获取函数
- xmake总是报告:错误:无法获取cxx的程序,为什么
- 无法从freeGlut项目获取stdoutput