poll函数类似于select函数,也可以实现I/O多路复用。poll函数的声明如下:
#include <poll.h>
int poll(struct pollfd *fdarray, unsigned long nfds, int timeout);
第一个参数是指向一个结构数组第一个元素的指针。每个数组元素都是一个pollfd结构,用于指定测试某个给定描述符fd的条件。
struct pollfd {
int fd; // 需要测试的描述符
short event; // 对fd感兴趣的事件
short revents; // 发生在fd的事件:期待的事件或者异常情况发生
};
要测试的条件由events成员指定,poll函数在相应的revents成员中返回该描述符的状态。events和revents都由某个特定条件的一位或多位构成。下面表格列出了用于指定events标志以及测试revents标志的一些常值。
| 常值 | 是否作为events的输入 | 是否作为revents的结果 | 说明 |
|---|---|---|---|
| POLLIN | 是 | 是 | 普通或优先级带数据可读 |
| POLLRDNORM | 是 | 是 | 普通数据可读 |
| POLLRDBAND | 是 | 是 | 优先级带数据可读 |
| POLLPRI | 是 | 是 | 高优先级数据可读 |
| POLLOUT | 是 | 是 | 普通数据可写 |
| POLLWRNORM | 是 | 是 | 普通数据可写 |
| POLLWRBAND | 是 | 是 | 优先级带数据可写 |
| POLLERR | 否 | 是 | 发生错误 |
| POLLHUP | 否 | 是 | 发生挂起 |

最低0.47元/天 解锁文章
1553

被折叠的 条评论
为什么被折叠?



