poll:
操作流程:
- 1.定义监控的描述符时间结构体数组,将需要监控的描述符以及事件标识信息,添加到数组的各个节点中。
- 2.发起调用开始监控,将描述符事件结构体数组,拷贝到内核中进行轮询遍历判断。若有就绪/等待超时则调用返回,并且在每个描述符对应的事件结构体中,标识当前就绪的事件。
- 3.进程轮询遍历数组,判断数组中的每个节点中的就绪事件是哪个事件,决定是否就绪了以及如何对描述符进行操作。
接口认识:
int poll(struct pollfd *array_fds, nfds_t nfds, int timeout)
poll监控采用事件结构体的形式
struct pollfd
{
int fd ---要监控的描述符;
short events ---要监控的事件POLLIN/POLLOUT;
short revents ---调用返回时填充的就绪事件;
}
- array_fds:事件结构体数组,填充要监控的描述符以及事件信息。
- nfds:数组中的有效节点个数(数组有可能很大,但是需要监控的节点只有前nfds个)
- timeout:监控的超时等待事件 — 单位:毫秒。
- 返回值:
大于0表示就绪的描述符事件个数。
等于0表示超时。
小于0