라이프로그


Select 함수 by 하하폴

Select 함수

  단일 프로세스에서 여러개의 fd를 모니터링하는 함수.

 

#include <sys/select.h>

 

int select (int nfds, fd_set restrict *readfds, fd_set restrict *writefds,

                         fd_set restrict *errorfds, struct timeval *restrict timeout);

 

int nfds : 감시할 fd의 범위지정으로, 감시할 fd 중 가장 큰 fd +1

fd_set *readfds : 읽기에 대해 감시하고자 하는 fd의 집합

fd_set *writefds : 쓰기에 대해 감시하고자 하는 fd의 집합 

fd_set *errorfds : 에러 조건 감시하는 fd

  ※ fd_set의 값이 NULL이면 해당 fd는 감시하지 않는다.

struct timeval *timeout : fd가 준비되지 않더라도 이 시간이 지나면 select함수는 반환을 한다.

  ※ null이면 무한정 블록


    반환 값 : 준비된 fd의 수

void FD_CLR(int fd, fd_set *fdset);

      fd의 집합 중 해당 fd를 제외시킨다.

int FD_ISSET(int fd, fd_set *fdset);

      fd의 집합 중에 해당 fd가 준비되었는가를 묻는다. ( 1이면 준비됨, 0이면 준비안됨 )

void FD_SET(int fd, fd_set *fdset);

      fd의 집합에 해당 fd를 포함시킨다.

void FD_ZERO(fd_set *fdset);

      fd의 집합을 모두 0으로 초기화 시킨다.


select의 마지막 매개변수인 struct timeval 구조체

struct timeval {

       long tv_sec;   // second

       long tv_usec; // us(micro second)

}

[출처] UNIX, select 함수|작성자 현님처럼


덧글

댓글 입력 영역