소켓통신 질문이야 SIG핸들러~부분인데 ㅠ0ㅠ
소스상에 이렇게 되있습니다.
SIGTERM 부분이 이해가안되는데요 무슨뜻인지 해석이 잘안됩니다.
signal(SIGCLD, SIG_IGN);
signal(SIGTERM, TerminateRoutin);
signal(SIGHUP, SIG_IGN);
TerminateRoutin 이부분은 함수인데
void TerminateRoutin(int i)
{
if (iOwn_Socket_Start_Flag == TRUE) {
close(iOwn_Socket_Id);
}
if (iClient_Socket_Start_Flag == TRUE) {
close(iClient_Socket_Id);
}
if (iService_Socket_Start_Flag == TRUE) {
close(iService_Socket_Id);
}
exit(0);
}
이렇게 되있습니다.
또 반복문을 돌려서
소켓accept 를 하고 포크를 생성하는데
exit란 강제종료를 하고
마지막 부분에 또 close를 하는데 이 while 문이 잘 이해가 되질않네요 ㅠㅠ
while(1) {
iClient_Socket_Start_Flag = iService_Socket_Start_Flag = FALSE;
if ((iClient_Socket_Id = accept(iOwn_Socket_Id, (struct sockaddr *)&stClient_Socket_Addr, &iClient_Socket_Addr_Len)) < 0) {
LogWrite(szProgram_Name, "accept() Error.", iClient_Socket_Id);
continue;
}
iClient_Socket_Start_Flag = TRUE;
if (fork() == 0) {
LogWrite(szProgram_Name, "fork() Start.", 0);
SocketServiceRouting(iClient_Socket_Id);
LogWrite(szProgram_Name, "fork() End.", 0);
close(iClient_Socket_Id); <-- 요부분 (여기서 close를 했는데 또 밑에서 클로즈를 하네요 ㅠㅠ그이유가멀가요?
if (iService_Socket_Start_Flag == TRUE) { <-- 요부분
close(iService_Socket_Id); <-- 요부분
}
exit(0);
}
close(iClient_Socket_Id); <-- 요부분
}
댓글 달기