5

Возможный дубликат:
Что означает эта загадочная команда bash?

Почему эта команда вылетает в Linux?

:(){ :|:& };: 

4 ответа4

20

Команда определяет функцию с именем : которая при вызове порождает две свои копии в фоновом режиме и завершает работу. Эти две копии делают то же самое, что приводит к огромному количеству процессов за одну секунду, продолжающихся бесконечно.

Ниже приведена точно такая же функция, но с более читаемым именем:

foo() {
    foo | foo &
}

foo
7

Это называется вилочной бомбой.

3

Он разветвляет процессы на задний план бесконечно. Через некоторое время происходит слишком много процессов, каждый из которых потребляет небольшое количество системных ресурсов.

3

Технически говоря система не сломалась. Сбой системы приводит к выходу с ошибками. Он также не повесился. Это будет означать, что система что-то делает и не вернулась. В конкретном случае это работает правильно. Просто требуется слишком много времени, чтобы ответить, потому что компьютерная реализация имеет ограниченные ресурсы. Следовательно, бесконечные процессы и ограниченные ресурсы приводят к бесконечному времени для ответа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .