Вилочная бомба, которая прекращается при извлечении флешки
Я пытаюсь создать вилочную бомбу, которая закрывается, как только извлекается флэш-накопитель, на котором она хранится. Это мой код до сих пор:
:start
start %0
IF EXIST E:\forkbomb.bat goto start
По какой-то причине он остается открытым даже после извлечения флеш-накопителя, почему условие не становится ложным, когда флеш-накопитель больше не вставляется и вызывает выход из программы? Спасибо!
1 ответ
Поменять местами 1 и 2;)
Технически это больше не будет вилочной бомбой, но все равно создаст много окон, которые изгонят себя, как только флешка исчезнет.
Отредактируйте, немного подумав, и вам также нужен еще один IF.
IF EXIST E:\forkbomb.bat start %0
:start
IF EXIST E:\forkbomb.bat goto start
На самом деле вы даже можете попытать счастья с оригинальным дизайном вилочной бомбы.
Концептуально это не сработало для вас, вероятно, потому что каждый экземпляр должен был находиться за выделенной строкой ниже в том случае, когда диск был удален:
:start
start %0 <<<< this line
IF EXIST E:\forkbomb.bat goto start
Потому что, если хотя бы один из экземпляров находится перед началом, он будет продолжать создавать новые экземпляры (без цикла). Так что, по сути, ваша вилочная бомба переродилась в ситуацию, когда каждое окно создает ровно одно новое окно.
TL; Dr без лишних слов, вот мое исправленное решение
:begin
IF NOT EXIST E:/forkbomb.bat goto end
start %0
goto begin
:end
Теперь это бомба с полной вилкой, и когда диск будет удален, он очистится как можно быстрее.
ура
Вилочная бомба обычно делает вашу систему неработоспособной за считанные секунды. Таким образом, у вас будет всего несколько секунд (если не меньше), чтобы извлечь USB-накопитель. Когда порождается слишком много процессов, разъединение, вероятно, наступит очень поздно, так как другие процессы занимают ЦП, а флешка все еще будет "подключена". Даже если файла нет, в очереди есть чертовски много, что даже тогда будут появляться новые процессы, для которых условие уже выполнено.
Кроме того, извините за это оскорбление, но то, что вы пытаетесь, просто глупо. Вы действительно понимаете, как работает вилка? Потому что вы говорите о "программе" (вы должны говорить о "многих-многих-многих-многих процессах"). Упрощенно, вилочная бомба - это просто самовоспроизводящийся процесс, который снова будет воспроизводиться и т. Д. Вы мусорите свою систему память чертовски быстро!