SIGPIPE 를 좀 발전 시키려면..

글쓴이: 익명 사용자 / 작성시간: 수, 2001/10/31 - 11:37오전
네트워크 프로그램에서
RST 패킷(또는 응답)을 보낸 포트(소켓에) 글을 썼을때
그 프로세스에 SIGPIPE의 신호가 걸리는 것으로 알고있습니다.
지금은 그 때에 그 신호를 무시 하게 해 놓았는데
제가 어떠한 배열을 가지고 (SELECT때문에) 소켓들의 상태를 저장해 놓았습
니다. 그러니깐 제가 궁금한것은 그 RST보낸 소켓을 저장에서 제외하는 것입
니다.
따라서 signal(SIGPIPE,SIG_IGN) 을. 시그날 핸들러 함수를 이용하여
조그음 바꾸어 보고싶은데.
시그날 핸들러 함수에 어떠한 값을 전달 시킬수는 없는 것일까요??
... int 인자로 받아 보면 시그날 넘버만 전달이 되네요.
Forums:
Re: SIGPIPE 를 좀 발전 시키려면..
글쎄요.
마땅한 방법이 떠오르지 않네요.
전역변수 쓰시면..편하게 하실수 있을듯 하네요.
물론..충돌이 일어날수 있으니..
mutex 같은것으로 보호해 주면 좋겠죠..~~~
Re: SIGPIPE 를 좀 발전 시키려면..
RST 패킷을 받은 fd는 select를 걸었을때..
FD_ISSET으로 체크를 해보면 read 이벤트를 받을 수 있습니다.
그래서 read로 읽어 보면 0을 리턴하게 되지요..
즉 읽기를 했을때, 0이거나 0보다 작으면 소켓에 문제가 있으니깐
님이 관리하는 소켓 배열을 정리해주고
내가 열었던 소켓도 정리를 해주면 될것 같네요..
댓글 달기