안녕하세요
socket 통신 중 send 실패시 프로세스가 종료되는 현상이 발생해서 문의 드립니다.
server <> client 통신중 server 를 죽이면 client 에서 connection retry 를 하려고 하는데
server 가 죽은 상태에서 send 하는 루틴을 타게 되면 조용히 죽어버리는데
어떻게 찾아야 할까요?
도움 말씀 부탁드립니다.
즐거운 하루 되세요~
위와 같은 경우, SIGPIPE가 발생하는데, 시그널 핸들러 등록 안해주셨다면, 죽습니다. SIGPIPE를 사용하세요.
http://wiki.kldp.org/wiki.php/superwisdom
답변 감사합니다.
signal(SIGPIPE, SIG_IGN);
send( , , , MSG_NOSIGNAL);
두가지 해결 방법이 있는거 같은데 둘중 어느것을 사용해도 무방한가요??
분노하지 말라, 자만하지 말라, 절망하지 말라
MSG_NOSIGNAL의 경우는 best-effort에 많은 Unix 시스템에서 지원하지 않는 것으로 알고 있습니다. (linux specific 이었는지는 가물가물하군요)
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
위와 같은 경우,
위와 같은 경우, SIGPIPE가 발생하는데, 시그널 핸들러 등록 안해주셨다면, 죽습니다. SIGPIPE를 사용하세요.
http://wiki.kldp.org/wiki.php/superwisdom
해결하였습니다.
답변 감사합니다.
signal(SIGPIPE, SIG_IGN);
send( , , , MSG_NOSIGNAL);
두가지 해결 방법이 있는거 같은데 둘중 어느것을 사용해도 무방한가요??
분노하지 말라, 자만하지 말라, 절망하지 말라
분노하지 말라, 자만하지 말라, 절망하지 말라
MSG_NOSIGNAL
MSG_NOSIGNAL의 경우는 best-effort에 많은 Unix 시스템에서 지원하지 않는 것으로 알고 있습니다.
(linux specific 이었는지는 가물가물하군요)
댓글 달기