Você realmente não pode dizer a diferença entre um processo pendente ou "apenas demorando um pouco". Um processo pode responder a sinais, mas não tem para
.Quando um processo "trava", ele provavelmente fica preso em um loop infinito, ou está aguardando por algum evento que nunca acontece. Mas também poderia fazer muito trabalho.
Por exemplo, um processo que faz um trabalho intensivo pode não reagir imediatamente ao Ctrl-C (um sinal de terminação SIGINT
), mas pode sair um pouco mais tarde ou não sair. Esse é geralmente o caso em que você envia um SIGKILL
, que não pode ser ignorado por um processo.
Observe que, em toda essa situação, o shell real (por exemplo, Bash) nunca fica suspenso. Simplesmente falando, o shell apenas executa o processo e o coloca em primeiro plano. Você ainda pode suspender o processo e continuar a executá-lo em segundo plano ( Ctrl-Z e, em seguida, bg
). Seu shell ainda funcionaria.