我正在尝试运行一个控制台应用程序并读取/写入它的标准i / o。问题是,当这个应用程序通过WriteFile(GetStdHandle(...))写入输出时,我成功地在管道上读取了它的ReadFile输入。
当目标应用程序使用fprintf时,ReadFile会阻塞,直到目标应用程序退出,在这种情况下,它会立即返回整个输出。当目标应用程序阻塞时(例如,通过fgets()),然后ReadFile阻止。
我正在使用标准管道重定向:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682499(v=vs.85).aspx。
为什么这种奇怪的行为以及如何绕过它?
答案 0 :(得分:1)
可能是由于fprintf被缓冲而WriteFile没有被缓冲。你可以在fprintf之后使用fflush并试试吗?