【发布时间】:2011-07-03 04:22:16
【问题描述】:
通过previous question 中的讨论,我了解到 Perl 默认提供行缓冲区输出。
$| = 0; # for buffered output (by default)
如果您想获得无缓冲的输出,请将特殊变量 $| 设置为 1,即
$| = 1; # for unbuffered output
现在我想知道在哪些情况下应该更喜欢无缓冲的输出?
【问题讨论】:
-
注意设置 $| true 不会使输出无缓冲。输出仍将被缓冲,但缓冲区将比 $| 更频繁地刷新。是假的。
-
哦,我明白了,非常感谢您提供此信息 tadmc :)
-
@tadmc、@Chankey Pathak、将
$|设置为true 确实 使输出无缓冲。所有数据在print返回之前发送到操作系统。 (操作系统也可能会进行某种形式的缓冲,但那是不同的。这些缓冲区使用fsync(2)刷新。)
标签: perl buffering output-buffering