我正在开发一个rtmpdump
在下载过程中处理流式二进制数据(使用输出到 STDOUT)的应用程序。出于调试目的,我想用本地文件慢速打印到 STDOUT 来替换这种流下载,所以我将处理我知道的数据。
Linux 命令 cat file.bin
是简单的解决方案,但与流式下载相比它太快了。我正在使用真实流处理的应用程序,与我使用时的批量相比,批量下载和处理数据要小得多cat
。
应该使用什么 Linux 命令来使打印速度变慢?我怎样才能“管理”这种打印的速度?
一个小的 Perl 脚本:
use warnings;
use strict;
open my $f, "<", "file.bin" or die($!);
binmode($f);
my $buf;
while(my $len = read($f, $buf, 100 * rand() + 10))
{
print $buf;
sleep rand() * 2;
}
close $f;
一个做相同(和更好)的单线:
perl -ne '$|=1; for (split //) { print; select(undef,undef,undef, 0.07) }' file.txt
函数中的第四个参数select()
:
0.10 - 相当慢;0.07 - 还可以;0.03 - 相当快
根据你的口味改变它。