and
kernel_task
's pid is 0
Eles provavelmente usam o PID 0, porque é um PID reservado e, como tal, você não pode enviar sinais para o processo.
I simply ran
kill -9 0
.
O comando * nix kill
é mais ou menos um front-end direto para a chamada do sistema kill
. Da documentação da chamada do sistema:
If pid is zero:
Sig is sent to all processes whose group ID is equal to the process group ID of the sender, and
for which the process has permission; this is a variant of killpg(2).
Em outras palavras, no seu caso, kill -9 0
é apenas uma maneira elegante de enviar o sinal (fatal) para si mesmo. ( Mais sobre grupos de processos. )
Why the heck does it just terminate the process that called the command
O kill
(a menos que você tenha ajustado as configurações do shell) é um comando shell embutido. Em outras palavras, o shell chama o kill
syscall e isso faz com que ele se mate.
Tente o mesmo, mas com o comando kill
externo, por ex. %código%. Nesse caso, apenas o /bin/kill -9 0
seria eliminado.