This question already has answers here:
What is %0|%0 and how does it work?
(4个答案)
4年前关闭。
我在Wikipedia上查看了 fork 炸弹,其批次示例为:
或者
或者
我理解后两个,它们启动自己的另一个实例,然后重复,但是我不明白第一个。我读到管道会在右边执行文件,而文件的输出在左边。为什么 fork 炸弹不能是:
我以为这会自己调用,但随后立即终止,但是
编辑:是否循环,因为没有实例可以终止直到返回它们的递归调用?这是否意味着它只会调用第一个
(4个答案)
4年前关闭。
我在Wikipedia上查看了 fork 炸弹,其批次示例为:
%0|%0
或者
:here
start ''your fork bomb name''.bat
goto here
或者
:here
start %0
goto here
我理解后两个,它们启动自己的另一个实例,然后重复,但是我不明白第一个。我读到管道会在右边执行文件,而文件的输出在左边。为什么 fork 炸弹不能是:
%0
我以为这会自己调用,但随后立即终止,但是
%0|%0
为什么也不会终止?即使新实例将继续创建新实例,但在启动第二个实例之后难道不是第一个完成的吗?是什么使第一个继续?编辑:是否循环,因为没有实例可以终止直到返回它们的递归调用?这是否意味着它只会调用第一个
%0
? 最佳答案
%0永远不会结束,但是它永远不会创建多个进程,因为它会立即将控制权转移到第二批脚本(恰好是它自己)。
但是Windows管道除了父进程外,还在管道的每一侧创建一个新进程。直到管道的每一端都终止,父进程才能完成。因此,具有简单管道的主程序将具有3个进程。您可以看到,如果管道的每一端递归调用父批处理,炸弹将很快失控。
关于batch-file - 批叉炸弹?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8949103/
10-12 21:06