[완료]send 실패시 프로세스 종료 되는 현상

dn2enf2의 이미지

안녕하세요

socket 통신 중 send 실패시 프로세스가 종료되는 현상이 발생해서 문의 드립니다.

server <> client 통신중 server 를 죽이면 client 에서 connection retry 를 하려고 하는데

server 가 죽은 상태에서 send 하는 루틴을 타게 되면 조용히 죽어버리는데

어떻게 찾아야 할까요?

도움 말씀 부탁드립니다.

즐거운 하루 되세요~

superwisdom의 이미지

위와 같은 경우, SIGPIPE가 발생하는데, 시그널 핸들러 등록 안해주셨다면, 죽습니다. SIGPIPE를 사용하세요.

dn2enf2의 이미지

답변 감사합니다.

signal(SIGPIPE, SIG_IGN);

send( , , , MSG_NOSIGNAL);

두가지 해결 방법이 있는거 같은데 둘중 어느것을 사용해도 무방한가요??

분노하지 말라, 자만하지 말라, 절망하지 말라

분노하지 말라, 자만하지 말라, 절망하지 말라

clique의 이미지

MSG_NOSIGNAL의 경우는 best-effort에 많은 Unix 시스템에서 지원하지 않는 것으로 알고 있습니다.
(linux specific 이었는지는 가물가물하군요)