Что делает этот кусок кода?:() {: |: &};:

Извините за то, что вы задали такой общий вопрос, но это беспокоило меня в течение нескольких дней.

Друг дал мне этот кусок кода (?) и не скажет мне, что он делает, или даже если это C или bash или что-то еще.

По внешнему виду это выглядит как C мне. Хотя я не понимаю, почему есть : по бокам.

:(){:|:&};:

Любые подсказки будут оценены.

Ответ 1

Это bash shell script, а не 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.

Ответ 2

Это вилка, и я не буду запускать ее в вашей системе. Это приведет к появлению кучи процессов и, в конечном счете, замедлению или сбою в работе вашей системы.