CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): guest (guest) <211.219.38.179>
날 짜 (Date): 2002년 7월 25일 목요일 오후 12시 52분 57초
제 목(Title): [리눅스 소켓 질문 입니다.]



 리눅스에서 C로 서버소켓을 만든 후 클라이언트에서 보내는 데이터를 

 파일에 기록하는 프로그램을 만들었는데  for()로 생성한 차일드가 

  소켓 종료후 defunct 상태로 남아 있습니다.

 프로그램 루틴을 간단하게 올리면...
process()
{
 //이것 저것
}

main() {
   socket();
   bind();
   listen();

   for(;;){
          sock2 = accept();
          switch(fork()){
              case -1:
                  exit(1);
              case 0:
                 while(1){
                    if(recv() <= 0){
                      close(sock2);
                      process();
                      exit(1);
                      break;
                    }
                    fprintf();
                } //while
                exit(1);
                break;
         }
    }
}

 이처럼 accept()로 연결 요청을 받은 후 fork()로 프로세스 만들고

 자식 프로세스에서 클라이언트 데이터를 처리한 후 종료, 부모 프로세스는

 계속 대기 하는 건데 뭐가 잘못되어서 좀비 상태로 남아 있을까요?


[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.