我来到一个情况下,我必须轮询文件描述符使用ioctl命令进行数据传输(不使用read())的事件。 我知道epoll()可以用在使用read()和write()进行数据传输的文件描述符上。 但有些驱动程序使用ioctl命令进行数据传输。 我们可以在这些types的文件描述符上使用epoll()吗?
这取决于司机。 从LDD3 :
poll
,select
,和epoll
有本质上相同的功能[…]支持任何这些调用都需要设备驱动程序的支持。 这种支持(所有三个呼叫) 都是通过驱动程序的
poll
方法提供的 。 该方法具有以下原型:unsigned int (*poll) (struct file *filp, poll_table *wait);
换句话说,驱动管理的文件描述符只有在实现了内部poll
功能的情况下才能用于select
/ epoll
等。