비동기 소켓에서보고 한 오류는 어떻게보고됩니까?


7

소켓을 비동기 적으로 연결하고 있습니다 (O_NONBLOCK + connect). POSIX 표준은 소켓이 연결된 후에 소켓에 ​​대한 파일 디스크립터를 쓰기 가능하게 만들어서 이벤트를 알리도록 지정합니다. 비동기 연결 중 실패에 대해 아무 것도 말하지 않는 것 같습니다.

Linux에서 테스트 할 때 가끔 이런 상황에서 POLLOUT 및 POLLERR이 나타나는 경우가 있습니다. 행동에 어떤 패턴이 있습니까? 한 가지 방법으로 오류를보고하도록 할 수 있습니까? POSIX는 내가 간과 한 바를 말합니까?

4

D. J. 번스타인은 관련성이있는 것처럼 보입니다. http://cr.yp.to/docs/connect.html. 특히 그는 오류를 가져 오는 여러 가지 방법을 제안합니다.

유닉스 소켓 자주 묻는 질문은 두 텍스트는 연결이 POLLOUT 이벤트로 연결 성공/실패에 대해 사용자에게 알립니다 가정 getsockopt

  0

사용하여 실패한 연결에서 오류가 포함 <a href="http://www.developerweb.net/forum/showthread.php?t=3196" rel="nofollow noreferrer">Connect with timeout</a>에 대한 섹션을 가지고 있습니다. 그러나, 내가 본 것은 Linux가 POLLOUT 또는 POLLERR을 사용한다는 것입니다. 22 feb. 092009-02-22 11:28:09