Причина того, что вилочная бомба работает, заключается в том, что существует ограниченное число процессов, которые могут быть запущены одновременно, и вилочная бомба предназначена для заполнения этого предела.
Поскольку предоставленный вами код ветвления бомбы умирает, если он не может порождать дочерний процесс, родительские процессы фактически не задерживаются, но тот факт, что дети продолжают создавать новых великих * детей, сохраняет таблицу процессов заполненной.
Таким образом, решение для сна спроектировано так, что оно может проникнуть в некоторые процессы, которые просто спят в течение короткого периода времени, и для каждого процесса сна, который удается создать, происходит меньше разветвлений. В конце концов, процессы сна сами заполняют таблицу процессов, и бомбы разветвляются.
Как только таблица процессов заполнится из спящих процессов, цикл while может быть прерван, а спящие процессы прекратятся, когда истечет их время ожидания. Проблема решена .
Как уже упоминалось, важной частью команды zsh является запуск в фоновом режиме &
, поэтому команда bash будет в основном такой же, как и в других ответах:
while (sleep 100 &) do; done
Я не думаю, что часть nohup
/ !
важна, если вы не хотите выходить из системы во время сна, но я был бы рад, если я буду прямо, если я ошибаюсь.