发送stdout到文件没有tee

时间:2011-10-13 21:04:54

标签: windows stdout tee

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

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

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

由于

2 个答案:

答案 0 :(得分:0)

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

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

我们在这里谈了多少IO?

答案 1 :(得分:0)

您可以使用管道将stdout重定向到文件。您可以稍后显示该文件的内容。

看一下这个例子:Creating a Child Process with Redirected Input and Output