http://qs1969.pair.com?node_id=794963


in reply to Re^2: Signals in Strawberry Perl: Name or number?
in thread Signals in Strawberry Perl: Name or number?

When I test code with ALRM signal, I fiddle with the alarm($num) parameter and often use sleep() to cause the alarm to "trigger" during testing. There are problems with signal handling...in general, there is no way to "safely" continue executing a process after an ALRM signal because many OS functions are not re-entrant or even re-startable by any means.

Update: I strike this last sentence because it upset some folks. No offense was intended. I have no interest in obfuscated, obscure code although I do see that some folks have fun with this as an "art form".

The original question was, why doesn't this code work?

sub verse4 { my $boy; $SIG{ALRM} = sub { say "slip n slide" }; ride( $boy ), kill (ALRM, $$) for (1 .. 3); sleep 1; map { $_++ } ($ice_cream, $cake); } sub ride { say "Whee!" };

Replies are listed 'Best First'.
Re^4: Signals in Strawberry Perl: Name or number?
by ikegami (Patriarch) on Sep 13, 2009 at 05:25 UTC

    There's no difference between receiving an alarm that was sent via alarm or via kill. What makes you think that the latter can trigger signals when the former can't?

    What's obfuscated about sending a signal with kill, whose very purpose is to send signals?

      There's no difference between receiving an alarm that was sent via alarm or via kill. What makes you think that the latter can trigger signals when the former can't?

      I didn't say that there was a difference. I explained very clearly how to use the alarm signal in a normal application. A signal is a "message" from the OS.

      What's obfuscated about sending a signal with kill, whose very purpose is to send signals?

      What is obfuscated is this "poetry" idea and using language constructs in "unnatural ways". I have no problem with strange code as an art form.

        I didn't say that there was a difference.

        It looks like I misunderstood you.

        there is no way to "safely" continue executing a process after an ALRM signal because many OS functions are not [...] even re-startable by any means.

        What gives you that idea?

        What is obfuscated is this "poetry" idea

        Again, how is kill ALRM, $$ obfuscation/poetry?