-
Notifications
You must be signed in to change notification settings - Fork 0
Study : CPP : poll
마석우 edited this page Apr 4, 2022
·
1 revision
항목 | 내용 |
---|---|
일자 | 2022.03.31 |
작성자 | sma |
제목 | webserv 허용함수 - poll
|
한줄요약 | 멀티 플렉싱 관련 함수 |
select
와 비슷한 기능을 하는 함수로 지정한 소켓의 변화를 확인하는데 사용하는 함수
#include <poll.h>
int poll(struct pollfd *fds, nfds_t nfds, int timeout)
-
fds
: 검사할pollfd
배열 -
nfds
:fd
의 개수 -
timeout
: 지정한 시간(millisecond 단위)만큼 블록하게 된다. 0이면 즉시 반환, 음수면 무한 blocking
리턴값 | 내용 |
---|---|
1 이상 | event가 발생한 fd의 개수를 의미 |
0 | timeout |
-1 | 오류 발생 |
-
pollfd 구조체
struct pollfd{ int fd; short events; short revents; }
-
fd
: 확인할 파일 디스크립터, 음수이면 무시된다. -
events
: 기다릴 이벤트,events
는fd
에 대해 어떤 이벤트를 감시하고자 하는지 커널에게 알려준다. -
revents
:fd
에 발생한 이벤트,poll
함수가 반환될 때 커널은 각fd
에 어떤 이벤트가 발생했는지revents
에 해당하는events
값을 설정한다. -
timeout
: 지정한 시간(millisecond 단위)만큼 블록하게 된다. 0이면 즉시 반환, 음수면 무한 blocking
-
-
POLLIN
: 읽을 데이터가 존재한다. -
POLLPRI
: 시급히 읽을 자료가 존재한다. -
POLLOUT
: 현재 쓰기가 가능하다. -
POLLRDNORM
:POLLIN
과 동일하다. -
POLLWRNORM
:POLLOUT
과 동일하다.
revents만 받을 수 있는 값
-
POLLERR
: 오류 상황 -
POLLHUB
: 연결이 끊겼다. -
POLLNVAL
: 유효하지 않은 요청 (fd가 닫혀 있음)
man page