computer_knowledge_notes/Languages/CLang/libraries/poll.md

959 B
Raw Blame History

概述

轮询等待文件描述符上的事件。

poll在这里的意思是轮询

相关函数

/* 在sys/poll.h里定义 */

struct pollfd{
    int fd;			// 文件描述符
    short events;	// 请求的事件,是一个输入参数
    short revents;	// 返回的事件,是一个输出参数
}

// events和revents可能的值
//   POLLIN - 存在可读的数据

typedef unsigned long int nfds_t;	// 文件描述符的数量

/*
 * 等待一个文件描述符上的事件。和系统调用select()的作用相近它会等待文件描述符的集合里的其中一个文件描述符直到它准备好进行I/O。
 * fds结构体pollfd的指针包含了文件描述符的集合
 * nfds指针fds包含的元素个数即结构体pollfd的个数
 * timeout等待的文件描述符的时间超过此时间将不再等待。单位毫秒。
 */
int poll(struct pollfd *fds, nfds_t nfds, int timeout)