标签:str 需要 ali sel 成员变量 封装 nts 无限 描述符
poll机制表现为文件操作接口函数!
在设备驱动中已经提供了poll接口函数,当应用程序需要同时操作多个设备时,调用设备驱动中提供的poll接口,同步管理,同步操作即可!
poll机制在应用层有接口函数存在!在应用层封装了两个poll接口函数: poll()、 select()。
这两个接口函数都是用来调用设备驱动中的poll接口函数的,功能相同。仅仅是用法上有些区别!
函数原型:int poll(struct pollfd* fds, nfds_t nfds, int timeout);
函数功能:把要同时操作的事件用fds结构体数组管理起来,一起阻塞等待。
等待有事件触发,阻塞消失,程序继续向下运行。
形参列表:
fds:事件结构体数组 -- 存放所有需要同步操作的事件
nfds:数组元素个数 -- 要同步管理的事件个数
timeout:设置阻塞等待的时间上限(负数:无限阻塞)《单位:ms》
返回值:
有事件触发:触发事件的个数
超时时间到:0
失败:-1
在使用poll()同步管理多个事件时,每一个事件都需要用事件结构体来描述!
struct pollfd {
int fd; /* 文件描述符 */
short events; /* 事件类型 */
short revents; /* 事件返回类型 */
};
备注:revents成员变量是一个输出参数。
当poll()被触发,阻塞消失,poll()同步管理的所有事件都会返回,返回值存放在revents成员中。
这时:触发事件将返回触发事件类型,未触发事件将返回0。
通过判断每一个事件结构体的revents成员,就能找到是哪个事件产生的触发!!!
标签:str 需要 ali sel 成员变量 封装 nts 无限 描述符
原文地址:https://www.cnblogs.com/646087666-lxd/p/12461433.html