# START_SUB sub setSigDisposition() { my ($sighandler,$snum); # # The set of signals to mask # my $sigset = POSIX::SigSet->new; $sigset->fillset(); # # Don't mask these signals because wouldn't want to continue # if one these sent, even in critical section(s). # $sigset->delset( &POSIX::SIGILL ); $sigset->delset( &POSIX::SIGSEGV ); $sigset->delset( &POSIX::SIGFPE ); $sigset->delset( &POSIX::SIGINT ); foreach $snum( split(' ', $Config{sig_num}) ){ $SIG{CHLD} = 'IGNORE'; if( $snum == &POSIX::SIGILL || $snum == &POSIX::SIGSEGV || $snum == &POSIX::SIGFPE || $snum == &POSIX::SIGINT ){ $sighandler = "main::death"; } # elsif( $snum == &POSIX::SIGTERM ){ # $sighandler = "main::shutdown"; # } else{ $sighandler = "main::reaper"; } # Set signal disposition ... POSIX::sigaction( $snum, POSIX::SigAction->new( $sighandler, POSIX::SigSet->new, &POSIX::SA_NOCLDSTOP ), POSIX::SigAction->new( $sighandler, POSIX::SigSet->new, &POSIX::SA_NOCLDSTOP ) ); } return $sigset; } # END_SUB