select() 函数在 C 中的行为如何

How does the select() function behave in C

我对 select 函数的工作原理感到困惑。直到现在,我认为它只是检查所有已在我们作为参数提供的 fd_set 结构中设置的套接字。但是从这里 https://pubs.opengroup.org/onlinepubs/7908799/xsh/select.html#:~:text=The%20select()%20function%20tests,descriptors%20are%20ready%20to%20read.

阅读函数

The nfds argument specifies the range of file descriptors to be tested. The select() function tests file descriptors in the range of 0 to nfds-1.

这表明所有的套接字描述符都被检查了,即使是那些不在列表中的描述符。 有人可以确认这是否有效吗?

nfds 参数作为要检查的文件描述符的上限。该函数实际上并不检查该范围内的所有文件描述符,仅检查 fd_set 参数之一中列出的文件描述符。

这个参数通常使用 FD_SETSIZE-1,其中 FD_SETSIZE 是一个定义 select 将接受的文件描述符数量限制的宏。