2011-10-13 117 views
2

我在Windows XP上工作,我想知道是否有从stdout得到输出并将其写入文件。我需要能够写入控制台和文件,但使用像tee这样的东西将无法正常工作。发送stdout到文件没有三通

我的老板正在研究需要一段时间的应用程序,他正在写控制台。最后,他想要将stdout倒退一些行,然后将输出写入文件。他认为,每次向屏幕写入内容时写入文件都是太多的I/O。我可能是完全错误的,但是不是说发球台的命令是如何工作的?标准输入输入到tee中,然后将输出写入控制台,然后写入指定的文件。

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

感谢

+0

你应该让你的老板要问自己的问题。否则他不会明白他的计划有多疯狂。 –

回答

0

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

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

我们在这里谈论多少IO?

+0

它实际上不是很多I/O。该程序只需要很快,但我认为它不会增加太多时间,因为写入发生在计算之前和之后。有几个洒在之间。 Tee肯定会解决他的问题。目标本质上是能够在程序运行时看到它,并且还有一个副本供以后查看。我认为三通可能是最好的选择,但我不知道我的建议选择是不是不受欢迎或不可能的。 – hwilli