E se todos os sinais forem ignorados?

1

Até onde eu sei, algum sinal é usado para parar / continuar e finalizar / matar o processo. Se fiz o processo ignorar todo o sinal, o que vai acontecer? Será um zumbi ou algo que não pode ser morto?

    
por CatDog 19.05.2018 / 07:21

2 respostas

2

Existem sinais que não podem ser ignorados. SIGKILL sempre mata um processo sem lhe dar uma chance de reagir. A SIGSTOP sempre suspende um processo sem dar a chance de reagir. Algumas variantes Unix podem fornecer outros sinais não ignoráveis e não manipuláveis; O Linux tem apenas o KILL padrão e o STOP.

A única maneira que um processo pode permanecer depois de um SIGKILL é se ele está atualmente em uma chamada de sistema não interruptivel. O processo não pode mais executar nenhum código, mas ficará para trás até que a chamada do sistema termine ou atinja um ponto interrompível. Normalmente, isso é muito curto para ser observado, mas você pode vê-lo ocasionalmente (um processo persistente no estado D ) devido a drivers com bugs, hardware defeituoso ou às vezes com sistemas de arquivos de rede. Consulte E se 'kill -9' não funcionar?

Um processo impossível de matar não seria um "zumbi" já que um zumbi já está <> morto, e o termo "processo zumbi" realmente existe e significa uma entrada de tabela de processo correspondente a um processo que já está morto. Veja Como o Linux lida com o processo zumbi

    
por 19.05.2018 / 11:56
0

Primeiro de tudo, Zombie é um estado em que um processo liberou todos os seus recursos, exceto PID, e aguarda para ser finalmente colhido, ou seja, para ser completamente liberado.

Os Processos do Kernel têm o estado Task_Interruptible, o que significa que ele não responderá a nenhum sinal enviado.

Então, finalmente, para sua pergunta, se você conseguir mascarar todos os sinais para evitar os sinais de gerenciamento de processo, eles ficarão sozinhos e não poderão ser gerenciados sempre que necessário. Isso também pode resultar em sobrecarga do sistema.

    
por 19.05.2018 / 07:39