-
-sub kill_boot() { kill('TERM', -$pid) if defined $pid; }
-sub run_boot()
-{
- # die("No boot command") if ($#ARGV eq -1);
- # my $bootcmd = "'".join("' '", @ARGV)."'";
-
- my $bootcmd = "$FindBin::Bin/boot";
-
- $SIG{INT} = sub { kill_boot(); exit; };
-
- pipe($boot, $wh) || die("pipe: $!");
- my $pid = fork() // die("fork: $!");
- if ($pid == 0) {
- setpgrp(); # Start new process group so that we can kill all
- # background processes at once
- close($boot);
- open(STDERR, ">&", $wh) || die "Can't dup STDERR: $!";
- my $cmd = "$bootcmd 2>&1 | tee /dev/stderr";
- exec($cmd) || die "Can't exec $cmd: $!";
- }
- close($wh);
- return $pid;
-}
-
-END { kill_boot(); }