![このコードは何をしますか? [コピー]](https://linux33.com/image/32012/%E3%81%93%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E4%BD%95%E3%82%92%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
ツイートで次のコードを見つけました。
:(){ :|: & };:
フォークの内容がありますが、どのように機能するのか完全には理解していません。誰かがそれが何をしてどのように機能するかを詳しく説明できますか?よろしくお願いします。
答え1
聞くように、これは「フォーク爆弾」です。全体がありますそれに関するウィキペディアページ。
この場合、フォーク爆弾は&演算子のおかげでバックグラウンドで実行される再帰関数です。これにより、子プロセスは終了せず、関数の新しいコピーが継続的に作成され、システムリソースが消費されないようになります。 - ウィキペディア
つまり、同じ関数を再帰的に呼び出すことで、より多くのプロセスが生成され、システムに過負荷がかかります。
関数識別子が「:()」であることがわかります。これを名前に変更してコードをインデントすることで、より明確にすることができます。
関数識別子を置き換えて再インデントすると、コードは次のようになります。
bomb() {
bomb | bomb &
};
bomb
「みんな、家ではこんなことをしないでください」-紳士。ウィザード