0
소켓 읽기 기능을 non-Blocking으로 할 수있는 방법이 있습니까? 다중 스레드 서버 응용 프로그램이 있습니다. accept() 함수는 차단되어야합니다. , read() 함수는 비 블로킹 (non-Blocking)이어야하며 읽을 데이터가 없을 때 EAGAIN을 반환해야합니다.소켓 읽기 기능을 비 차단으로 만드는 방법
I
fcntl(sock, F_SETFL, O_NONBLOCK);
읽을() 비 차단을 시도했지만 그것은 나를 일시적으로 사용할 수없는 오류를 자원주기 시작했다.
함수'int socket (int domain, int type, int protocol);'은 타입으로'O_NONBLOCK' 옵션을 지원합니다. 그것을 사용해 보셨습니까? – Omar
@Omar 예 위 내용을 사용하고 있습니다. –
@Omar : Fresher는'accept()'를 호출하고 그것이 차단되기를 원하므로'O_NONBLOCK'은 청취 소켓에서 사용할 수 없습니다. 그렇다하더라도,'O_NONBLOCK'은 받아 들인 클라이언트 소켓에 의해 상속되지 않기 때문에 받아 들여진 후에 각각의 클라이언트 소켓에'fcntl()'을 써서 적용해야합니다. –