use sigtrap;
use sigtrap qw(stack-trace old-interface-signals); # equivalent
use sigtrap qw(BUS SEGV PIPE ABRT);
use sigtrap qw(die INT QUIT);
use sigtrap qw(die normal-signals);
use sigtrap qw(die untrapped normal-signals);
use sigtrap qw(die untrapped normal-signals
stack-trace any error-signals);
use sigtrap 'handler' => \&my_handler, 'normal-signals';
use sigtrap qw(handler my_handler normal-signals
stack-trace error-signals);
The sigtrap pragma is a simple interface to installing signal
handlers. You can have it install one of two handlers supplied by
sigtrap itself (one which provides a Perl stack trace and one which
simply die()s), or alternately you can supply your own handler for it
to install. It can be told only to install a handler for signals which
are either untrapped or ignored. It has a couple of lists of signals to
trap, plus you can supply your own list of signals.
The arguments passed to the use statement which invokes sigtrap
are processed in order. When a signal name or the name of one of
sigtrap's signal lists is encountered a handler is immediately
installed, when an option is encountered it affects subsequently
installed handlers.
The handler used for subsequently installed signals outputs a Perl stack
trace to STDERR and then tries to dump core. This is the default signal
handler.
your-handler will be used as the handler for subsequently installed
signals. your-handler can be any value which is valid as an
assignment to an element of %SIG.
These signals usually indicate a serious problem with the Perl
interpreter or with your script. They are ABRT, BUS, EMT, FPE, ILL,
QUIT, SEGV, SYS and TRAP.
These are the signals which were trapped by default by the old
sigtrap interface, they are ABRT, BUS, EMT, FPE, ILL, PIPE, QUIT,
SEGV, SYS, TERM, and TRAP. If no signals or signals lists are passed to
sigtrap, this list is used.
For each of these three lists, the collection of signals set to be
trapped is checked before trapping; if your architecture does not
implement a particular signal, it will not be trapped but rather
silently ignored.