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 함수|작성자 현님처럼



최근 덧글