2012-11-06 2 views
1

맥 OSX 에 SIGPIPE을 피하기 위해 난 리눅스방지 SIGPIPE - 레지

MSG_NOSIGNAL 

의 동등 플래그

SO_NOSIGPIPE 

사용하여 시도. 하지만 여전히 SIGPIPE 오류가오고 있습니다. 어떻게 피하는가?

미리 감사드립니다. :)

답변

2

SIGPIPE을 무시하면 어떻게됩니까?

signal(SIGPIPE, SIG_IGN); 
+0

사실 나는 단순한 서버를 작성하고있었습니다. 다시 응답을 보내는 동안 SIGPIPE가 나오면 내 처형이 중단되었습니다. 그래서 나는 그것을 피하고 싶었습니다. 나는 SIGPIPE가 오더라도 실행이 멈추지 말아야한다는 것을 의미한다. 나 맞아 ? – Chaitanya

+0

@Chaitanya 아니요, 연결을 닫고 계속하고 싶습니다. 'read()'는 실패 할 것이고'errno'를 검사하여 다른 쪽이 클라이언트 연결을 끊었다가 종료하는 것과 관련된 오류인지 확인할 수 있습니다. 'SIGPIPE'를 무시하면서 이것을 할 수 있습니다. – trojanfoe

+0

나를 위해'read()'가 제대로 진행되고있었습니다. 읽기 버퍼에서 아무것도 수신하지 못했습니다. 그것은 길이가 0이었다. 나를 위해 클라이언트에게 응답을 다시 보내는 동안 문제가 발생했습니다. 거기에서 실행은 멈추고 있었다. 그래서 그 오류를 처리해야합니까? – Chaitanya