简述
第一次听到fork炸弹这种东西的时候以为是一个很神奇的破坏力惊人的高能脚本,然而稍微深入的了解了一下才发现这个玩意其实是个挺简单纯粹的东西,只是被一个叫Jaromil的家伙对他的精美包装给戏耍了。他在2002年给出了Linux下fork炸弹的最经典的形式:
myths@myths-X450LD:~$ :(){ :|:& };:
一段非常忽悠人的代码,只有13个字母,乍一看完全看不懂。。但其实这个代码的思路非常简单,就是递归的开一个新的进程,不断的开不断的开,直到操作系统崩溃。中招后唯一的解决办法就是拔电源重启。
作为长期写C语言的我们来说,看这段代码有一个很大的坎,就是标识符。C语言里的标识符是不会包含" : "这个东西的,然而这里的函数名恰恰就是这个“ : ”。所谓的fork炸弹,其实就是声明了一个函数,这个函数的名字叫做" : " 他的函数体是调用它本身,并且用管道将他的输出重定向到另一个该函数,并在后台运行。最后调用这个函数。稍微清楚的写法是:bomb(){
bomb|bomb&
};
bomb
这样就清楚很多了,也就没啥神秘的了。
后果
这段代码执行的后果不用说,就是电脑死机。死机的原因就类似DDoS攻击一样,系统忙于处理这个垃圾程序生成的垃圾进程而无法分配给我们需要执行的程序。所以,一般没事做的话不要跑这个代码(话说我就无聊的跑了两遍)。
其实fork炸弹的危险性倒不是特别大,破坏力也不是特别强,毕竟重启一下就行了。Linux下也有其他拥有更强破坏力的命令&#