use strict; $|++; my @signal = sort grep( $_ ne 'KILL', keys( %SIG ) ); push( @signal, 'KILL' ); # SIGKILL last print "Signals: ", join( ', ', @signal ), "\n\n"; my $pid; unless( $pid = fork ) { foreach my $type ( @signal ) { $SIG{$type} = sub { print " SIG$type received!\n" }; } while( 1 ) { sleep 1 } } sleep 1; foreach ( @signal ) { print "Sending pid $pid a SIG$_...\n"; kill( $_, $pid ); sleep 1; } __END__ Signals: ABRT, ALRM, BREAK, CHLD, CLD, CONT, FPE, HUP, ILL, INT, NUM05, NUM06, NUM07, NUM10, NUM12, NUM16, NUM17, NUM18, NUM19, NUM24, PIPE, QUIT, SEGV, STOP, TERM, KILL Sending pid -1336 a SIGABRT... SIGABRT received! Sending pid -1336 a SIGALRM... SIGALRM received! Sending pid -1336 a SIGBREAK... SIGQUIT received! Sending pid -1336 a SIGCHLD... SIGCLD received! Sending pid -1336 a SIGCLD... SIGCLD received! Sending pid -1336 a SIGCONT... SIGCONT received! Sending pid -1336 a SIGFPE... SIGFPE received! Sending pid -1336 a SIGHUP... SIGHUP received! Sending pid -1336 a SIGILL... SIGILL received! Sending pid -1336 a SIGINT... SIGINT received! Sending pid -1336 a SIGNUM05... SIGNUM05 received! Sending pid -1336 a SIGNUM06... SIGNUM06 received! Sending pid -1336 a SIGNUM07... SIGNUM07 received! Sending pid -1336 a SIGNUM10... SIGNUM10 received! Sending pid -1336 a SIGNUM12... SIGNUM12 received! Sending pid -1336 a SIGNUM16... SIGNUM16 received! Sending pid -1336 a SIGNUM17... SIGNUM17 received! Sending pid -1336 a SIGNUM18... SIGNUM18 received! Sending pid -1336 a SIGNUM19... SIGNUM19 received! Sending pid -1336 a SIGNUM24... SIGNUM24 received! Sending pid -1336 a SIGPIPE... SIGPIPE received! Sending pid -1336 a SIGQUIT... SIGQUIT received! Sending pid -1336 a SIGSEGV... SIGSEGV received! Sending pid -1336 a SIGSTOP... SIGSTOP received! Sending pid -1336 a SIGTERM... SIGTERM received! Sending pid -1336 a SIGKILL... (child dies) #### use japh; print;