Por que esse comando trava o Linux [duplicado]

5

Por que esse comando trava o Linux?

:(){ :|:& };: 
    
por darthvader 20.03.2011 / 09:15

4 respostas

7

Isso é chamado de bomba garfo .

    
por 20.03.2011 / 10:16
20

O comando define uma função chamada : , que, quando chamada, gera duas cópias de si mesmo em segundo plano e sai. Essas duas cópias fazem o mesmo, resultando em uma enorme quantidade de processos em apenas um segundo, continuando indefinidamente.

Abaixo está exatamente a função mesmo , mas com um nome mais legível:

foo() {
    foo | foo &
}

foo
    
por 20.03.2011 / 09:33
3

Ele bifurca processos ao fundo infinitamente. Depois de um tempo, há muitos processos, cada um com uma pequena quantidade de recursos do sistema.

    
por 20.03.2011 / 09:26
3

Tecnicamente falando, o sistema não travou. Um travamento do sistema produz uma saída com erros. Não enforcou. Isso implicaria que o sistema está fazendo alguma coisa e não retornou. No caso específico, está funcionando corretamente. Leva muito tempo para responder, porque a realização de um computador tem recursos finitos. Portanto, processos infinitos e recursos finitos resultam em tempo infinito para responder.

    
por 20.03.2011 / 13:51

Tags