Linux之字符设备驱动-poll方法(select多路监控原理与实现)

本文详细解析了Linux内核中的select系统调用,包括其功能、参数、返回值及使用方法,并介绍了poll方法的工作原理和设备驱动中的应用。通过实例分析,深入理解字符设备驱动的poll方法如何实现多路监控。
摘要由CSDN通过智能技术生成

本文主要介绍了Linux高级字符设备驱动 poll方法(select多路监控原理与实现)相关的知识,希望对你有一定的参考价值。

1、什么是Poll方法,功能是什么?

2、Select系统调用(功能)

Select系统调用用于多路监控,当没有一个文件满足要求时,select将阻塞调用进程。

int select(int maxfd, fd_set *readfds, fd_set *writefds, fe_set *exceptfds, const struct timeval *timeout)

Select系统调用(参数)

1)Maxfd:

文件描述符的范围,比待检测的最大文件描述符大1

2)Readfds:

被读监控的文件描述符集

3)Writefds:

被写监控的文件描述符集

4)Exceptfds:

被异常监控的文件描述符集;

5)Timeout:

定时器,Timeout取不同的值,该调用有不同的表现:

1>Timeout值为0,不管是否有文件满足要求,都立刻返回,无文件满足要求返回0,有文件满足要求返回一个正值。

2>Timeout为NULL,select将阻塞进程,直到某个文件满足要求

3>Timeout 值 为 正 整 数 , 就 是 等 待 的 最 长 时 间 , 即select在timeout时间内阻塞进程。

3、Select系统调用(返回值)

Select调用返回时,返回值有如下情况:

1)正常情况下返回满足要求的文件描述符个数;

2)经过了timeout等待后仍无文件满足要求,返回值为0;

3)如果select被某个信号中断,它将返回-1并设置errno为EINTR。

4)如果出错,返回-1并设置相应的errno。

4、Select系统调用(使用方法)

1)将要监控的文件添加到文件描述符集

2)调用Select开始监控

3)判断文件是否发生变化

系统提供了4个宏对描述符集进行操作:

#include <sys/select.h>

void FD_SET(int fd, fd_set *fdset)

void FD_CLR(int fd, fd_set *fdset)

void FD_ZERO(fd_set *fdset)

void FD_ISSET

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值