2011-12-05 10 views
10

このような一般的な質問は申し訳ありませんが、これは数日間私を悩ませています。このコードは何をしていますか? :(){:|:&};:

友人が私にこのコード(?)を渡してくれました。それが何をしているのか、それがCかbashか他のものであっても教えてくれません。

見た目からは、Cのように見えます。私はなぜ、:があるのか​​分かりませんが。

:(){:|:&};: 

すべての手がかりがわかります。それはfork bomb

+1

ナンセンス!信頼されていないソースから「ランダム」コードを試して、ネットワーク化されていないVM内で実行することを確認してください。 :) –

+2

これは友人ではなく、より多くのコードを取ります。もし彼があなたに 'chmod-R 666 /'と言うなら、私はそれをしません。 –

+0

私はもちろん実行しませんでした。ここで爆撃されたのは私の心だけでした。 – Dimme

答えて

25

これはbashシェルスクリプトです、ないC.

ウィキペディアはそれを説明する:

:()  # define ':' -- whenever we say ':', do this: 
{  # beginning of what to do when we say ':' 
    : # load another copy of the ':' function into memory... 
    | # ...and pipe its output to... 
    : # ...another copy of ':' function, which has to be loaded into memory 
     # (therefore, ':|:' simply gets two copies of ':' loaded whenever ':' is called) 
    & # disown the functions -- if the first ':' is killed, 
     #  all of the functions that it has started should NOT be auto-killed 
}  # end of what to do when we say ':' 
;  # Having defined ':', we should now... 
:  # ...call ':', initiating a chain-reaction: each ':' will start two more. 
+6

私は通常「試してみてください」と勧めていますが、これは見ていません。 –

+0

ありがとうございました! – Dimme

+7

@SethCarnegie:**信頼できないコードを実行しないでください**。 – SLaks

2

これはフォーク爆弾だと私はあなたのシステム上でそれを実行しないでしょう。プロセスの束が出現し、最終的にシステムが減速またはクラッシュする原因になります。

関連する問題