Я пишу программу на Perl, которая фиксирует вывод другой программы, и я заметил, что в цикле while <FILEHANDLE>
(поэтому $_
содержит прочитанную строку) происходит следующее:
open XIN, "-|", "test_xsr"; # not getting in real time! FIX
while (<XIN>) {
print ".";
}
отпечатки
....
после завершения программы во время
open XIN, "-|", "test_xsr"; # not getting in real time! FIX
while (<XIN>) {
print $_;
}
отпечатки
1
2
3
done
в режиме реального времени, во время работы программы. (Пока я тестирую, программа всегда выдает этот результат.)
Почему возникает это несоответствие?
Можно ли обрабатывать выходные данные в режиме реального времени без print
ing$_
?
XIN
, имеют в конце новые строки. Шокирует, я знаю. Итак, когда вы их печатаете, вывод очищается. Принимая во внимание, что если вы просто печатаете точки, вывод находится в буфере до тех пор, пока он не будет заполнен. - person Sinan Ünür   schedule 14.06.2017