프로세스가 좀비로 떠있을때 죽이는 방법은?
글쓴이: la9527 / 작성시간: 수, 2003/08/06 - 11:59오전
프로그램상 약간의 버그가 있어 프로세스가 죽어버리는 현상이 있습니다.
이것이 지금 사용하는 리얼서버의 버그여서 당장 프로그램을 수정할려니
시간이 부족해 프로세스를 죽여버리고 다시 살리는 프로그램을 작성하려고
하는데 예를 들어 프로그램이 이렇게 떠있으면..
4514 ? S 0:00 ./AdminProgram 4516 ? S 0:00 \_ [server] 4520 ? Z 0:00 \_ [server <defunct>] 4521 ? S 0:00 [server] 4522 ? S 0:00 [server] 4523 ? S 0:00 [server]
물론 명령 프롬프트에서 killall -9 server 하면 다 죽게되는데..
server는 좀비로 떠 있는 관계로 프로그램 내부상에서 을 kill() 로
호출하게 되면 죽지 않습니다.
이에 관해 server전체 프로세스 에 대한 프로세스를 죽이려면 어떤 방법으로
하면 되는지 좀 부탁 드립니다. ^^;;;
이글을 읽어 주셔서 감사합니다.
Forums:
fork() 관련인것 같은데요..
SIGCHLD를 받으면 새로 띄우는 구조를 하십시요.
그게 가장 편합니다.
========================================
* The truth will set you free.
pid 를 저장(화일 또는 변수로)하였다가, 인터럽트 핸들러에서 모
pid 를 저장(화일 또는 변수로)하였다가,
인터럽트 핸들러에서 모두 죽여주세요..
그리고 자신도 죽은 다음에 다시 시작하면 됩니다.
그리고, child 에 child 일 경우는 좀더 고려하면 모두 쉽게 됩니다.
그럼, 어떠한 이유로든 오류나서 죽으면,
바루 살아나는 안정적(?)인 프로그램을 구현할수 있습니다.
댓글 달기