У меня есть Perl-скрипт со следующим кодом.
...
$kill = 1;
$exit = 0;
`kill -9 $pid >& /dev/null`;
...
print "kill=$kill exit=$exit\n";
if ($kill) {
exit $exit;
} else {
...
В итоге, этот скрипт использует open3 () для запуска команды. В какой-то момент это убивает задание, и тогда предполагается, что скрипт завершит работу с кодом 0. Я вставил оператор print, чтобы показать значения переменных $kill
и $exit
, что показано ниже.
kill=1 exit=0
Поскольку $kill
равно 1, я ожидаю, что скрипт завершится с кодом 0 выше, поскольку $exit
равен 0. Однако скрипт завершается с кодом 9, который является сигналом, отправленным дочернему элементу. Почему сценарий Perl завершается с кодом выхода дочернего элемента, а не с кодом, который передается в вызове exit()
?