我正在尝试从 Perl 的管道中读取未缓冲的数据。例如在下面的程序中:
open FILE,"-|","iostat -dx 10 5";
$old=select FILE;
$|=1;
select $old;
$|=1;
foreach $i (<FILE>) {
print "GOT: $i\n";
}
iostat 每 10 秒(五次)吐出数据。你会期望这个程序做同样的事情。但是,它似乎会挂起 50 秒(即 10x5),之后它会吐出所有数据。
我怎样才能返回任何可用的数据(以无缓冲的方式),而无需一直等待 EOF?
PS 我在 Windows 下看到了很多对此的引用——我在 Linux 下这样做。