use 5.20.2;
use warnings;
use threads;
use Time::HiRes qw/ usleep /;
$SIG{USR2} = 'IGNORE';
$SIG{TERM} = 'IGNORE';
if (fork() == 0) {
sleep 1;
my $ppid = getppid();
for (1 .. 1000) {
usleep(int(rand(100000)));
kill 'USR2', $ppid;
kill 'TERM', $ppid;
}
}
$SIG{TERM} = sub {
say "TERM";
};
$SIG{USR2} = sub {
say "USR2";
};
my $thread = threads->create(sub {
$SIG{TERM} = sub {
say "THREAD TERM";
};
$SIG{USR2} = sub {
say "THREAD USR2";
};
sleep 10;
threads->exit();
});
sleep 10;
while ($thread->is_running()) {
usleep 1000;
}
while (! $thread->is_joinable()) {
usleep 1000;
}
$thread->join();
####
USR2
TERM
USR2
TERM
THREAD USR2
THREAD TERM
##
##
This is perl 5, version 24, subversion 1 (v5.24.1) built for x86_64-linux-gnu-thread-multi
(with 85 registered patches, see perl -V for more detail)