멀티 프로세스 방식으로 소켓을 사용하는 프로그램을 만드는 중인데
while(1)을 잘못 사용했더니 무한 fork가 나버리네요...ㅡㅡ;;
ctrl-c로 일단 종료는 시켰는데
이미 생겨버린 무수한 프로세스들을 다 죽일 방법이 없어서
그냥 재부팅 해버렸습니다....ㅡㅡ;;;
재부팅 말고 컴퓨터를 정상적으로 회복시킬 다른 방법이 있으면 알려주세요~
Q. 자식 프로세스가 스스로 exit()하면 좀비가 안되나요?.
(모르는 부분이라서 위에글 보고 질문합니다.)
그리고 좀비가 많이 생겼을 경우는 최상위 프로세스 하나만 죽이면 나머지는 다 죽습니다.(fork된 프로세스들의 부모 프로세스) 부모 프로세스가 죽었을 경우에는 자식들은 init에 의해 관리되게 됩니다.
자식프로세스에 대해서 대해서 종료는 wait, waitpid 함수들을 찾아보시면 도움이 될것 같고 자식 프로세스 종료에 대한 처리가 필요하면 signal(SIGCLD,...)를 찾아보시면 됩니다. 무시하고자 할 경우는 signal(SIGCLD,SIG_IGN)에 대해서 보시구요.
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
^^
killall 로 죽이세요~ ^^
Be at a right place at a right time...
^^
이 메세지가 뜨기 전에 해야겠군요...감사합니다~
젠투, 젠투, 그리고 젠투.
fork()
fork() 로 새성된 프로세서는 자기가 할일을 다하면 exit(); 죽여 버리세요.
예를 들어 여러개의 속켓이 어떤 대답을 요구했을때 응답을 fork() 하고 write(); 하고 나서 exit(); 하세요.
그래야 여러개의 프로세서 좀비가 되는 것을 막을수 있습니다.
....
그냥 참고로 ...
리눅스 네트웍 개발 (FA) /유비쿼터스 네트웍 하드웨어 개발 프로젝트 진행/인터넷을 통한 원격제어/
리눅스 베이스 FA 구현/초소형 무선랜 모듈개발 진행중/리눅스 웹 통합시스템 구축
Q. 자식 프로세스가 스스로 exit()하면 좀비가 안되나요?.(모르
Q. 자식 프로세스가 스스로 exit()하면 좀비가 안되나요?.
(모르는 부분이라서 위에글 보고 질문합니다.)
그리고 좀비가 많이 생겼을 경우는 최상위 프로세스 하나만 죽이면 나머지는 다 죽습니다.(fork된 프로세스들의 부모 프로세스) 부모 프로세스가 죽었을 경우에는 자식들은 init에 의해 관리되게 됩니다.
자식프로세스에 대해서 대해서 종료는 wait, waitpid 함수들을 찾아보시면 도움이 될것 같고 자식 프로세스 종료에 대한 처리가 필요하면 signal(SIGCLD,...)를 찾아보시면 됩니다. 무시하고자 할 경우는 signal(SIGCLD,SIG_IGN)에 대해서 보시구요.
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
exit를 수행하면 task_struct 구조체를 제외한 나머지 자료구조
exit를 수행하면 task_struct 구조체를 제외한 나머지 자료구조를 모두 해제하고 TASK_ZOMBIE상태로 상태를 바꾸는것으로 알고 있습니다.
child는 필요한 일이 끝나면 exit를 반드시 해줘야 하고,p
child는 필요한 일이 끝나면 exit를 반드시 해줘야 하고,
parent는 반드시 child의 exit 상태를 체크하고 zombie 상태를 해제해 줘야 합니다. (waitpid 등)
child의 exit은 zombie 상태 때문이 아니라, child에 할당된 그 외의 리소스를 해제하기 위해서 필요합니다.
zombie는 child는 exit을 했지만, parent가 이를 처리하기 전인 상태를 말합니다.
I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?
댓글 달기