0

我试图找出使用select()函数和FD_ISSET调用之间的区别。有哪些不同的场景可以证明使用它们中的任何一个是合理的?

4

3 回答 3

1

Anfd_set是一个位数组,用作对 的调用的输入select

FD_ISSET用于检查是否在fd_set.

select用于轮询与fd_set.

一个典型的场景是:

创建并清除fd_set.

为要监视的文件描述符设置位。

呼叫选择。

调用FD_ISSETfor 循环。如果设置了特定位,则该文件描述符已准备好读取(或写入或有错误)。

于 2013-05-27T11:42:40.787 回答
0

select是类 Unix 操作系统中的系统调用和应用程序编程接口,用于检查打开的输入/输出通道的文件描述符的状态。因此,该select()函数指示指定的文件描述符中的哪些已准备好读取、准备好写入或具有未决的错误条件。

FD_ISSET返回文件描述符集中文件描述符的值。它在头文件中声明<sys/time.h>。原型是,

int FD_ISSET(int fd, fd_set* fdset)

如果文件描述符设置在 指向的文件描述符集中,则返回非零值fdset,否则返回 0。

于 2013-05-27T11:34:11.050 回答
0

select() 函数指示哪些指定的文件描述符已准备好读取、准备好写入或有错误条件未决。

FD_ISSET() 测试文件描述符是否是集合的一部分;这在 select() 返回后很有用。

于 2013-05-27T11:37:06.293 回答