in reply to Re: simple timeout
in thread simple timeout

Well I'm actually trying to probe a number of servers using WMI, it's about 300 servers and occassionaly one will not respond causing the script to hang indefinetely.

For your alarm suggestion, I've tried trying to work with the alarm funtion but had no joy, for example the following doesn't work.

(using my $buf=<>; instead of the wmi stuff)

$SIG{'ALRM'}=\&time_out; while(1) { eval { alarm(5); my $buf=<>; alarm(0); }; print "next\n"; } exit; sub time_out { print "fed up waiting, next please\n"; die "FED UP WAITING"; }

The script should wait for user input, and get 'fed up' after 5 seconds. Problem being the alarm never seems to get called.

Replies are listed 'Best First'.
Re^3: simple timeout
by disciple01 (Novice) on Nov 08, 2004 at 14:06 UTC
    also the actual `perldoc -f alarm` example doesn't seem to work either.

    eval { local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required alarm 2; `dir /s c:`; alarm 0; };

    Surely alarm should interrupt the timeconsuming `dir /s c:` (recursive dir) after 2 seconds?

        Tried using Time::Hires;

        use Time::HiRes qw (ualarm setitimer); ualarm(5000); exit;

        returns "ualarm is not a valid Time::HiRes macro at C:/Perl/lib/Time/HiRes.pm line 27."

        Not having much luck here. =(