문제

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은 최상의 솔루션 인 것으로 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top