equal
deleted
inserted
replaced
2 |
2 |
3 use 5.010; |
3 use 5.010; |
4 use strict; |
4 use strict; |
5 use warnings; |
5 use warnings; |
6 use threads; |
6 use threads; |
|
7 use Getopt::Long; |
7 |
8 |
8 sub dd; |
9 sub dd; |
9 sub timer; |
10 sub timer; |
10 sub main; |
11 sub main; |
11 sub kbd; |
12 sub kbd; |
12 |
13 |
|
14 our $o_interval = 10; |
|
15 |
13 MAIN: { |
16 MAIN: { |
14 $| = 1; |
17 $| = 1; |
15 my $dd; |
18 my $dd; |
|
19 |
|
20 GetOptions("i|interval=i" => \$o_interval) |
|
21 or die "Usage: $0 [-i|--interval n] <dd options>\n"; |
16 |
22 |
17 $SIG{INT} = sub { |
23 $SIG{INT} = sub { |
18 if (defined $dd) { |
24 if (defined $dd) { |
19 warn "Got $_[0], going to kill dd(pid:$dd)\n"; |
25 warn "Got $_[0], going to kill dd(pid:$dd)\n"; |
20 kill $_[0] => $dd; |
26 kill $_[0] => $dd; |
94 # just sleep 1 second to make the thread killer more |
100 # just sleep 1 second to make the thread killer more |
95 # that what we would expect |
101 # that what we would expect |
96 while (1) { |
102 while (1) { |
97 sleep 1; |
103 sleep 1; |
98 kill "USR1" => $pid |
104 kill "USR1" => $pid |
99 if ++$i % 10 == 0; |
105 if ++$i % $o_interval == 0; |
100 } |
106 } |
101 } |
107 } |
102 |
108 |
103 sub kbd { |
109 sub kbd { |
104 my $pid = shift; |
110 my $pid = shift; |