批量炸弹?

时间:2012-01-20 23:20:33

标签: batch-file fork pipeline

我正在维基百科上查看叉炸弹,批量示例如下:

%0|%0

OR

:here
start ''your fork bomb name''.bat
goto here

OR

:here
start %0
goto here

我理解第二个,他们开始自己的另一个实例,然后重复,但我不明白第一个。我读到管道执行右边的文件,文件的输出在左边。为什么叉炸弹不能成为:

%0

我会假设这会自行调用,但会立即终止,但为什么%0|%0也不会终止?即使新实例将继续创建新实例,但是在开始第二次实例后不是第一次完成吗?是什么让第一个继续?

编辑:是否循环,因为在返回递归调用之前,所有实例都无法终止?这是否意味着它只调用第一个%0

1 个答案:

答案 0 :(得分:8)

%0将永远不会结束,但它永远不会创建多个进程,因为它会立即将控制转移到第二个批处理脚本(恰好就是它自己)。

但是除了父进程之外,Windows管道还为管道的每一侧创建了一个新进程。在管道的每一侧终止之前,父进程无法完成。所以带有简单管道的主程序将有3个进程。如果管道的每一侧递归地调用父批,你可以看到炸弹如何快速失控!