트윗에서 다음 코드를 찾았습니다.
:(){ :|: & };:
포크에 대한 내용이 있지만 어떻게 작동하는지 완전히 이해하지 못합니다. 누군가 그것이 무엇을 하고 어떻게 작동하는지 자세히 설명할 수 있습니까? 미리 감사드립니다.
답변1
듣다시피 이것은 "포크 폭탄"입니다. 전체가 있습니다그것에 관한 Wikipedia 페이지.
이 경우 포크 폭탄은 & 연산자 덕분에 백그라운드에서 실행되는 재귀 함수입니다. 이렇게 하면 하위 프로세스가 종료되지 않고 함수의 새 복사본이 지속적으로 생성되어 시스템 리소스가 소모되는 것을 방지할 수 있습니다. -위키피디아
즉, 동일한 함수를 재귀적으로 호출하여 점점 더 많은 프로세스를 생성하여 시스템에 과부하가 걸리는 것입니다.
함수 식별자가 ":()"라는 것을 알 수 있습니다. 이를 이름으로 바꾸고 코드를 들여쓰기하여 더 명확하게 만들 수 있습니다.
함수 식별자를 바꾸고 다시 들여쓰기하면 코드는 다음과 같습니다.
bomb() {
bomb | bomb &
};
bomb
"얘들아, 집에서는 이런 짓 하지 마라."-신사. 마법사