kill('TERM', -$pid);
exit($status >> 8);
-
+sub kill_boot() { kill('TERM', -$pid) if defined $pid; }
sub run_boot()
{
# die("No boot command") if ($#ARGV eq -1);
my $bootcmd = "$FindBin::Bin/boot";
+ $SIG{INT} = sub { kill_boot(); exit; };
+
pipe($boot, $wh) || die("pipe: $!");
my $pid = fork() // die("fork: $!");
if ($pid == 0) {
# background processes at once
close($boot);
open(STDERR, ">&", $wh) || die "Can't dup STDERR: $!";
- my $cmd = "$bootcmd | tee /dev/stderr";
+ my $cmd = "$bootcmd 2>&1 | tee /dev/stderr";
exec($cmd) || die "Can't exec $cmd: $!";
}
close($wh);
return $pid;
}
-END { kill('TERM', -$pid) if defined $pid; }
+END { kill_boot(); }