我在安装了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仍在运行时将输出输出到控制台的任何建议吗?
答案 0 :(得分:0)
控制台输出是缓冲的,因此当程序退出时,它会刷新缓冲区。您需要在睡眠前显式刷新缓冲区,以便立即写入。例如:
fflush(stdout);