多路转接server之poll模型
poll函数原型:
#include <poll.h>
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
包含于poll.h头文件中
-
fds是一个pollfd结构体类型的一个数组,里面存放我们关心的文件描述符中的读、写和异常事件。
pollfd结构体类型定义:struct pollfd {
int fd; /* file descriptor */
short events; /* 所关心的事件 */
short revents; /* 实际发生的事件,由内核返回给user */
};
常见的events有POLLIN,POLLOUT,POLLERR等。
revents返回实际已就绪的事件。 -
nfds 指定被监听事件集合fds的大小,定义如下:
typedef unsigned long int nfds_t
-
timeout poll的超时值,单位为ms(毫秒),当为-1时表示永远阻塞,知道某个事件发生,为0时表示只要调用p