Eu duvido que exista algo mais do que apenas enviar o sinal para cada um dos alvos. A definição POSIX para kill(1)
é exatamente a mesma , então, tentar novamente seria uma violação de a especificação:
The kill utility shall send a signal to the process or processes specified by each pid operand.
For each pid operand, the kill utility shall perform actions equivalent to the kill() function
Além disso, lembre-se de que nem todos os sinais fazem com que os processos terminem, e alguns, como SIGHUP
(sem falar em SIGUSR1
), podem significar coisas diferentes para programas diferentes. Não há nenhuma maneira clara de kill
saber quando tentar novamente, mas certamente existem programas que primeiro enviam SIGTERM
e depois "tentam novamente" com SIGKILL
.
O envio dos sinais na ordem dada seria a implementação direta, e é isso que, por exemplo, % De kill
do Bash:
$ strace -etrace=kill bash -c 'kill -0 33330 33339 33335 33332 33337' |& grep ^'kill('
kill(33330, SIG_0) = -1 ESRCH (No such process)
kill(33339, SIG_0) = -1 ESRCH (No such process)
kill(33335, SIG_0) = -1 ESRCH (No such process)
kill(33332, SIG_0) = -1 ESRCH (No such process)
kill(33337, SIG_0) = -1 ESRCH (No such process)