-1
我正在写另一个捕获程序的输出一个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 $_
?
http://perl.plover.com/FAQs/Buffering.html – toolic
我敢肯定,必须有一个规范的答案呃那么说,但我找不到它。 – Sobrique
这不是关于缓冲* input *文件句柄的行缓冲。这是关于你从'XIN'读到的行最后换行的事实。 *令人震惊*,我知道。所以,当你打印它们时,输出会被刷新。然而,如果你只是打印点,输出坐在缓冲区中,直到它被填充。 –