你可以尝试stdbuf
$ stdbuf -o 0 ./a | tee output.txt
手册页的(大)部分:
-i, --input=MODE adjust standard input stream buffering
-o, --output=MODE adjust standard output stream buffering
-e, --error=MODE adjust standard error stream buffering
If MODE is 'L' the corresponding stream will be line buffered.
This option is invalid with standard input.
If MODE is '0' the corresponding stream will be unbuffered.
Otherwise MODE is a number which may be followed by one of the following:
KB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.
In this case the corresponding stream will be fully buffered with the buffer
size set to MODE bytes.
记住这一点,虽然:
NOTE: If COMMAND adjusts the buffering of its standard streams ('tee' does
for e.g.) then that will override corresponding settings changed by 'stdbuf'.
Also some filters (like 'dd' and 'cat' etc.) dont use streams for I/O,
and are thus unaffected by 'stdbuf' settings.
您没有运行stdbuf
在tee
,你运行它在a
,所以这不应该影响你,除非你在a
的源文件中设置缓冲a
的流。
另外,stdbuf
是不是 POSIX,但是GNU-coreutils的一部分。
谢谢,这工作,虽然我不得不编译'希望'我自己作为'unbuffer'似乎没有被默认包含在OS X中。 – houbysoft
@houbysoft:我很高兴它为你工作。 'unbuffer'只是一个小脚本,所以你不需要重新编译整个软件包。 –
是的,可能不是,'./configure && make'花了大约10秒,然后我把'unbuffer'移动到了'/ usr/local/bin' :) – houbysoft