在Perl中,要在不阻塞的情况下测试STDIN,可以使用select
函数来检查STDIN是否有数据可读。以下是一个示例代码:
use strict;
use warnings;
while (1) {
my $rin = '';
my $rout = '';
vec($rin, fileno(STDIN), 1) = 1;
my $nfound = select($rout=$rin, undef, undef, 0.1);
if ($nfound > 0) {
my $input = <STDIN>;
chomp $input;
print "You entered: $input\n";
} else {
print "No input available\n";
}
}
在这个示例中,我们使用select
函数来检查STDIN是否有数据可读。如果有数据可读,我们从STDIN中读取输入并输出;如果没有数据可读,我们输出"No input available"。select
函数的第四个参数是超时时间,这里设置为0.1秒。
这样,我们就可以在不阻塞的情况下测试STDIN。
领取专属 10元无门槛券
手把手带您无忧上云