http://www.perlmonks.org?node_id=964547


in reply to Re: trying to get timeout to work
in thread trying to get timeout to work

The problem with this is that the alarm signal will then simply kill the script... (which is the default action for SIGALRM)

Replies are listed 'Best First'.
Re^3: trying to get timeout to work
by halfcountplus (Hermit) on Apr 11, 2012 at 14:38 UTC

    Yes, but it will happen in the requested 3 seconds. If you want a non-fatal handler:

    local $SIG{ALRM} = sub { print STDERR "hey\n" };
    Ie, there is a difference in behaviour between that and set_sig_handler(). Whoops, no there isn't, but adding STDERR reporting does shed some light on when the alarm fires...

      Have you tried it?   AFAICT, this still doesn't do what the OP wants.

      Instead of the script getting killed, when the alarm fires, it now prints "hey" to STDERR, and then still goes to wait 60 seconds until the suprocess completes by itself.

        Have you tried it?

        Yes. But I didn't add a print into the OP's handler, or a die into mine, which is why they seemed different due to the wait behaviour you describe. ;)

        All apologies, will edit.