我正在通过一个连续程序,我观察到他们在使用select()之前使用read().为什么这是必需的.为什么我们不能直接调用read()并检查它是否失败?另外,为什么我必须将文件描述符增加1并在我传递文件描述符集时传递它select()?
例:
r=select(fd+1, &fds, NULL, NULL, &timeout);
其中fds已经具有fd的值
我正在使用 strace 调查进程的 select 系统调用,并试图弄清楚这left意味着什么。在从 strace 日志中提取的调试行下方找到。
select(13, [6 7 8 11 12], [], NULL, {0, 10000}) = 1 (in [11], **left** {0, 9994})
Run Code Online (Sandbox Code Playgroud)
到目前为止,我在可用文档中没有找到任何内容。