]> git.vpit.fr Git - perl/modules/IPC-MorseSignals.git/blob - t/02-sigusr.t
Importing IPC-MorseSignals-0.04.tar.gz
[perl/modules/IPC-MorseSignals.git] / t / 02-sigusr.t
1 #!perl -T
2
3 use Test::More tests => 2;
4
5 use POSIX qw/SIGINT SIGTERM SIGKILL EXIT_SUCCESS EXIT_FAILURE WIFEXITED WEXITSTATUS/;
6
7 sub trysig {
8  my ($n, $s) = @_;
9  my $pid = fork;
10  if (!defined $pid) {
11   die "$s: fork() failed : $!";
12  } elsif ($pid == 0) {
13   local $SIG{$s} = sub { exit EXIT_SUCCESS };
14   1 while 1;
15   exit EXIT_FAILURE;
16  }
17  sleep 1;
18  my $ret = 0;
19  eval {
20   local $SIG{ALRM} = sub { die };
21   alarm 1;
22   kill $n, $pid;
23   waitpid $pid, 0;
24   $ret = (WIFEXITED($?) && (WEXITSTATUS($?) == EXIT_SUCCESS));
25   alarm 0;
26  };
27  if ($@) {
28   kill SIGINT,  $pid;
29   kill SIGTERM, $pid;
30   kill SIGKILL, $pid;
31   die "$s: $@";
32  }
33  ok($ret, $s);
34 }
35
36 trysig SIGUSR1, 'USR1';
37 trysig SIGUSR2, 'USR2';