2011-10-13 80 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