
以系统提供的函数select为核心实现多路转接,即高级网络IO
认识select函数1234#include <sys/select.h>int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
功能select系统调用能够同时监测多个文件描述符的状态变化,这个系统调用是阻塞式的,退出阻塞等待的条件是被监视的文件描述符中有一个或多个发生了变化。
参数解释
nfds: 文件描述符数组长度,值为最大的文件描述符值+1。因为文件描述符从0开始
readfds: 本质上是位图,表示待监视的可读文件描述符的集合,返回时标记发生变化的fd
writefds: 本质上是位图,表示待监视的可写文件描述符集合,返回时标记发生变化的fd
exset: 本质上是位图,表示待监视的异常文件描述符的集合,返回时标记发生变化的fd
timeout: 用于设置select()的等待时间
struct timeval
12345678910struc ...