它必須非常簡單,但我無法捕捉它。使用T連續輸出的C程序
這是一個簡單的C程序寫入到標準輸出:
[email protected]:~/tst# cat tst.c
#include <stdio.h>
#include <unistd.h>
int
main(int argc, char **argv)
{
for (; ;) {
printf("Hello world!\n");
sleep(1);
}
return 0;
}
現在,如果我想寫輸出到我的屏幕和一個文件:
[email protected]:~/tst# ./tst |tee file
它只是不工作,我有空的屏幕和空文件。
如果我做了一個退出的程序,那麼它完美的工作,例如,
[email protected]:~/tst# ls |tee file
Makefile
file
qq
tst
tst.c
tst.o
[email protected]:~/tst# cat file
Makefile
file
qq
tst
tst.c
tst.o
[email protected]:~/tst#
這是一種緩衝問題嗎?有人可以幫我做一個繼續節目的開球嗎?
如果你嘗試'fflush(stdout);'? – fredtantini
@fredtantini:那確實有用。真的很簡單。謝謝 - 隨時發佈它作爲答案。 – wick
似乎有一些有用的答案[這裏](http://stackoverflow.com/questions/11337041/force-line-buffering-of-stdout-when-piping-to-tee)。 (我現在不在Linux機器上,所以我不能試用它。) –