# same algorythm as used inside SA
# STDIN = /dev/null
my $fd = fileno (STDIN);
- close STDIN;
- POSIX::close(0) if $fd != 0;
- die "unable to redirect STDIN - $!"
- if !open(STDIN, "</dev/null");
+ if (!$sync) {
+ close STDIN;
+ POSIX::close(0) if $fd != 0;
+
+ die "unable to redirect STDIN - $!"
+ if !open(STDIN, "</dev/null");
+
+ $outfh = PVE::Tools::upid_open($upid);
+ }
- $outfh = PVE::Tools::upid_open($upid) if !$sync;
# redirect STDOUT
$fd = fileno(STDOUT);
my $int_count = 0;
eval {
local $SIG{INT} = local $SIG{QUIT} = local $SIG{TERM} = sub {
+ # always send signal to all pgrp members
+ my $kpid = -$cpid;
if ($int_count < 3) {
- kill(15, $cpid); # send TERM signal
+ kill(15, $kpid); # send TERM signal
} else {
- kill(9, $cpid); # send KILL signal
+ kill(9, $kpid); # send KILL signal
}
$int_count++;
};