fork_worker: refactor child exit

* factor out duplicated code.
* drop final kill(-9, $$), since the POSIX:_exit call does not return
  (see man 2 _exit).

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
This commit is contained in:
Stoiko Ivanov 2018-11-20 09:46:31 +01:00 committed by Thomas Lamprecht
parent 7571d25b3d
commit edbb302ec8

View File

@ -579,22 +579,21 @@ sub fork_worker {
} }
&$function($upid); &$function($upid);
}; };
my ($msg, $exitcode);
my $err = $@; my $err = $@;
if ($err) { if ($err) {
chomp $err; chomp $err;
$err =~ s/\n/ /mg; $err =~ s/\n/ /mg;
syslog('err', $err); syslog('err', $err);
my $msg = "TASK ERROR: $err\n"; $msg = "TASK ERROR: $err\n";
POSIX::write($resfh, $msg, length($msg)); $exitcode = -1;
POSIX::close($resfh) if $sync;
POSIX::_exit(-1);
} else { } else {
my $msg = "TASK OK\n"; $msg = "TASK OK\n";
POSIX::write($resfh, $msg, length($msg)); $exitcode = 0;
POSIX::close($resfh) if $sync;
POSIX::_exit(0);
} }
kill(-9, $$); POSIX::write($resfh, $msg, length($msg));
POSIX::close($resfh) if $sync;
POSIX::_exit($exitcode);
} }
# parent # parent