我试图找出使用select()
函数和FD_ISSET
调用之间的区别。有哪些不同的场景可以证明使用它们中的任何一个是合理的?
问问题
613 次
3 回答
1
Anfd_set
是一个位数组,用作对 的调用的输入select
。
FD_ISSET
用于检查是否在fd_set
.
select
用于轮询与fd_set
.
一个典型的场景是:
创建并清除fd_set
.
为要监视的文件描述符设置位。
呼叫选择。
调用FD_ISSET
for 循环。如果设置了特定位,则该文件描述符已准备好读取(或写入或有错误)。
于 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 回答