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