该
select()系统调用告诉你是否有任何数据的文件描述符你感兴趣的。严格来说,它是文件描述符的读操作是否会阻止或不是一个问题读取。
如果您
read()在文件描述符(例如连接到串行端口的文件描述符)上执行,并且没有要读取的数据,则该调用将挂起,直到有一些数据要读取为止。使用的程序
select()不希望那样被阻止。
您还问:
为什么在我已经将文件描述符设置为的同时,我们必须将文件描述符增加1并传递它
select呢?
这可能是指定FD_SET的大小。的第一个参数
select()称为
nfds,POSIX说:
该
nfds参数指定要测试的描述符的范围。nfds在每个集合中应检查第一个描述符;也就是说,nfds-1应检查描述符集中从零到零的描述符。
因此,要测试文件描述符
n,in中的值
nfds必须至少为
n+1。



