저는 현재 일부 웹 서버 소프트웨어를 유지 관리하고 있으며 많은 I/O 작업을 수행해야합니다. read()
, write()
, close()
및 shutdown()
호출은 소켓에서 사용될 때 ENOTCONN
오류가 발생할 수 있습니다. 이 오류는 정확히 무엇을 의미합니까? 그것을 유발할 수있는 조건은 무엇입니까? 로컬로 재현 할 수는 없지만 할 수있는 사용자가 있습니다.ENOTCONN 오류의 원인은 무엇입니까?
바로 지금은 close()
과 shutdown()
으로 발생했을 때 무시합니다. 무해한 것처럼 보이지만 완전히 확실하지 않습니다.
편집 :
- 나는
connect()
호출이 성공했음을 절대적으로 확신합니다. 반환 값을 확인합니다. ENOTCONN
은 대부분close()
과shutdown()
으로 증가합니다. 나는read()
과write()
을 드물게 보았다.ENOTCONN
.
어떤 운영 체제입니까? 이전 Solaris 10 시스템에서 비슷한 문제를 추적하고 있습니다. 감사. – Nemo
대부분 FreeBSD입니다.그 동안 유닉스 도메인 소켓을 다룰 때 close()와 shutdown()이 ENOTCONN을 반환하게하는 FreeBSD에 커널 버그가 있음을 알게되었습니다. Solaris에는 다양한 커널 버그 w.r.t가 있습니다. 유닉스 도메인 소켓, 비록 내가 connect()에서 버그를 관찰 해왔다. – Hongli