为什么bash fork炸弹需要管道?

时间:2017-12-10 11:14:57

标签: bash shell fork

对于经典的bash fork炸弹:

:(){ :|:& };:

我将其修改如下:

:(){ :& };:

执行并立即退出。根据我的理解,:函数应该在后台递归创建子进程。为什么它不起作用?

1 个答案:

答案 0 :(得分:0)

因为函数:()

总是只有一个递归路径

原始的fork炸弹在每次调用时同时调用另外两个实例,从而快速耗尽系统资源。但是,您的修改版本只调用一次,进行简单的递归。它可能最终会溢出堆栈而不会造成更多伤害。