警告:恶意代码。不要试试这个。它仅出于教育目的出现在这里。为什么这个linux shell命令暂停系统?
如果你在你的shell中键入这个shell代码片段,你的系统似乎停止了,你知道为什么吗?
:() { :|:& }; : #
你能做的唯一的事情就是重新启动系统.. 您能否给我一些解释
警告:恶意代码。不要试试这个。它仅出于教育目的出现在这里。为什么这个linux shell命令暂停系统?
如果你在你的shell中键入这个shell代码片段,你的系统似乎停止了,你知道为什么吗?
:() { :|:& }; : #
你能做的唯一的事情就是重新启动系统.. 您能否给我一些解释
这是一个无限递归。你正在定义一个名为':'的函数,它调用自己并将自己的输出管道输出到自己的另一个实例,并将其自动转出。由于'&',管道也分叉并在后台执行。最后一个':'实际上启动了调用(分号刚刚结束了先前的命令,这是定义函数,换行符也会在这里执行)。
为了使它更清楚,这是它做什么
foo() {
foo | foo &
}
foo
这几乎是一个叉炸弹,具有大规模使用IPC资源的结合。
问题和答案+1;这个问题最终在这里似乎有点过分热心。 – 2009-12-10 18:50:52
你应该说明这是恶意代码。 – 2009-12-10 08:03:19
同意。这是一个叉子炸弹。 – zen 2009-12-10 08:09:03
我不认为“不是真正的问题”是合理的。这个恶意代码的工作原理当然是一个有效的问题,正如一大堆upvotes的出色答案所表明的那样。 – caf 2009-12-10 10:26:03