2

我正在使用 Windows XP,我想知道是否有从 stdout 获取输出并将其写入文件的方法。我需要能够写入控制台和文件,但使用像 tee 这样的东西是行不通的。

我的老板正在开发一个需要一段时间的应用程序,他正在向控制台写入数据。最后,他想将标准输出倒带几行,然后将输出写入文件。他认为每次向屏幕写入内容时都写入文件是太多的 I/O。我可能完全错了,但这不是 tee 命令的工作原理吗?标准输出通过管道传输到 tee,然后将输出写入控制台,然后写入指定的文件。

这可能吗?我知道stdout是一个文件描述符,所以我认为它应该是可能的,因为你可以倒带其他文件,但是stdout是只写的吗?我知道在 Unix 中标准输出是文件 dev/stdout。

谢谢

4

2 回答 2

0

这就是 tee (或通常重定向流)的用途。严格来说,您不能“倒带”标准输出。这就是为什么如果您稍后需要查看它的数据,您会将其重定向到其他地方。

我怀疑“写入文件和控制台的 IO 太多”断言:对我来说,这有点过早优化的味道。但是,假设这实际上是真的......并且假设您不想重定向输出,我看到的唯一其他选择是将其保存在内存中,直到您准备好将其写出为止。你可以想出一个花哨的方案,分配一块内存并写入它(和控制台),然后在它变满时刷新它......但这似乎很麻烦。

我们在这里谈论多少 IO?

于 2011-10-13T21:18:52.720 回答
0

您可以使用管道将标准输出重定向到文件。您可以稍后显示文件的内容。

看看这个例子:使用重定向的输入和输出创建子进程

于 2011-10-13T21:23:39.497 回答