in reply to Setting signal handlers considered unsafe?
SPECULATION: Perhaps perl first sets the handler to default, then creates a new handler structure (I don't know perl guts, but there's gonna be something like that) and then assigns it.
By sending the signals not that often, like by changing the 1 while kill to sleep 1 while kill you get a chance that you catch the parent in a less vulnerable state and one of your handlers gets executed. Try running it a few times.
and BTW, setting the global SIG{ALRM} instead of the local in f, it _does_ start to work, at least on my system (Fedora 8, perl 5.8.8)
|
|---|