ios SIGPIPE로 인한 붕괴를 어떻게 해결합니까
이 문제를 해결하려면send에서 서버가 연결을 닫고 다시 연결하는 것을 감지해야 합니다.정상적인 상황에서send 함수 반환-1은 발송에 실패했음을 나타냅니다. 그러나 IOS에서 SIGPIPE는send가 되돌아오기 전에 프로세스를 종료했습니다. 따라서 SIGPIPE를 무시하고send가 정상적으로 -1로 되돌아오게 한 다음에 서버를 다시 연결해야 합니다.
자료를 찾아본 후 두 가지 방법을 찾았다.
1) 시그널(SIGPIPE, SIG_IGN)을 사용하여 SIGPIPE를 무시합니다.실험을 통해 ios7 시뮬레이터에서 xcode는 SIGPIPE를 포획하지만 프로그램이 붕괴되지 않고 계속 실행될 수 있습니다.하지만 진짜 기계에서는 여전히 붕괴된다.
2) SO_ 사용NOSIGPIPE. 실험을 통해 여러 ios 버전에서 더 이상 SIGPIPE를 터치하지 않고 문제를 완벽하게 해결했다.
int set = 1;
setsockopt(sd, SOL_SOCKET, SO_NOSIGPIPE, (void *)&set, sizeof(int));
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.