当nfds为0时,"select"会做什么?

Yu *_*Hao 4 c linux

int select(int nfds, 
           fd_set *readfds, 
           fd_set *writefds, 
           fd_set *exceptfds, 
           struct timeval *timeout);
Run Code Online (Sandbox Code Playgroud)

第一个参数select,nfds被认为是最大的文件描述符加1,应至少为1
,但我已经看到了一些代码设置NFDs的是0,这是使用合法的吗?
另外,返回值select设置为EINVALwhen nfds为负数或timeout包含无效值.同样,它没有指定nfds0 时发生的情况.

Dar*_*usz 6

可以使用select作为替代sleep.我相信它是通过将所有参数specyfying为0/NULL来实现的,除了超时.请教

为什么使用select()而不是sleep()?


Jon*_*art 5

这个手册页说明了这一点

有些代码调用select(),其中所有三个集都为空,nfds为零,非NULL超时作为一种相当便携的方式以亚秒级精度进行休眠.