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

bulk88 has asked for the wisdom of the Perl Monks concerning the following question:

I am trying to send a signal from a Perl process to the same Perl process on Windows to run one of the %SIG handlers. So far I have
use warnings; use strict; use Config; use Data::Dumper; my (%signo, @signame, $i); $i = 0; defined $Config{sig_name} || die "No sigs?"; foreach my $name (split(' ', $Config{sig_name})) { $signo{$name} = $i; $signame[$i] = $name; $i++; } print Dumper(\@signame); sub sighandler { print "sighandler called\n"; } $SIG{BREAK} = \&sighandler; sub s1 { kill("BREAK", $$); } s1(); sleep 1; print "after sleep\n"; exit;
The output I got was
$VAR1 = [ "ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", "NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD" ]; after sleep
Why wasn't the %SIG handler called?

edit: remove wrong wording, tip from browseruk