我在Windows XP上工作,我想知道是否有从标准输出获取输出并将其写入文件。 我需要能够写入控制台和一个文件,但使用像三通这样的东西将无法正常工作。
我的老板正在做一个需要一段时间的应用程序,他正在写信给控制台。 最后,他希望将stdout倒退一些行,然后将输出写入文件。 他认为,每次向屏幕写入内容时写入文件都是太多的I / O。 我可能是完全错误的,但是这不是指示器的工作原理吗? Stdout被input到tee中,然后将输出写到控制台,然后写入指定的文件。
这可能吗? 我知道标准输出是一个文件描述符,所以我在想这应该是可能的,因为你可以倒带其他文件,但标准输出只写? 我知道在Unix中,stdout是文件dev /标准输出。
谢谢
这是三通(或一般重定向流)的用途。 严格来说,你不能“倒带”标准输出。 这就是为什么如果您以后需要查看其数据,则可以将其重定向到其他位置。
我怀疑“写入文件和控制台的IO太多了”断言:对我来说,这是过早的优化。 然而,假设其实是真的…假设你不想重定向你的输出,我所看到的唯一的选择就是把它保存在内存中,直到你准备写出来。 你可以想出一个奇特的方案,分配一块内存,并写到它(和控制台),然后刷新它,因为它变满了,但这似乎是很多麻烦去。
我们在这里谈论多少IO?
您可以使用管道将stdout重定向到文件。 您可以稍后显示文件的内容。
看看这个例子: 使用重定向的输入和输出创建一个子进程