为什么tee等待.exe程序结束?

时间:2016-01-13 16:39:36

标签: windows cygwin tee

我在安装了cygwin 1.7.0的Windows 7主机上。

我希望在控制台上看到myTest.exe的输出,同时将其写入myTest.log,但只有当myTest.exe结束时才会显示所有输出。

我尝试了建议here的解决方案,这很有效。然后我写了以下myTest.c

#include <stdio.h>
#include <Windows.h>

int main() {
    printf ("hello\n");
    Sleep(5000);
    printf("goodbye\n");
    return 0;
}

并使用命令

进行编译
gcc myTest.c -o myTest

在没有tee的情况下执行test.exe按预期工作,但是如果我执行

./myTest.exe | tee myTest.log

只有在myTest.exe完成后才能在控制台上获得所有输出。

有关如何在myTest.exe仍在运行时将输出输出到控制台的任何建议吗?

1 个答案:

答案 0 :(得分:0)

控制台输出是缓冲的,因此当程序退出时,它会刷新缓冲区。您需要在睡眠前显式刷新缓冲区,以便立即写入。例如:

fflush(stdout);