05-IO多路复用
63.2 I/O多路复用
I/O 多路复用允许我们同时检查多个文件描述符,看其中任意一个是否可执行 I/O 操作。我们可以采用两个功能几乎相同的系统调用来执行 I/O 多路复用操作。第一个是select(),它首次出现在BSD系统的套接字API中。在这两个系统调用中,历史上select()的应用更广泛。另一个系统调用是poll(),它出现在System V中。select()和poll()现在都是SUSv3中规定的标准接口。
我们可以在普通文件、终端、伪终端、管道、FIFO、套接字以及一些其他类型的字符型设备上使用select()和poll()来检查文件描述符。这两个系统调用都允许进程要么一直等待文件描述符成为就绪态,要么在调用中指定一个超时时间。