#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11165441 use warnings; $SIG{__WARN__} = sub { die @_ }; if( my $pid = fork ) { # parent sleep 1; kill 'INT', $pid; sleep 1; kill 'INT', $pid; sleep 1; kill 'TERM', $pid; print "parent waiting for child to exit\n"; wait; print "parent exited\n"; } elsif( defined $pid ) { # child print "child started\n"; $SIG{INT} = sub { print "child got SIGINT\n" }; $SIG{TERM} = sub { print "child got SIGTERM\n"; exit }; sleep 1 while 1; } else { die "fork failed"; }