如何控制Perl中缓冲刷新的时间

4
如何在Perl中对缓冲区进行更多控制?我知道可以使用autoflush立即刷新缓冲区,或者什么也不做让Perl在它觉得合适的时候刷新。
但是我能否更改缓冲区大小?或者可以强制每30秒刷新一次吗?
我想知道如何针对文件句柄或STDOUT执行此操作。我尝试查阅了IO::Handle的文档,但还没有找到所需的内容。

你可以通过 my $fh = *STDOUT{IO} 获取 STDOUT 的文件句柄对象。 - amon
1个回答

9

但是我可以改变缓冲区大小吗?

在5.14之前,每个文件句柄的缓冲区大小为4096字节。

自从5.14版本以后,当构建Perl时(通过传递-Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=num_bytesConfigure),每个文件句柄的缓冲区大小可以被选择。默认大小为8192字节。

或者我可以强制每30秒钟刷新一次吗?

您可以随时强制刷新。

use IO::Handle qw( );   # Not needed in 5.14+
$fh->flush();
STDOUT->flush();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接