2017-09-24 5 views
-3

내가 해요 POSIX의 C 형 소켓이 여전히 유효 확인하고 이전에 설정된 소켓이 여전히 유효인지 아닌지 또한 나는 평소 전송 기능 검사와 함께이 작업을 수행 할 수 알아야합니다 잘못된 소켓 설명자를 보내면 내 응용 프로그램이 충돌하고 리눅스가 내 process.Is 거기에 다른 함수/제안이 종료됩니다 때문에 반환 된 값을?어떻게 임베디드 리눅스 커널 2.6 장치를 작동

편집 : 이 장치에 설치된 응용 프로그램 관리자는 내가 오픈 소켓을 참조하지 않는 기술자를 소켓으로 보내려고 할 때, 응용 프로그램 관리자는 내가 소켓을 닫습니다 경우, 내 응용 프로그램을 종료합니다 연결을 시도하고 그것에 쓰려고하면, 내 응용 프로그램은 낮은 수준의 app-manager.Also에 의해 해제됩니다 TCP 소켓, WBr 사용하고 있습니다.

+4

여전히 유효한 것을 의미합니까? 또한, 어떤 종류의 소켓을 언급하고 있습니까? 로컬, TCP 또는 UDP? 제발, 질문을 명확히하시오 –

+2

또한, 왜 잘못된 소켓에서 보내는 경우 귀하의 응용 프로그램이 충돌합니까? –

+2

응용 프로그램이 충돌을 일으키지 않으면 응용 프로그램이 충돌하지 않습니다 *. – EJP

답변

4

나는이 질문이 그릇된 전제에 근거하여 잘못 해석되었다고 생각한다. 소켓이 다른 프로세스/호스트의 동작에 의해 비동기 적으로 발생할 수있는 "무효"의 의미는 없습니다. 가장 가까운 것은 당신의 소켓을 무효화하지 않지만이 차단되지 경우 EPIPE 오류 및 SIGPIPE 신호를 발생하기 위해 소켓에 연속 쓰기를 야기 않는 , 아마도 소켓의 다른 쪽 끝은 폐쇄되고있다. SIGPIPE은 기본적으로 프로세스를 종료합니다. 그게 문제라면, 가장 쉬운 방법은 SIGPIPEsigprocmask/pthread_sigmask으로 차단하거나 signal(SIGPIPE, SIG_IGN)으로 무시하는 것입니다.

관련 문제