int poll(struct pollfd *ufds, unsigned int nfds, int timeout);
struct pollfd {
int fd; /* 파일 기술자 */
short events; /* 요구된 이벤트 */
short revents; /* 반환된 이벤트 */
};
밀리초인
timeout
을 기술한다.
음수값은 제한되지 않은 타임 아웃을 의미한다.
fd
필드는 열려진 파일 기술자를 포함한다.
events
필드는 응용 프로그램이 기다리고 있는 이벤트를 지정한 비트 마스크된 입력
파라미터이다.
revents
필드는 요구된 타입의 이벤트이거나
POLLERR
또는
POLLHUP
또는
POLLNVAL타입의
이벤트 중 하나가 실제로 일어났을 때 이벤트를 가진 커널에 의해 채워진 출력
파라미터이다. (이 세개의 비트들은
events
필드에서는 의미가 없으며 상응하는 조건이 참일 때만
revents
필드에 설정된다.)
요구된 이벤트 중 어떤 것도 파일 기술자 중에서 일어나지 않는다면, 커널은
이 이벤트들 중 하나가 일어나기를
timeout
밀리초동안 기다린다.
이들 비트마스크 중에서 다음 가능한 비트들이 <sys/poll.h>에 정의되어 있다.
#define POLLIN 0x0001 /* 읽을 데이터가 있다 */
#define POLLPRI 0x0002 /* 읽을 긴급한 데이터가 있다 */
#define POLLOUT 0x0004 /* 쓰기가 지금 봉쇄가 아니다 */
#define POLLERR 0x0008 /* 에러 조건 */
#define POLLHUP 0x0010 /* 실행중지 또는 재시작 */
#define POLLNVAL 0x0020 /* 무효한 요구: fd가 열려지지 않았다 */
<asm/poll.h> 에는 또한 POLLRDNORM, POLLRDBAND, POLLWRNORM, POLLWRBAND 값들과 POLLMSG 가 정의되어 있다.