이 코드는 무엇을 합니까? [복사]

이 코드는 무엇을 합니까? [복사]

트윗에서 다음 코드를 찾았습니다.

:(){ :|: & };:

포크에 대한 내용이 있지만 어떻게 작동하는지 완전히 이해하지 못합니다. 누군가 그것이 무엇을 하고 어떻게 작동하는지 자세히 설명할 수 있습니까? 미리 감사드립니다.

답변1

듣다시피 이것은 "포크 폭탄"입니다. 전체가 있습니다그것에 관한 Wikipedia 페이지.

이 경우 포크 폭탄은 & 연산자 덕분에 백그라운드에서 실행되는 재귀 함수입니다. 이렇게 하면 하위 프로세스가 종료되지 않고 함수의 새 복사본이 지속적으로 생성되어 시스템 리소스가 소모되는 것을 방지할 수 있습니다. -위키피디아

즉, 동일한 함수를 재귀적으로 호출하여 점점 더 많은 프로세스를 생성하여 시스템에 과부하가 걸리는 것입니다.

함수 식별자가 ":()"라는 것을 알 수 있습니다. 이를 이름으로 바꾸고 코드를 들여쓰기하여 더 명확하게 만들 수 있습니다.

함수 식별자를 바꾸고 다시 들여쓰기하면 코드는 다음과 같습니다.

bomb() { 
  bomb | bomb & 
}; 
bomb

"얘들아, 집에서는 이런 짓 하지 마라."-신사. 마법사

관련 정보