PR_Poll¶
检测一组套接字文件描述符何时准备好进行 I/O 操作。
语法¶
#include <prio.h>
PRInt32 PR_Poll(
  PRPollDesc *pds,
  PRIntn npds,
  PRIntervalTime timeout);
参数¶
该函数具有以下参数
返回值¶
该函数返回以下值之一
- 如果成功,则函数返回一个正数,表示 - pds中具有事件的- PRPollDesc结构的数量。
- 值 0 表示函数超时。 
- 值 -1 表示函数失败。可以通过调用 PR_GetError 获取失败的原因。 
描述¶
此函数在底层套接字对象上的一个或多个 I/O 就绪时立即返回。除非发生超时,否则会返回就绪描述符的数量,在这种情况下,会返回零。
PRPollDesc 数据结构的 in_flags 字段应设置为调用方感兴趣的 I/O 事件(可读、可写、异常或某些组合)。成功返回后,PRPollDesc 数据结构的 out_flags 字段将设置为指示相应描述符上哪种 I/O 就绪。PR_Poll 在调用期间使用 out_flags 字段作为临时变量。如果 PR_Poll 返回 0 或 -1,则 out_flags 字段不包含有意义的值,不得使用。
PRPollDesc 结构定义如下
struct PRPollDesc {
  PRFileDesc* fd;
  PRInt16 in_flags;
  PRInt16 out_flags;
};
typedef struct PRPollDesc PRPollDesc;
该结构具有以下字段
- fd
- 指向表示套接字或可轮询事件的 PRFileDesc 对象的指针。此字段可以设置为 - NULL以指示 PR_Poll 忽略此- PRFileDesc object。- 注意 - 在 Unix 上, - fd字段可以设置为指向任何 PRFileDesc 对象的指针,包括表示文件或管道的指针。跨平台应用程序应仅将- fd字段设置为指向表示套接字或可轮询事件的 PRFileDesc 对象的指针,因为在 Windows 上,- select函数只能与套接字一起使用。
- in_flags
- 以下位标志的按位 - OR- PR_POLL_READ: - fd可读。
- PR_POLL_WRITE: - fd可写。
- PR_POLL_EXCEPT: - fd存在异常情况。
 
- out_flags
- 以下位标志的按位 - OR- PR_POLL_READ 
- PR_POLL_WRITE 
- PR_POLL_EXCEPT 
- PR_POLL_ERR: - fd存在错误。
- PR_POLL_NVAL: - fd无效。
 
请注意,PR_POLL_ERR 和 PR_POLL_NVAL 标志仅在 out_flags 中使用。PR_Poll 始终会报告 PR_POLL_ERR 和 PR_POLL_NVAL 事件。