如果fd的值小于0,则忽略事件,并在从poll()返回时在该条目中将revents设置为0.
和
在每个pollfd结构中,poll()清除revents成员,除了应用程序通过设置上面列出的事件之一请求报告条件之外,poll()设置相应的如果请求的条件为真,则返回位。另外,如果条件为真,poll()会在revents中设置POLLHUP,POLLERR和POLLNVAL标志,即使应用程序没有在事件中设置相应的位。
gnulib的实施始终明确要求:
for (i = 0; i < nfd; i++)
{
pfd[i].revents = (pfd[i].fd < 0
? 0
: compute_revents (pfd[i].fd, pfd[i].events,
&rfds, &wfds, &efds));
rc += pfd[i].revents != 0;
}
与某些平台的glibc
相同for (f = fds; f < &fds[nfds]; ++f)
{
f->revents = 0;
...