1. ホーム
  2. bash

[解決済み] このbashのフォーク爆弾はどのように機能するのでしょうか?重複

2022-08-23 13:36:37

質問

Wikipediaによると、以下のように非常にエレガントなbashのフォーク爆弾があるそうです。

:(){ :|:& };:

どのように動作するのですか?

どのように解決するのですか?

分解してみると、大きく3つのピースがあります。

:()      # Defines a function, ":". It takes no arguments.
{ ... }; # The body of the function.
:        # Invoke the function ":" that was just defined.

プロセス上で連続して呼び出されるたびに ":" への呼び出しがさらに生成されます。これは、システムリソースの爆発的な消費に急速につながり、事態を停止に追い込みます。

なぜなら、それは単に元のプロセスのスタック オーバーフローを引き起こすだけだからです。

より人間に近いバージョンは次のようなものです。

kablammo() {             # Declaration
  kablammo | kablammo&   # The problematic body.
}; kablammo              # End function definition; invoke function.

編集します。 下のWilliamのコメントは、私が上で言ったことをより良く言い表したものでしたので、その提案を取り入れるために編集しました。