Skeeve has asked for the wisdom of the Perl Monks concerning the following question:
I'm desperately trying to get timeouts to work and came up with this test code:
Of course I can't really ready something from a "sleep" command, But I expected this to return after 3 seconds with a "Timeout". Instead I have to wait 60 seconds, so the full sleep-time.use Sys::SigAction qw( set_sig_handler ); eval { my $h = set_sig_handler( 'ALRM' ,sub { die "TIMEOUT\n"; }, { mask=>[ 'ALRM' ], safe=>1, }); eval { alarm 3; $opened= open my $check, '-|', 'sleep 60'; if ($opened) { # slurp its output $line= do { local $/; <$check>; }; $exit_code= $!+0; $closed= close $check; } alarm 0; }; alarm 0; die $@ if $@; }; alarm 0; print $@;
I also tried a different command than "sleep" like, for example, a long running "find" command but still the sleep does not die.
What am I doing wrong or what do I misunderstand?
s$$([},&%#}/&/]+}%&{})*;#$&&s&&$^X.($'^"%]=\&(|?*{%
+.+=%;.#_}\&"^"-+%*).}%:##%}={~=~:.")&e&&s""`$''`"e
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: trying to get timeout to work
by Eliya (Vicar) on Apr 11, 2012 at 14:13 UTC | |
Re: trying to get timeout to work (easier with threads)
by BrowserUk (Patriarch) on Apr 11, 2012 at 17:08 UTC | |
by Skeeve (Parson) on Apr 11, 2012 at 20:51 UTC | |
by BrowserUk (Patriarch) on Apr 11, 2012 at 21:20 UTC | |
Re: trying to get timeout to work
by halfcountplus (Hermit) on Apr 11, 2012 at 14:03 UTC | |
by Eliya (Vicar) on Apr 11, 2012 at 14:20 UTC | |
by halfcountplus (Hermit) on Apr 11, 2012 at 14:38 UTC | |
by Eliya (Vicar) on Apr 11, 2012 at 14:46 UTC | |
by halfcountplus (Hermit) on Apr 11, 2012 at 15:35 UTC |
Back to
Seekers of Perl Wisdom