| [ 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()로 프로세스 만들고 자식 프로세스에서 클라이언트 데이터를 처리한 후 종료, 부모 프로세스는 계속 대기 하는 건데 뭐가 잘못되어서 좀비 상태로 남아 있을까요? |