무한 fork() 죽이는 방법이 어떤게 있을까요..;;?

systemfile의 이미지

학부시절 교수님이 절때 무한으로 fork쓰지 말라고 하셨을 때 가지고 놀던 PC에 fork문을 돌린 적이 있었습니다

Quote:
for(;;)
{
fork();
}

라는 아주 간~단한 프로그램이였습니다.

꽤 오래전 일이라 잘 생각이 나지는 않지만 아마 사용자 계정으로 일정한 메모리 양에서 계속 파괴와 생성이 되었던걸로 기억합니다. (왜 파괴되는지는 어렴풋 사용자 계정에 제한된 메모리를 사용할 수 있게끔 한다는 걸로 이해하고 있습니다만 맞는지는 모르겠네요)

돌려놓고 멍하니 kill을 쳐보다 스크립트로 자동 kill을 만들었던 기억이 있는데요. 결국 전부 종료는 못시키더군요.. :wink:

리붓하고 나니 부팅은 안되고. :twisted:

그 이후로 무한포크는 돌리지 않지만,
저런 상황이 온다면 fork를 돌고 있는 그 프로세스를 종료시키는 방법이 있나요?

익명 사용자의 이미지

killall hello_fork

정도면 되지않을까요?
wertyu의 이미지

Anonymous wrote:
killall hello_fork

정도면 되지않을까요?

질문에 대한 답변은 아니지만, 솔라리스에서 killall은 리눅스에서의 killall과 다르더군요.

어떤 분의 솔라리스 시스템 좀 보다가, killall 명령어 날라셔 큰일날 뻔 한 적이 있었죠 ㅎㅎ

대충 찾아 보니, 다음과 같은 글이 있네요.

Quote:

Under Linux killall kills all the processes with the program name given as arguments. Under Solaris killall kills all user processes prior to system shutdown and pkill kills processes by name. Best to avoid it.

Prentice의 이미지

Fork bomb 말씀이시군요.

http://en.wikipedia.org/wiki/Fork_bomb