Это, как вы сказали, вилочная бомба. Что он делает, так это определяет функцию, а затем вызывает ее. Функция называется :
Давайте назовем это forkbomb
чтобы лучше видеть, что происходит:
forkbomb(){ forkbomb|forkbomb& };forkbomb
Как вы можете видеть и, вероятно, догадываетесь из своего опыта программирования, первая часть - это определение функции (forkbomb(){ ... }
), а самая последняя :
это место, где вызывается функция (the ;
просто разделяет операторы в Bash). ).
Теперь, что делает эта функция? Если вы знакомы с Bash, вы будете знать, что |
символ передает стандартный вывод одной команды / программы на стандартный ввод другой. Таким образом, в основном :|:
запускает два экземпляра функции (именно здесь она "разветвляется").
И затем магия: &
ставит эти команды в фоновом режиме, позволяя возвратить исходную функцию, в то время как каждый экземпляр разветвляется, пока коровы возвращаются домой в фоновом режиме, тем самым израсходовав все свои ресурсы и разрушив систему (если она не имеет ограничения наложены на него).