#!/usr/bin/perl use strict; use warnings; print "starting pid=$$\n"; my $I = 0; { my $pid = 0; sub handler { my $sig = shift; $I += 1; print "caught $sig\n"; local $SIG{$sig} = 'IGNORE'; # doesn't work with local!! kill($sig, -$$); print "end of handler\n"; } local $SIG{INT} = \&handler; kill('INT', $$); } print "ending I=$I\n";