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


in reply to Re: Re: Gracefully exiting daemons
in thread Gracefully exiting daemons

You can of course catch the signal and do nothing, or (as here) just set a variable for you to look at later.
$SIG{HUP} = \&catch; my $caught = 0; my $count = 0; print "I am $$, HUP me\n"; for (0..10) { sleep (5); # pretending to do stuff print "$_\n"; } die "I was HUPed $caught times" if $caught; ### Subroutines below sub catch { $caught++; }
You should of course think carefully about ignoring signals, expecially INT and TERM, since if you get these, someone/something is trying to tell you something.

But, delaying handling e.g. HUP or USR1 until it is a better time to handle is OK.

Make sure you document the signal handling well, specially if it is not expected behaviour. E.g. HUP is often used to mean "Please reread your config file".
--
Brovnik