我如何在这段代码中实现超时:如果"hwinfo --usb"-command在一段时间后没有返回任何东西,(停止命令并)从子_usb_device返回或死亡。
#!/usr/bin/env perl
use warnings;
use strict;
sub _usb_device {
my @array;
{
local $/ = "";
@array = qx( hwinfo --usb );
}
...
...
}发布于 2010-03-23 17:36:50
超时通常是通过alarms完成的。
sub _usb_device
{
# Scope array
my @array;
# Try shell command
eval
{
local $SIG{ALRM} = sub { die "timeout\n" };
local $/ = "";
alarm 10;
@array = qx( hwinfo --usb );
alarm 0;
};
# Catch and rethrow non timout errors
die $@ if $@ && $@ ne "timeout\n";
# Done
return @array;
}https://stackoverflow.com/questions/2498336
复制相似问题