我在推文中找到了这段代码:
:(){ :|: & };:
它说了一些关于 fork 的内容,但我不完全明白它是如何工作的。有人可以详细解释一下它的作用和工作原理吗?提前致谢。
答案1
正如您所听到的,这是一个“叉子炸弹”。有一个整体关于它的维基百科页面。
在这种情况下,fork 炸弹是一个在后台运行的递归函数,这要归功于 & 运算符。这确保了子进程不会死亡并不断派生函数的新副本,从而消耗系统资源。 -维基百科
简而言之,它正在创建越来越多的进程(通过递归调用相同的函数),从而使系统超载。
您会注意到函数标识符是“:()”,您可以将其替换为名称并缩进代码以使其更清晰:
通过替换函数标识符并重新缩进,代码如下:
bomb() {
bomb | bomb &
};
bomb
“孩子们,不要在家里尝试这个。”-先生。向导