我们可以使用epoll()来轮询正在使用ioctl进行数据传输的描述符

我来到一个情况下,我必须轮询文件描述符使用ioctl命令进行数据传输(不使用read())的事件。 我知道epoll()可以用在使用read()和write()进行数据传输的文件描述符上。 但有些驱动程序使用ioctl命令进行数据传输。 我们可以在这些types的文件描述符上使用epoll()吗?

这取决于司机。 从LDD3 :

pollselect ,和epoll有本质上相同的功能[…]

支持任何这些调用都需要设备驱动程序的支持。 这种支持(所有三个呼叫) 都是通过驱动程序的poll方法提供的 。 该方法具有以下原型:

 unsigned int (*poll) (struct file *filp, poll_table *wait); 

换句话说,驱动管理的文件描述符只有在实现了内部poll功能的情况下才能用于select / epoll等。