2012-06-17 8 views

답변

2

오류에 따라 다릅니다. 성공시 accept()은 새 연결에 대한 소켓 (파일 설명자)을 리턴합니다. 실패 할 경우 많은 시스템 호출과 같이 수신하지 못한 소켓을 닫을 필요가 없습니다. accept()은 -1을 반환하여 오류를 나타냅니다.

그러나 오류 코드에 따라 수신 대기 소켓을 닫을 수 있습니다.

+0

'accept '가 듣고있는 소켓을 닫으려는 오류를 반환하는 많은 예제를 생각할 수 없습니다. 내가 생각할 수있는 가장 중요한 점은'socket','bind','listen'의 반환 값을 무시하고'accept'에 의존하는 프로그래밍 스타일을 사용한다면'EBADF' 나'EINVAL '이전 호출 중 하나라도 실패하면. –

+0

@R .. : 그것은 아마도 정책 결정 일 것입니다. 여러분이 말했듯이, EBADF와 EINVAL은'accept()'호출 자체의 매개 변수에 문제가 될 것이지만,'EMFILE'은 상점을 폐쇄하는 이유가 될 수 있습니다. –

+0

아마도. 나는'EMFILE'에서 다른 연결이 더 이상 받아들이 기 전에 끝내기를 기다리고 싶을 것이라고 생각합니다 ... –

관련 문제