- my $s = mrecv local %SIG, cb => sub {
- select $wtr; $| = 1;
- print $wtr $_[1], "\n";
- select $wtr; $| = 1;
- };
- $SIG{'HUP'} = sub { mreset $s };
+ select $wtr;
+ $| = 1;
+ my $rcv = mrecv %SIG, cb => sub { print $wtr $_[1], "\n" };
+ my $ppid = getppid;
+ $SIG{ALRM} = sub { alarm 1; kill SIGHUP => $ppid };
+ alarm 1;
+ $SIG{HUP} = sub { alarm 0; mreset $rcv };