Solaris Send () 호출에서 파손 된 파이프 감지
-
18-09-2019 - |
문제
Solaris에서 Send () 호출에서 깨진 소켓을 감지하는 방법? 나는 신호를 사용하고 싶지 않습니다.
SO_NOSIGPIPE 및 MSG_NOSIGNAL을 시도했지만 SOLARIS에서는 사용할 수 없으며 내 프로그램이 "파손 된 파이프"오류로 사망하고 있습니다.
깨진 파이프를 감지하는 방법이 있습니까?
감사!
해결책
당신은 사용해야합니다 sigaction()
구체적으로 무시합니다 SIGPIPE
신호:
struct sigaction act;
act.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &act, NULL);
...그 다음에 send()
-1로 돌아갑니다 errno
로 설정 EPIPE
.
다른 팁
Solaris에서는 옵션이 제한되어 있다고 생각합니다. AFAIK, CAF가 제안한 SIGACTION은 최상의 솔루션 인 것으로 보입니다.
제휴하지 않습니다 StackOverflow