0

我正在尝试运行控制台应用程序并读/写它的标准 i/o。问题是,当这个应用程序通过 WriteFile(GetStdHandle(...)) 写入输出时,我成功地通过管道上的 ReadFile 读取了它的输入。

当目标应用程序使用 fprintf 时,ReadFile 会阻塞,直到目标应用程序退出,在这种情况下,它会立即返回整个输出。当目标应用程序阻塞时(例如,通过 fgets()),ReadFile 会阻塞。

我正在使用标准管道重定向: http: //msdn.microsoft.com/en-us/library/windows/desktop/ms682499 (v=vs.85).aspx 。

为什么会出现这种奇怪的行为,我该如何解决?

4

1 回答 1

1

这可能是因为 fprintf 被缓冲而 WriteFile 没有被缓冲。您可以在 fprintf 之后使用 fflush 并尝试相同的方法吗?

于 2013-08-29T20:10:57.700 回答