Я нахожусь на хосте Windows 7 с установленным cygwin 1.7.0.Почему tee ждет окончания программы .exe?
Я хочу видеть вывод 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
Исполнительной test.exe
без тройника работает, как ожидалось, но если я выполняю
./myTest.exe | tee myTest.log
Я получаю все выходные на консоли только после myTest.exe
делается.
Любые предложения, как я могу получить вывод на консоль, пока myTest.exe все еще работает?
Только при отправке на интерактивную сессию. При отправке в файл или канал \ n не очищает буфер. http://stackoverflow.com/questions/5229096/does-printf-always-flush-the-buffer-on-encountering-a-newline – allen1
Нет проблем! Я изучаю этот способ LOT в переполнении стека. Это одна из причин, по которой мне нравится приезжать сюда! :-) – allen1
Работает с 'fflush (stdout)'. Я решил это с помощью 'setvbuf (stdout, NULL, _IONBF, 0); setvbuf (stderr, NULL, _IONBF, 0) '(как указано в ссылке, которую вы опубликовали) в начале моей основной функции, так что нет необходимости использовать' fflush' все время;) –