【问题标题】:Why does this linux shell command halt the system? [closed]为什么这个 linux shell 命令会停止系统? [关闭]
【发布时间】:2009-12-10 07:59:37
【问题描述】:

警告:恶意代码。不要尝试这个。它出现在这里仅用于教育目的。

如果你在你的shell中输入这个shell sn -p,你的系统似乎停止了,你知道为什么吗?

:() { :|:& }; :      #

你唯一能做的就是重启你的系统.. 能解释一下吗

【问题讨论】:

  • 你应该澄清这段代码是恶意的。
  • 我不认为“不是一个真正的问题”是合理的。这个恶意代码的工作原理当然是一个有效的问题,正如带有大量赞成票的出色答案所说明的那样。
  • 哦,这是一个骗局......然后就这样关闭它而不是“不是一个真正的问题”:)

标签: linux shell


【解决方案1】:

这是一个无限递归。您正在定义一个名为 ':' 的函数,它调用自身并将自己的输出通过管道传输到自身的另一个实例,然后循环运行。多亏了“&”,管道也被分叉并在后台执行。最后一个 ':' 实际上启动了调用(分号只是结束了前面的命令,它定义了函数,换行符也可以在这里做)。

为了更清楚,这就是它的作用

foo() {
  foo | foo &
}
foo

这几乎是一个分叉炸弹,同时大量使用 IPC 资源。

【讨论】:

  • 问答+1;有时,这里的问题接近尾声似乎有点过分热心。
猜你喜欢
  • 2015-02-12
  • 2013-04-02
  • 2017-06-13
  • 2015-09-13
  • 1970-01-01
  • 2018-12-16
相关资源
最近更新 更多