이 름
poll − 파 일 기 술 자 에 서 어 떠 한 이 벤 트 를 기 다 린 다 .
사 용 법
#include <sys/poll.h>
int poll(struct pollfd *ufds, unsigned int nfds, int timeout);
설 명
poll 은 select와 같 은 맥 락 의 기 능 을 가 진 변 형 함 수 이 다 . 다 음 은 nfds 구 조 체 타 입 의 배 열 과
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 가 정 의 되 어 있 다 .
반 환 값
성 공 시 , 양 수 값 이 반 환 되 며 반 환 된 숫 자 는 revents 필 드 가 가 지 고 있 는 구 조 체 의 숫 자 이 다 . (다 시 말 해 서 , 보 고 된 이 벤 트 들 이 나 에 러 들 을 가 지 고 있 는 이 들 파 일 기 술 자 ) 0 은 호 출 이 타 임 아 웃 이 걸 렸 고 어 떤 파 일 기 술 자 도 선 택 되 지 않 았 음 을 가 리 킨 다 . 에 러 이 면 −1이 리 턴 되 며 errno 는 적 당 한 값 으 로 설 정 된 다 .
에 러
ENOMEM |
파 일 기 술 자 테 이 블 을 할 당 할 공 간 이 없 다 . | ||
EFAULT |
인 자 로 주 어 진 배 열 이 호 출 프 로 그 램 의 주 소 공 간 에 포 함 되 어 있 지 않 다 . | ||
EINTR |
요 구 된 이 벤 트 전 에 신 호 가 발 생 했 다 . |
호 환
XPG4-UNIX.
유 효 성
poll() 시 스 템 콜 은 Linux 2.1.23에 소 개 되 었 다 . poll() 라 이 브 러 리 함 수 는 libc 5.4.28 에 소 개 되 었 다 . (그 리 고 여 러 분 의 커 널 이 poll 시 스 템 콜 을 가 지 고 있 지 않 다 면 select 를 사 용 한 에 뮬 레 이 션 을 제 공 한 다 .)
관 련 항 목
번 역
정
강 훈 <skyeyes [AT] soback.net>
2000년 8월 6일
한 글 Manpage 프 로 젝
트 (http://man.kldp.org) 2005년 2월
15일