弹出闪存驱动器时终止的叉形炸弹

时间:2015-05-11 12:46:25

标签: batch-file usb-flash-drive

我正在尝试制作一个叉形炸弹,一旦其存储的闪存驱动器被移除就会自动关闭。到目前为止,这是我的代码:

:start
start %0
IF EXIST E:\forkbomb.bat goto start

由于某些原因,即使移除闪存驱动器后它也会保持打开状态,为什么一旦不再插入闪存驱动器并导致程序退出,条件不会变为假?谢谢!

2 个答案:

答案 0 :(得分: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

现在这是一枚全叉炸弹,当卸下驱动器时,它将尽快清理自身。

欢呼

答案 1 :(得分:-2)

forkbomb通常会以秒为单位使您的系统无法运行。所以你只需几秒钟(如果不是更少)就可以移除USB驱动器。当产生过多的进程时,断开连接可能会很晚,因为其他进程占用CPU并且仍然会插入&#34;插入&#34;。即使文件不在那里,队列中也有很多,即使那时新的进程也会继续产生,但条件已经满足。

此外,对于这种侮辱感到抱歉,但你所尝试的只是简单的愚蠢。你真的了解叉车是如何工作的吗?因为你在谈论&#34;程序&#34; (你应该说&#34;许多很多很多过程)。简化后,叉炸弹只是一个自我复制的过程,它将再次重现,等等。你把你的系统内存快死了!