이미 원격지에서 close된 socket에 send할때 발생.
closed socket에 send할때 리눅스는 SIGPIPE 시그널을 발생.
SIGPIPE에 대한 디폴더핸들러는 프로세스를 kill하는 것임.
프로세스 kill을 방지하려면
1. 프로세스가 SIGPIPE를 무시하도록 설정
ex) signal(SIGPIPE, SIG_IGN); or sigignore(SIGPIPE); |
또는
2. send함수를 시그널을 발생시키지 않도록 호출
ex) send(sockfd, buf, buflen, MSG_NOSIGNAL); |
'프로그래밍 > Unix/Linux' 카테고리의 다른 글
리눅스에서 여러개의 타이머 구현 샘플 (0) | 2015.07.30 |
---|---|
socket bind 에러 (0) | 2015.07.09 |
터미널에서 키 에코 끄기/켜기 (0) | 2015.07.02 |
블럭킹없이 키입력 받기(non blocking) (0) | 2015.07.02 |
vi / vim 단축키 모음 (0) | 2015.06.25 |