我试图找出使用select()
函数和FD_ISSET
调用之间的区别。有哪些不同的场景可以证明使用其中任何一种?
答案 0 :(得分:1)
fd_set
是用于调用select
的输入的位数组。
FD_ISSET
用于检查fd_set
中是否设置了特定位。
select
用于轮询与fd_set
中设置的位对应的所有文件描述符。
典型的情况是:
创建并清除fd_set
。
设置要监视的文件描述符的位。
致电选择。
在for循环中调用FD_ISSET
。如果设置了特定位,则该文件描述符已准备好被读取(或写入或出错)。
答案 1 :(得分:0)
select
是Unix中的系统调用和应用程序编程接口,类似于操作系统,用于检查打开的输入/输出通道的文件描述符的状态。因此,select()
函数指示哪些指定的文件描述符已准备好进行读取,准备写入或具有待处理的错误条件。
FD_ISSET
返回文件描述符集中文件描述符的值。它在头文件<sys/time.h>
中声明。
原型是,
int FD_ISSET(int fd, fd_set* fdset)
如果文件描述符在fdset
指向的文件描述符集中设置,则返回非零值,否则返回0.
答案 2 :(得分:0)
select()函数指示哪些指定的文件描述符已准备好进行读取,准备写入或有错误条件未决。
FD_ISSET()测试文件描述符是否是集合的一部分;这在select()返回后很有用。