]> git.vpit.fr Git - perl/modules/IPC-MorseSignals.git/blob - t/02-sigusr.t
Importing IPC-MorseSignals-0.02.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/SIGTERM SIGKILL EXIT_FAILURE EXIT_SUCCESS/;
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  }
16  my $ret = EXIT_FAILURE;
17  eval {
18   local $SIG{ALRM} = sub { die };
19   alarm 1;
20   kill $n, $pid;
21   waitpid $pid, 0;
22   $ret = $?;
23   alarm 0;
24  };
25  if ($@) {
26   kill SIGINT,  $pid;
27   kill SIGTERM, $pid;
28   kill SIGKILL, $pid;
29   die "$s: $@";
30  }
31  ok($ret == EXIT_SUCCESS, $s);
32 }
33
34 trysig SIGUSR1, 'USR1';
35 trysig SIGUSR2, 'USR2';