我正在Linux上调试应用程序。它具有几个线程,这些线程会定期调用select系统调用:
strace显示:

select(0, NULL, NULL, NULL, {1, 342414})

所以nfds=0。我以为nfds是在readfdswritefdsexceptfds中加1的任何集合中出现的最高文件描述符数。它不能是标准输入(fd=0),因为这将具有nfds=1

那么在这种情况下nfds=0是什么意思?

谢谢!

最佳答案

通常select会休眠,直到超时到期或在文件描述符之一上发生事件为止。如果没有文件描述符,则超时是唯一剩余的行为。

我在本地的select(2)联机帮助页甚至包含该文本

10-06 02:07