Windows 什么是%0 |%0以及它是如何工作的?

Windows 什么是%0 |%0以及它是如何工作的?,windows,command-line,Windows,Command Line,如果您运行的.bat或.cmd文件中包含%0 |%0,您的计算机将开始使用大量内存,几分钟后将重新启动。为什么此代码会阻止您的Windows?这段代码以编程方式做什么?这可能是一个“bug”吗?这是Windows版本的 %0是当前正在执行的批处理文件的名称。仅包含以下行的批处理文件: %0|%0 将永远递归地执行自身,快速创建许多进程并降低系统速度 这不是windows中的错误,只是在批处理文件中做了一件非常愚蠢的事情。这被称为叉炸弹。 它会不断自我分裂,直到别无选择,只能重新启动系统。 这是

如果您运行的.bat或.cmd文件中包含
%0 |%0
,您的计算机将开始使用大量内存,几分钟后将重新启动。为什么此代码会阻止您的Windows?这段代码以编程方式做什么?这可能是一个“bug”吗?

这是Windows版本的

%0
是当前正在执行的批处理文件的名称。仅包含以下行的批处理文件:

%0|%0
将永远递归地执行自身,快速创建许多进程并降低系统速度


这不是windows中的错误,只是在批处理文件中做了一件非常愚蠢的事情。

这被称为叉炸弹。 它会不断自我分裂,直到别无选择,只能重新启动系统。

这是一个逻辑炸弹,它不断地自我重建并占用您所有的CPU资源。它使您的计算机超载,进程过多,并迫使其关闭。如果您创建了一个包含此项的批处理文件并启动它,则可以使用taskmgr结束它。您必须非常快地执行此操作,否则您的计算机将太慢而无法执行任何操作。

它是什么:
%0 |%0
是一个。它将使用管道
|
生成另一个进程,该管道异步运行同一程序的副本。这会占用CPU和内存,使系统几乎停止运行(甚至使系统崩溃)

工作原理:
%0
指用于运行当前程序的命令。例如,
script.bat

管道
|
符号将第一个命令序列的输出或结果作为第二个命令序列的输入。在叉形炸弹的情况下,没有输出,因此它只需运行第二个命令序列而无需任何输入


扩展示例,
%0 |%0
可能意味着
script.bat | script.bat
。这会再次自行运行,但也会创建另一个进程以再次运行同一程序(无输入)。

为什么%0 |%0会打破窗口,而%0不会?@Pavel:bat文件的作用是:读取指令,在文件末尾终止。如果运行%0:进程1:启动,请运行%0(从而创建进程2);然后模具流程2:启动,运行%0(从而创建流程3);然后死亡[…]因为创建者将死亡,所以您最多只能运行2个进程。fork bomb的重点是创建2个版本。因此,P1创建2个进程(1'和1”),这两个进程将分别创建2个(因此是4个),呈指数级。可能重复@RohanGala:
$0;$0
(在bash和zsh中工作,在Ubuntu 14.04上测试)请注意,您可以使用⌃C、 您需要忽略SIGINT或detach以防止出现这种情况。(::(){:|:&};:是一个版本